环境准备
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和网关地址.
暂无评论内容