Docker macvlan网络模式下容器与宿主机互通
0x00
一般在macvlan模式下同网段的其他机器可以和容器互通,但宿主不能和容器互通,这是在macvlan模式设计的时候为了安全而禁止了宿主机和容器直接通信。
如果想要实现互通,有个曲线救国的方法,就是macvlan与macvlan之间可以互通,只需要在宿主机再创建一个macvlan网络,然后修改路由,让数据经过这个macvlan达到互通的目的。
0x01
假设现有网段为192.168.1.0/24
的网络:
名字 | ip | 接口 |
---|---|---|
宿主机 | 192.168.1.10 | eth0 |
容器 | 192.168.1.20 | macvlan |
建立一个名为macvlan2
的macvlan
接口,并分配一个ip:
名字 | ip | 接口 |
---|---|---|
macvlan2 | 192.168.1.15 | macvlan |
命令:
ip link add macvlan2 link eth0 type macvlan mode bridge
ip addr add 192.168.1.15 dev macvlan2
ip link set macvlan2 up
修改路由,让宿主机到容器(192.168.1.20)
的数据经过macvlan2
:
ip route add 192.168.1.20 dev macvlan2
0x02
宿主机 访问 容器的ip:192.168.1.20
容器 访问 宿主机ip:192.168.1.15
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!