Loading

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 - 博客园

参考

Give your host access to Docker containers with macvlan

posted @ 2022-10-03 10:52  azureology  阅读(304)  评论(0编辑  收藏  举报