在vps上安装openwrt
和去年一样virmach黑五又开启了耍猴模式,今年的闪购除了几个神机其它都没有诚意,在这几个神机中有一个64m内存的小鸡,由于是kvm虚拟化,这类内存超小的机器几乎无法使用任何系统,虽然咩抢到这个机器但想起我还有virmach最早成立的时候那个128m的活动套餐,最早是openvz架构,由于openvz6不再受到支持时,virmach给转成kvm了,内存加到了384m,然而加了内存也仅是能启动一般linux而已,事实上,安装ubuntu16之后关机都成问题,然后突然想起,还有openwrt可用,于是便装了openwrt并写一下安装过程.
准备
- 一个kvm/xen/vm小鸡(像ovz/lxc这类的小鸡肯定是没救了)
- 一个发行版linux的iso/netboot/救援系统(可选,也可以在普通系统下进行,但是有一定几率造成无法启动)
- openwrt系统(直接用官方的即可)
关于救援系统,openwrt安装方法是使用dd写入硬盘,其实可以在一般系统中进行安装,只是一般系统在安装时可能会读写硬盘,从而破环安装的数据导致无法启动(已经遇到过几次了),而救援系统往往是将内存的一部分作为虚拟磁盘使用,在救援系统中,系统本身的读写不会影响真实硬盘.
安装
virmach的solusvm提供了救援模式,救援系统包含了2个纯linux内核系统和一个Roaring Lionus,于是便使用了Roaring Lionus
.
在这里不推荐使用纯内核liunx,像Roaring Lionus
这类救援系统往往基于debian封装,包含了软件包管理器,因此可以通过apt安装我们需要的工具,而纯linux内核则只能自己想办法上传自己编译或网上寻找的需要的工具,此外,如果服务商不提供这类救援系统也不要紧,可以可以挂在任意发行版的iso,发行版的iso几乎全部都带有一个救援模式的shell,可以通过它来安装,如果没有任何发行版的iso,提供netboot相关的iso的话也可以用其加载发行版的netboot程序来进入发行版的救援模式,若机器不提供任何iso,我们也可以通过gpxe/ipxe进入一个netboot程序(如:http://boot.salstar.sk/).
回到正题,我们进入Roaring Lionus
之后首先要安装wget,Roaring Lionus
是基于debian封装的,则可以使用apt update && apt install wget
安装,安装后我们先查看分区情况,通过fdisk -l
确认硬盘信息,找到vps的硬盘,通常根据vps的硬盘大小来判断,比如vps的硬盘10g,在里面看到/dev/vda1
为8g /dev/vda2
为2g之类的,则可以确定vps的硬盘是/dev/vda
,然后我们开始dd安装openwrt
机器运行以下命令安装openwrt 18.06.5 x64,其中,/dev/vda
是vps的硬盘
wget -qO- 'http://downloads.openwrt.org/releases/18.06.5/targets/x86/64/openwrt-18.06.5-x86-64-combined-ext4.img.gz'|gunzip|dd of=/dev/vda
这里使用openwrt官方的影像,当然也可以选择不同版本或第三方的影像,只要支持即可,文件分区类型的话请无论如何请使用ext4格式的影像,squashfs格式会有问题,另外也可以尝试x86的影像,这里之前在物理机和几个vps尝试x86版本都是有问题的,此外combined表示已经集成一些组件了,若要保持最小可以装rootfs的,但是rootfs似乎没有集成virtio的驱动可能会导致问题.
装好后通过救援模式启动的,在面板退出救援模式,通过iso启动的在面板取消挂载iso并重启,通过ipxe/gpxe启动的直接重启即可,重启后进入openwrt系统,这时还需要设置一下网络信息才可以使用.
在面板找到vps的network信息,solusvm在机器详情下面的network选项卡,点击ip弹出的新选项卡里有网关子网的信息,开始通过vnc配置网络接口和防火墙.
先配置接口,通过指令vim /etc/config/network
编辑接口信息,如果不出意外,eth0被设置为了lan,将config interface 'lan'
中的lan改成wan,然后将option type bridge
这行注释或删除,然后修改ip和/netmask为vps的ip和子网,然后在子网下面加一行option gateway '192.168.1.1'
,这个192.168.1.1
换成vps的网关然后保存并执行`/etc/init.d/network
restart`
然后配置防火墙,vim /etc/config/firewall
编辑防火墙信息,找到option name wan
这个zone,把这zone的input
和forward
后面的REJECT
或DROP
改成ACCEPT
,然后保存并执行/etc/init.d/firewall restart
然后就可以通过ip打开luci界面了,进去之后先改密码,改完密码之后找到network
->dhcp and dns
,在General Settings
选项卡中找到DNS forwardings
设置dns,然后切换到Resolv and Hosts Files
选项卡勾选Ignore resolve file
然后点击save & apply
即可
如果需要中文,切换到system
->software
先点击update
然后在Filter
里输入luci-i18n-base-zh-cn
然后点击find package
然后安装即可.
实在是太会玩