您好,登錄后才能下訂單哦!
如何進行macvlan 網絡隔離和連通,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
驗證 macvlan 之間的連通性
bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4。即:同一 macvlan 網絡能通信。
bbox1 無法 ping 通 bbox2 和 bbox4。即:不同 macvlan 網絡之間不能通信。但更準確的說法應該是:不同 macvlan 網絡不能 在二層上 通信。在三層上可以通過網關將 macvlan 連通,下面我們就啟用網關。
我們會將 Host 192.168.56.101 配置成一個虛擬路由器,設置網關并轉發 VLAN10 和 VLAN20 的流量。當然也可以使用物理路由器達到同樣的效果。首先確保操作系統 IP Forwarding 已經啟用。
輸出為 1 則表示啟用,如果為 0 可通過如下命令啟用:
sysctl -w net.ipv4.ip_forward=1
在 /etc/network/interfaces 中配置 vlan sub-interface:
auto eth3
iface eth3 inet manual
auto eth3.10
iface eth3.10 inet manual
vlan-raw-device eth3
auto eth3.20
iface eth3.20 inet manual
vlan-raw-device eth3
啟用 sub-interface:
ifup eth3.10
ifup eth3.20
將網關 IP 配置到 sub-interface:
ifconfig eth3.10 172.16.10.1 netmask 255.255.255.0 up
ifconfig eth3.20 172.16.20.1 netmask 255.255.255.0 up
添加 iptables 規則,轉發不同 VLAN 的數據包。
iptables -t nat -A POSTROUTING -o eth3.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3.20 -j MASQUERADE
iptables -A FORWARD -i eth3.10 -o eth3.20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth3.20 -o eth3.10 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth3.10 -o eth3.20 -j ACCEPT
iptables -A FORWARD -i eth3.20 -o eth3.10 -j ACCEPT
現在 host1 上位于 mac_net10 的 bbox1 已經可以與 host2 上位于 mac_net20 的 bbox4 通信了。
下面我們分析數據包是如何從 bbox1(172.16.10.10)到達 bbox4(172.16.20.11)的。
① 因為 bbox1 與 bbox4 在不同的 IP 網段,跟據 bbox1 的路由表:
數據包將發送到網關 172.16.10.1。
② 路由器從 eth3.10 收到數據包,發現目的地址是 172.16.20.11,查看自己的路由表。
于是將數據包從 eth3.20 轉發出去。
③ 通過 ARP 記錄的信息,路由器能夠得知 172.16.20.11 在 host2 上,于是將數據包發送給 host2。
④ host2 根據目的地址和 VLAN 信息將數據包發送給 bbox4。
macvlan 網絡的連通和隔離完全依賴 VLAN、IP subnet 和路由,docker 本身不做任何限制,用戶可以像管理傳統 VLAN 網絡那樣管理 macvlan。
關于如何進行macvlan 網絡隔離和連通問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。