環(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)地址.