Docker macvlan host to container 互通 解決方案 使用NetworkManager設置

使用通常的方式創建macvlan,容器關聯macvlan網絡,網內其他主機都可以互通訪問,但唯獨host和container是無法互通的,這是並不是一個錯誤,而是macvlan特性決定的,網上能搜到解決方法,在這裏記錄備忘。

解決方案

由於流量無法回傳而導致無法互通,所以解決方案就是在host再創建一個macvlan網絡,使用這個接口當作一個路由,這樣就可以實現網絡互通了。

ip link add macvlan-router link eth0 type macvlan mode bridge
ip addr add 192.168.10.33/32 dev macvlan-router
ip link set macvlan-router up
ip route add 192.168.10.32/28 dev macvlan-router

靜態地址設置爲前一篇文章--aux-address設置的ip。
經過上面設置host和container就可以互通了,但是主機重啓後設置會丟失,看網上有說可以寫到/etc/network/interfaces裏面,但是我用的arch,並沒有這個文件,使用下面的方式也是可以的。

使用NetworkManager設置

nmcli con add con-name macvlan-router type macvlan ifname macvlan-router ip4 192.168.10.33/32 dev eth0 mode bridge
nmcli con mod macvlan-router +ipv4.routes "192.168.10.32/28"

以上命令中的網絡接口、ip請根據實際情況進行調整

https://kcore.org/2020/08/18/macvlan-host-access/
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/virtualization_host_configuration_and_guest_installation_guide/app_macvtap

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章