如何路由数据包以使用本地主机作为网关?

我试图testing我写的网关(请参阅testing网关的最简单方法是什么? )。 由于我不想进入的问题,网关和“发件人”必须在同一台机器上。 我有一个接收器(比方说9.9.9.9),网关能够到达。

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

问题是:如何获取发往9.9.9.9的数据包到本地主机上的网关? 我试过了:

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

但都不通过网关传递数据包。 我已经validation了sudo route中存在正确的IP地址。 我能做什么?


每个请求,这里是路由表,运行第二个命令后(IP地址更改为匹配问题。xyzt是我正在运行此计算机的IP):

 Destination Gateway Genmask Flags Metric Ref Use Iface 9.9.9.9 xyzt 255.255.255.255 UGH 0 0 0 eth0 xyz0 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 

如果启用了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而不是本地主机。