在Linux上,我创建了一个名为gre1 172.17.1 -> 172.17.2的GRE隧道。Linux为10.10.100.100,端点IP为10.10.101.101。
我正在尝试做一个源NAT (而不是目的NAT)隧道,从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。有对我的案子有用的例子吗?
发布于 2009-08-12 05:01:04
如果我没看错你的问题,你希望80号港的交通通过你的隧道。这不是用SNAT完成的,而是通过策略路由完成的。
首先,我们需要设置一个新的路由表:
# echo "2 tunnel" >> /etc/iproute2/rt_tables接下来,我们需要设置路由表,以便通过隧道发送所有流量:
# ip route add default via 172.16.1.2 dev gre1 table tunnel现在我们需要让一些流量使用那个路由表,而不是默认的路由表。这是通过标记数据包,然后添加一个规则来为那些标记的数据包使用指定的表来完成的:
# iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --mark 200
# ip rule add fwmark 200 table tunnel如果希望将流量转发到隧道中,请将输出替换为正向输出。这只适用于本地生成的具有输出的通信量。
您可以在Linux高级路由和流量控制(LARTC)指南中找到更多信息。
https://serverfault.com/questions/53027
复制相似问题