使用ubuntu+docker+openwrt搭建旁路由

环境准备

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和网关地址.

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
松果儿的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容