3

我正在尝试测试我编写的网关(有关上下文,请参阅测试网关的最简单方法是什么?)。由于一个我不想进入的问题,网关和“发件人”必须在同一台机器上。我有一个网关可以访问的接收器(比如说 9.9.9.9)。

所以我将运行一个应用程序./sendStuff 9.9.9.9,它将一些数据包发送到该 IP 地址。

问题是:如何让发往 9.9.9.9 的数据包到达 localhost 上的网关?我试过了:

sudo route add -host 9.9.9.9 gw 127.0.0.1 lo

sudo route add -host 9.9.9.9 gw <machine's external IP address> eth0

但这些都没有通过网关传递数据包。我已经验证了正确的 IP 存在于sudo route. 我能做些什么?


根据请求,这是路由表,在运行第二个命令后(IP 地址已更改以匹配问题。xyzt 是我正在运行它的机器的 IP):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
9.9.9.9         x.y.z.t         255.255.255.255 UGH   0      0        0 eth0
x.y.z.0         0.0.0.0         255.255.254.0   U     0      0        0 eth0
0.0.0.0         <gateway addr>  0.0.0.0         UG    100    0        0 eth0
4

1 回答 1

6

如果启用了 ipv4 数据包转发,127.0.0.1 可能正在拾取数据包,然后以愉快的方式转发它们。如果未启用,它将删除它们。

如果您尝试将发往 9.9.9.9 的数据包转发到 127.0.0.1,请查看 iptables。

编辑:试试这个:

iptables -t nat -A OUTPUT -d 9.9.9.9 -j DNAT --to-destination 127.0.0.1

那应该将所有流量重定向到 9.9.9.9 到 localhost。

于 2011-02-09T04:10:50.560 回答