openwrt是一个功能强大的软路由系统,很多人用它来做旁路由,即做一些流量处理的事情,接下来我们开始安装在Docker中安装OpenWrt吧。
1 Docker镜像选择
无论是在ubuntu、centos还是群晖中安装,都需要先选择一个合适的镜像。目前发现了一个功能完整的Docker镜像,建议使用这个镜像:sulinggg/openwrt。
docker pull sulinggg/openwrt:x86_64
2 macvlan配置
需要给OpenWrt分配IP地址,因此需要配置虚拟网卡,在Docker中采用的是macvlan。
需要注意,群晖需要开启openSwitch,这样以后新增虚拟机就不会冲突了,开启openSwitch后,可以看到群晖新建了一个ovs_eth0虚拟网卡,我们在创建macvlan时,对应的实际接口应该是ovs_eth0。
# 开启混杂模式
ip link set ovs_eth0 promisc on
# 创建一个子网为192.168.10.1/24的虚拟网络,网关是192.168.10.1,名为ovs_lan
docker network create -d macvlan --subnet=192.168.10.1/24 --gateway=192.168.10.1 -o parent=ovs_eth0 ovs_lan
3 Docker实例创建
# 创建名为openwrt1的容器,网络选择ovs_lan,ip指定为192.168.10.2
docker run -d --name openwrt1 --net ovs_lan --privileged --ip 192.168.10.2 sulinggg/openwrt:x86_64 /sbin/init
创建完容器后,需要登录到容器中,修改网络配置
# 登录openwrt1
docker exec -it openwrt1 bash
# 编辑网络
vim /etc/config/network
替换lan
网络配置如下:
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.10.2'
option netmask '255.255.255.0'
option gateway '192.168.10.1'
option broadcast '192.168.10.255'
option dns '119.29.29.29'
然后重启
/etc/init.d/network restart
4 OpenWrt配置
接下来需要登录指定的IP:192.168.10.2,默认密码是password。下面的两项调整,调整完后记得保存并应用
。
LAN接口调整
在openwrt的网络配置中,点击接口选项,修改名为LAN的接口。
在物理配置
中,取消勾选桥接接口
;在最下方的基本配置
中,关闭DHCP;最下方的IPV6设置
中,路由通告服务
、DHCPv6 服务
和NDP 代理
全部选择已禁用
。
防火墙调整
在openwrt的网络配置中,点击防火墙选项。取消勾选启用 SYN-flood 防御
;入站数据
、出站数据
和转发
全部选择接受;
5 客户端配置
在完成上述配置后,就可以将你的客户端网关指向新搭建的openwrt了。此时,应该可以正常访问外部网站,也能访问内网任意地址。