在Linux上,我创build了一个名为gre1 172.17.1 – > 172.17.2的GRE隧道。 Linux的IP地址是10.10.100.100,端点IP是10.10.101.101。
我试图做一个源 NAT(不是目的地NAT)来隧道的stream量从Linux的盒子去实际去隧道是目的地端口是80.我已经尝试沿着这些方面的事情没有成功:
iptables -t nat -A OUTPUT -p tcp --dport 80 -j SNAT --to 172.17.1.1 iptables -t nat -A FORWARD -p tcp --dport 80 -j SNAT --to 172.17.1.1
我发现GRE隧道的大多数例子都是针对DNAT,而不是SNAT。 任何例子,将为我的情况下工作?
如果我正确地阅读你的问题,你想要80端口的stream量下来你的隧道。 这不是用SNAT完成的,而是用策略路由。
首先我们需要build立一个新的路由表:
# echo "2 tunnel" >> /etc/iproute2/rt_tables
接下来,我们需要build立路由表,通过隧道发送所有stream量:
# ip route add default via 172.16.1.2 dev gre1 table tunnel
现在我们需要使一些stream量使用该路由表而不是默认的路由表。 这是通过标记数据包,然后添加一个规则来为那些标记的数据包使用指定的表完成的:
# iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --mark 200 # ip rule add fwmark 200 table tunnel
如果您希望将stream量转发到隧道中,请使用FORWARDreplaceOUTPUT。 这仅适用于使用OUTPUT进行本地生成的stream量。
您可以在Linux高级路由和stream量控制(LARTC)指南中find更多信息。