【2022.04.21】在docker中搭建openwrt軟路由系統,實現多網口以及主路由功能


【2022.04.21】在docker中搭建openwrt軟路由系統,實現多網口以及主路由功能

前言

沒搞完,不知道為啥一直重啟,下次再補上這篇博客

因為大多docker搭建軟路由時,實現的是旁路由單網口的拓撲

這次想要嘗試下多網口搭建openwrt,以便實現主路由功能

本次使用的docker鏡像:raymondwong/openwrt_r9 - Docker Image | Docker Hub

網口設置

先用ifconfig查看一下接口名稱,我這里是enp2s0與enp3s0

image-20220421114628588

那么將對應的網卡啟動混淆模式

ip link set enp3s0 promisc on
ip link set enp2s0 promisc on

后期要關閉的話,把on改成off

為了以防萬一,比如外接網卡可能在服務器重啟后失效,那么還要加入開機自啟動

nano /etc/init.d/iplinkset.sh

將上面的兩句命令,和腳本規范開頭一起復制進來

#!/bin/sh
ip link set enp3s0 promisc on
ip link set enp2s0 promisc on

ctrl+x y entel 保存退出

增加可執行權限

chmod +x /etc/init.d/iplinkset.sh

設置開機啟動

update-rc.d iplinkset.sh defaults

如果想要刪除這個啟動項

update-rc.d -f iplinkset.sh remove

虛擬網卡

  • 我們現在要基於現有的網卡創建兩個 macvlan 類型的網卡,這樣后面創建的容器才能有網卡進行掛載使用,並且使用獨立的網卡進行數據報文的通訊。macnet1 我們作為后面 openWRT容器 運行的 Wan口 使用, macnet2 則是 Lan口
  • OPENWRT 使用網絡說明
    • wan: 192.168.1.0/24
    • lan:192.168.22.0/24

macvlan模式

docker 的 macvlan 模式,這個模式通俗一點講就是在一張物理網卡上虛擬出兩個虛擬網卡,具有不同的MAC地址,可以讓宿主機和docker同時接入網絡並且使用不同的ip,此時 docker 可以直接和同一網絡下的其他設備直接通信,相當的方便,但是這種模式有一個問題,宿主機和容器是沒辦法直接進行網絡通信的,如宿主機ping容器的ip,盡管他們屬於同一網段,但是也是ping不通的,反過來也是。因為該模式在設計的時候,為了安全禁止了宿主機與容器的直接通信,不過解決的方法其實也很簡單——宿主機雖然沒辦法直接和容器內的 macvlan 接口通信,但是只要在宿主機上再建立一個 macvlan,然后修改路由,使數據經由該 macvlan 傳輸到容器內的 macvlan 即可,macvlan 之間是可以互相通信的。

創建網絡

因為我現在雙網口只接了一條,這條是入網的wan口,且在enp3s0上

image-20220421140418291

因此在shell中輸入以下命令

docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=enp3s0 macnet1

可以在可視化界面見到新建的網絡

image-20220421140632554

建立lan口的網絡,這里我還沒接上線

docker network create -d macvlan -o parent=enp2s0 macnet2

同理也是進入可視化界面驗證一下

創建容器

輸入以下命令

這句命令可以讓現在未接入的LAN口分配地址192.168.1.254

docker run --name openwrt --restart always -d --network macnet2 --privileged -v /lib/modules:/lib/modules raymondwong/openwrt_r9:autobuild-main-x86_64 /sbin/init

輸完這條命令后,可以進入192.168.1.254,默認密碼password

參考鏈接

Docker 部署多網口 openWrt 軟路由 - 「Yang'zun」PlayGround (treesir.pub)

Docker 部署的 openWrt 軟路由, 並解決無法與宿主機通信問題 - 「Yang'zun」PlayGround (treesir.pub)

Docker跨主機通信之macvlan · Docker實戰 (baoshu.red)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM