(十)macvlan 網路隔離和連通
上一節我們創建了兩個 macvlan 并部署了容器,網路結構如下:

本節驗證 macvlan 之間的連通性,
root@host1:~# docker exec bbox01 ping -c 2 172.16.10.11
root@host1:~# docker exec bbox02 ping -c 2 172.16.20.11
不通
bbox1 能 ping 通 bbox3,bbox2 能 ping 通 bbox4,即:同一 macvlan 網路能通信,
root@host1:~# docker exec bbox01 ping -c 2 172.16.10.10
PING 172.16.10.10 (172.16.10.10): 56 data bytes
64 bytes from 172.16.10.10: seq=0 ttl=64 time=0.059 ms
64 bytes from 172.16.10.10: seq=1 ttl=64 time=0.042 ms
root@host1:~# docker exec bbox02 ping -c 2 172.16.20.10
PING 172.16.20.10 (172.16.20.10): 56 data bytes
64 bytes from 172.16.20.10: seq=0 ttl=64 time=0.084 ms
64 bytes from 172.16.20.10: seq=1 ttl=64 time=0.061 ms
bbox1 無法 ping 通 bbox2 和 bbox4,即:不同 macvlan 網路之間不能通信,但更準確的說法應該是:不同 macvlan 網路不能 在二層上 通信,在三層上可以通過網關將 macvlan 連通,下面我們就啟用網關,
我們會將 Host 10.0.0.20 配置成一個虛擬路由器,設定網關并轉發 VLAN10 和 VLAN20 的流量,當然也可以使用物理路由器達到同樣的效果,首先確保作業系統 IP Forwarding 已經啟用,
cuiyongchao@cuiyongchao:~$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
cuiyongchao@cuiyongchao:~$
輸出為 1 則表示啟用,如果為 0 可通過如下命令啟用:
sysctl -w net.ipv4.ip_forward=1
在 /etc/network/interfaces 中配置 vlan sub-interface:
auto eth38
iface eth38 inet manual
auto eth38.10
iface eth38.10 inet manual
vlan-raw-device eth38
auto eth38.20
iface eth38.20 inet manual
vlan-raw-device eth38
啟用 sub-interface:
ifconfig eth38.10
ifconfig eth38.20
將網關 IP 配置到 sub-interface:
ifconfig eth38.10 172.16.10.1 netmask 255.255.255.0 up
ifconfig eth38.20 172.16.20.1 netmask 255.255.255.0 up
添加 iptables 規則,轉發不同 VLAN 的資料包,
iptables -t nat -A POSTROUTING -o eth38.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth38.20 -j MASQUERADE
iptables -A FORWARD -i eth38.10 -o eth38.20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth38.20 -o eth38.10 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth38.10 -o eth38.20 -j ACCEPT
iptables -A FORWARD -i eth38.20 -o eth38.10 -j ACCEPT
現在 host1 上位于 mac_net10 的 bbox1 已經可以與 host2 上位于 mac_net20 的 bbox4 通信了,
下面我們分析資料包是如何從 bbox1(172.16.10.10)到達 bbox4(172.16.20.11)的,整個程序如下圖所示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232370.html
標籤:其他
