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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容