本帖最后由 hujinshengys 于 2025-1-10 11:11 編輯
在docker中運(yùn)行openwrt作主路由(pppoe撥號(hào))
查看網(wǎng)口情況:
輸出以下內(nèi)容:
- enp2s0: flags=4419<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
- ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
- RX packets 835394 bytes 1122074499 (1.0 GiB)
- RX errors 0 dropped 4720 overruns 0 frame 0
- TX packets 289472 bytes 85663961 (81.6 MiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- device memory 0x80800000-808fffff
- enp3s0: flags=4419<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.6.111 netmask 255.255.255.0 broadcast 192.168.6.255
- inet6 fe80::xxxx:xxxx:xxxx:xxxx prefixlen 64 scopeid 0x20<link>
- ether xx:xx:xx:xx:xx:xx txqueuelen 1000 (Ethernet)
- RX packets 216925 bytes 79441155 (75.7 MiB)
- RX errors 0 dropped 1754 overruns 0 frame 0
- TX packets 44369 bytes 6535667 (6.2 MiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- device memory 0x80500000-805fffff
復(fù)制代碼確定enp2s0為wan,enp3s0為lan 開始設(shè)置飛牛中的網(wǎng)絡(luò)環(huán)境,將相關(guān)命令通過(guò)服務(wù)的方式加入開機(jī)啟動(dòng) 本帖隱藏的內(nèi)容
- sudo nano /etc/systemd/system/me_to_op.service
復(fù)制代碼- [Unit]
- Description=MACVLAN Configuration for me_to_op
- After=network-online.target
- Wants=network-online.target
- [Service]
- Type=oneshot
- ExecStart=/bin/sh -c "ip link set enp2s0 promisc on; ip link set enp3s0 promisc on; ip link del me_to_op || true; ip link add me_to_op link enp3s0 type macvlan mode bridge; ip addr add 192.168.6.6 dev me_to_op; ip link set me_to_op up; ip route add 192.168.6.1 dev me_to_op; route add default gw 192.168.6.1 me_to_op; echo 'nameserver 192.168.6.1' > /etc/resolv.conf"
- RemainAfterExit=yes
- [Install]
- WantedBy=multi-user.target
復(fù)制代碼- #上述服務(wù)中的命令解釋(不需要輸入以下命令)
- sudo ip link set enp2s0 promisc on #設(shè)置網(wǎng)口混雜
- sudo ip link set enp3s0 promisc on #設(shè)置網(wǎng)口混雜
- #因?yàn)?macvlan 的安全機(jī)制,宿主機(jī)與容器內(nèi)不能通過(guò) macvlan 數(shù)據(jù)互通,但是 macvlan 之間可以互通,增加macvlan接口
- sudo ip link del me_to_op #刪除之前殘留設(shè)置
- sudo ip link add me_to_op link enp3s0 type macvlan mode bridge #新建me_to_op接口(類型macvlan)
- sudo ip addr add 192.168.6.6 dev me_to_op #設(shè)置本機(jī)在me_to_op接口的ip地址
- sudo ip link set me_to_op up #啟動(dòng)me_to_op接口
- sudo ip route add 192.168.6.1 dev me_to_op #修改路由,通過(guò)me_to_op接口訪問(wèn)openwrt,避免宿主機(jī)與容器之間無(wú)法訪問(wèn)的問(wèn)題
- sudo route add default gw 192.168.6.1 me_to_op #修改默認(rèn)路由
- sudo sh -c 'echo "nameserver 192.168.6.1" > /etc/resolv.conf' #修改dns服務(wù)器地址
復(fù)制代碼- #重新加載 Systemd 以使更改生效
- sudo systemctl daemon-reload
- #啟用服務(wù)
- sudo systemctl enable me_to_op.service
- #啟動(dòng)服務(wù)
- sudo systemctl start me_to_op.service
- #檢查服務(wù)狀態(tài)
- sudo systemctl status me_to_op.service
復(fù)制代碼
創(chuàng)建docker網(wǎng)絡(luò) - docker network create -d macvlan --subnet=192.168.6.0/24 --gateway=192.168.6.1 -o parent=enp3s0 op_lan
復(fù)制代碼- docker network create -d macvlan -o parent=enp2s0 op_wan
復(fù)制代碼
導(dǎo)入docker鏡像
- wget https://dl./releases/24.10/targets/x86/64/kwrt-11.25.2024-x86-64-generic-rootfs.tar.gz
復(fù)制代碼- docker import kwrt-11.25.2024-x86-64-generic-rootfs openwrt
復(fù)制代碼- rm kwrt-11.25.2024-x86-64-generic-rootfs.tar.gz
復(fù)制代碼 創(chuàng)建并啟動(dòng)容器 - docker run --restart always --name openwrt -d --network op_lan --privileged openwrt:latest /sbin/init
復(fù)制代碼- docker network connect op_wan openwrt
復(fù)制代碼 進(jìn)入openwrt內(nèi)部修改網(wǎng)口設(shè)置
- # 進(jìn)入openwrt鏡像內(nèi)部
- docker exec -it openwrt bash
- vim /etc/config/network
復(fù)制代碼 修改 lan 口ip地址(option ipaddr)
- 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.6.1'
復(fù)制代碼- #重啟openwrt網(wǎng)絡(luò)
- /etc/init.d/network restart
復(fù)制代碼 然后瀏覽器輸入192.168.6.1即可進(jìn)入 openwrt 的后臺(tái)管理頁(yè)面(用戶名root,密碼root,不同openwrt不同,根據(jù)自己選擇的openwrt進(jìn)行輸入,一般來(lái)說(shuō)密碼為password或root)
參考
|