在 Linux 机器上,我创建了一个名为 gre1 172.17.1 -> 172.17.2 的 GRE 隧道。Linux盒子IP是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。有什么适合我的例子吗?
如果我正确阅读了您的问题,您希望端口 80 流量通过您的隧道。这不是通过 SNAT 完成的,而是通过策略路由完成的。
首先我们需要建立一个新的路由表:
接下来我们需要设置路由表以通过隧道发送所有流量:
现在我们需要让一些流量使用该路由表而不是默认路由表。这是通过标记数据包然后添加规则以对这些标记的数据包使用指定的表来完成的:
如果您希望转发的流量沿隧道发送,请将 OUTPUT 替换为 FORWARD。这仅适用于带有 OUTPUT 的本地生成的流量。
您可以在Linux 高级路由和流量控制 (LARTC)指南中找到更多信息。