来源入GRE隧道

在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更多信息。