Docker中实现macvlan的穿透访问
需求
因为性能等原因,我们需要用macvlan方式部署container
而kernel中有关macvlan的安全策略会完全过滤来自host访问
host想要访问container服务端口很不方便。
破解
实现host对macvlan的访问需要用到一些trick
主体思想是将host流量通过其他网卡warp一下绕过kernel中的访问限制
实现
注意:临时策略重启失效,可考虑自启动脚本实现固化。
ip link add mynet-interface link eth0 type macvlan mode bridge
ip addr add 10.0.1.254/32 dev mynet-interface
ip link set mynet-interface up
ip route add 10.0.1.100/32 dev mynet-interface
mynet-interface
为虚拟网卡名称支持自定义
10.0.1.254
需要指定一个macvlan同网段不冲突的ip
10.0.1.100
为macvlan容器分配到的ip用于添加路由规则,多个容器可降低子网掩码
/32
表示子网掩码范围为1参考IP-CIDR对应子网地址范围查询 - azureology - 博客园