在NAS中安装OPENWRT作为旁路由进行科学上网等,是比较常见的情况。通常我们是在VMM中通过虚拟机运行OPENWRT,但是这种方式对小内存的NAS非常不友好(无论OPENWRT实际使用了多少内存,虚拟机分配的内存都会被一直占用),比如虚拟机中分配了1G内存给软路由,那么系统永远会把这部分内存保留给虚拟机,而使用Docker安装的旁路由就不会有这种情况,CPU和内存资源是动态占用的,从下图可以看出,实际占用的内存很小,对小内存NAS很友好。
准备阶段
1、确定NAS的架构(比如我的是X86架构),也可以用uname -a命令来确定。
2、NAS打开SSH,以及对应的操作软件(比如putty,或者套件中心安装TTYDD-WEB)
3、下载OPENWRT的Docker镜像,此类镜像有很多,这里我推荐使用SuLingGG/Openwrt。
在Docker注册表中搜索“openwrt”,下载我们需要打的对应CPU架构的映像。
设置网络
通常来说,Docker运行的程序使用的是NAS本身的IP,这对于软路由来说是不行的,所以需要执行以下操作。
1、在SSH界面,输入命令 ip addr 查看当前NAS使用的网卡的混杂模式是否已经打开(当前网卡是否显示promisc)
##以下是我的网卡名称,每台设备可能不一样,要注意!!!!
sudo ip link set ovs_eth0 promisc on
这里要注意,每台设备的网卡都可能不同,通常来说是eth0,对于有使用VMM并开启Open vSwitch的,会显示ovs_eth0(这是个坑,很多Docker运行程序出问题都是在这里,比如甜糖心愿)
2、创建 docker 网卡,macvlan 模式会为每个容器创建一个独立的 ip 每个容器可以通过独立的 ip 进行访问
docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=ovs_eth0 macnet
这里需要将网段、网关和网卡改成你自己NAS的,输入docker network list命令就可以看到有哪些docker网卡了
启动docker 镜像
在SSH命令中输入以下代码启动openwrt镜像,其中x86_64是我的架构,请根据自己打的情况修改,至于有哪些架构可以看文章前部GitHub链接中的介绍。
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:x86_64 /sbin/init
设置OPENWRT
这个镜像是专为旁路由打包的,启动后一般会自动获取LAN IP为当前网段,在主路由器中查看IP并登陆,初始密码为password。
如果未获得正确的IP,需要启动一会后,在docker页面点击“详情”-“终端机”-“新增”,进入这个容器的Bash命令控制台,用“vim /etc/config/network”命令修改OPENWRT的LAN地址并重启,这里就不详细说了,网上都有教程
由于镜像默认已按照旁路由进行设置,所以基本不需要额外的操作,只需要在防火墙自定义规则中添加这条规则即可(如果无法上网,尝试将防火墙常规设置中转发改成允许)。
iptables -t nat -I POSTROUTING -j MASQUERADE
其他的设置按自己需求配置即可,这个OPENWRT固件基本该有的也都有,满足常见的需求,以上基本就完成Docker软路由的安装了。
本文地址: 群晖:Docker中安装旁路由OPENWRT