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

環(huán)境準(zhǔn)備

ubuntu 24.04
docker

第一步,在宿主主機上查看IP

執(zhí)行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
...

可以看到內(nèi)網(wǎng)的網(wǎng)卡為enp5s0,IP是192.168.110.141,掩碼為255.255.254.0,則網(wǎng)段為192.168.110.0/24,我們可以給旁路由分配一個192.168.110.200的網(wǎng)段.

開啟網(wǎng)卡混雜模式

ip link set enp5s0 promisc on

查看網(wǎng)關(guān)

ip route show default
輸出形如
default via 192.168.110.254 dev enp5s0 proto dhcp src 192.168.110.141 metric 100
則網(wǎng)關(guān)為192.168.110.254

第二步,拉取docker鏡像

  • 如果無法拉取,需要去找找docker鏡像源下載
    docker pull nonnichen/nonniwrt

第三步,創(chuàng)建docker網(wǎng)絡(luò)

  • 根據(jù)實際需求修改下面的兩個網(wǎng)絡(luò)地址
    docker network create -d macvlan --subnet=192.168.110.0/24 --gateway=192.168.110.200 -o parent=enp5s0 macnet

第四部,創(chuàng)建容器

先創(chuàng)建配置文件,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' # 修改為第一步查看到的網(wǎng)關(guān)地址
        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根據(jù)提示輸入兩邊密碼

打開web ui

http://192.168.110.200,密碼就是上面設(shè)置的密碼了

配置旁路由

配置宿主主機

在宿主主機上添加轉(zhuǎn)發(fā),即修改vim /etc/sysctl.conf,在末尾添加net.ipv4.ip_forward=1,保存后執(zhí)行sudo sysctl -p使配置生效
再執(zhí)行
sudo iptables -t nat -A POSTROUTING -o enp5s0 -j MASQUERADE

配置openwrt

在webui的網(wǎng)絡(luò)->防火墻->自定義規(guī)則中添加iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

配置需要上完的設(shè)備

如果你是想要讓路由器下所有的設(shè)備都生效,則需要修改路由其DHCP分配的網(wǎng)關(guān)地址和DNS地址為192.168.110.200,如果你只想讓特定設(shè)備生效,只需修改特定設(shè)備的DNS和網(wǎng)關(guān)地址.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容