多网卡模式下Golang应用的流量从指定网卡流入流出方案( 二 )

注意:网桥的流量流出也是通过iptables的snat进行实现的 。 针对特定容器的iptables规则一定要在该网桥的规则前面 。
方案三 DNAT/SNAT技术实现方案思路是创建两个虚拟网卡或网桥br-eip1(172.19.0.100)和br-eip2(172.19.0.101) 。 go应用分别监听网卡br-eip1和网卡br-eip2 。 通过DNAT技术将来eth0的流量导向br-eip1 , 将来自eth1的流程导向br-eip2 。 通过SNAT技术将从br-eip1流出的外部流量导向eth0 , br-eip2流出的流量导向eth1
创建虚拟网卡apt-get install bridge-utils // 安装brctlsudo brctl addbr br-eip1 // 添加网桥sudo ip link set br-eip1 up // 激活网桥sudo ifconfigbr-eip1 172.19.0.100 // 指定br-eip1网桥的ipsudo brctl addbr br-eip2 // 添加网桥sudo ip link set br-eip2 up // 激活网桥sudo ifconfigbr-eip2 172.19.0.101 // 指定br-eip2网桥的ip复制代码DNAT配置流量流入sudo iptables -t nat -I PREROUTING -d 172.31.0.8/32 ! -i br-eip1 -p tcp -m tcp --dport 8090 -j DNAT --to-destination 172.19.0.100:8090sudo iptables -t nat -I PREROUTING -d 172.31.0.14/32 ! -i br-eip2 -p tcp -m tcp --dport 8090 -j DNAT --to-destination 172.19.0.101:8090复制代码SNAT配置流量流出sudo iptables -t nat -I POSTROUTING -p all -s 172.19.0.100 -j SNAT --to-source 172.31.0.8sudo iptables -t nat -I POSTROUTING -p all -s 172.19.0.101 -j SNAT --to-source 172.31.0.14复制代码作者:tink链接:来源:掘金著作权归作者所有 。 商业转载请联系作者获得授权 , 非商业转载请注明出处 。