环境准备
ubuntu 24.04
docker
第一步,在宿主主机上查看IP
执行ifconfig,输出
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:aeff:fedf:749 prefixlen 64 scopeid 0x20<link>
...
enp5s0: flags=4419<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.110.141 netmask 255.255.254.0 broadcast 192.168.111.255
...
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
...
可以看到内网的网卡为enp5s0,IP是192.168.110.141,掩码为255.255.254.0,则网段为192.168.110.0/24,我们可以给旁路由分配一个192.168.110.200的网段.
开启网卡混杂模式
ip link set enp5s0 promisc on
查看网关
ip route show default
输出形如
default via 192.168.110.254 dev enp5s0 proto dhcp src 192.168.110.141 metric 100
则网关为192.168.110.254
第二步,拉取docker镜像
- 如果无法拉取,需要去找找docker镜像源下载
docker pull nonnichen/nonniwrt
第三步,创建docker网络
- 根据实际需求修改下面的两个网络地址
docker network create -d macvlan --subnet=192.168.110.0/24 --gateway=192.168.110.200 -o parent=enp5s0 macnet
第四部,创建容器
先创建配置文件,vim ~/openwrt/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option packet_steering '1'
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.110.200' # 此处需要修改为实际需要指定的地址
option gateway '192.168.110.254' # 修改为第一步查看到的网关地址
option dns '223.5.5.5'
config interface 'vpn0'
option ifname 'tun0'
option proto 'none'
运行容器
docker run --restart always --name openwrt -d --network macnet --privileged --ip 192.168.110.200 -v ~/openwrt/network:/etc/config/network nonnichen/nonniwrt /sbin/init
配置openwrt web ui的密码
进入容器
docker exec -it openwrt bash
修改密码
passwd root根据提示输入两边密码
打开web ui
http://192.168.110.200,密码就是上面设置的密码了
配置旁路由
配置宿主主机
在宿主主机上添加转发,即修改vim /etc/sysctl.conf,在末尾添加net.ipv4.ip_forward=1,保存后执行sudo sysctl -p使配置生效
再执行
sudo iptables -t nat -A POSTROUTING -o enp5s0 -j MASQUERADE
配置openwrt
在webui的网络->防火墙->自定义规则中添加iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
配置需要上完的设备
如果你是想要让路由器下所有的设备都生效,则需要修改路由其DHCP分配的网关地址和DNS地址为192.168.110.200,如果你只想让特定设备生效,只需修改特定设备的DNS和网关地址.