如何路由数据包以使用 localhost 作为网关?

发布于 2024-10-17 02:26:22 字数 952 浏览 4 评论 0原文

我正在尝试测试我编写的网关(请参阅什么是最简单的方法测试网关?了解上下文)。由于我不想讨论的问题,网关和“发送者”必须位于同一台计算机上。我有一个网关能够到达的接收器(假设是 9.9.9.9)。

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

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

sudo route add -host 9.9.9.9 gw 1​​27.0.0.1 lo

sudo route add -host 9.9.9.9 gw <机器的外部IP地址> eth0

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


根据请求,运行第二个命令后,这是路由表(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

I'm trying to test a gateway I wrote(see What's the easiest way to test a gateway? for context). Due to an issue I'd rather not get into, the gateway and "sender" have to be on the same machine. I have a receiver(let's say 9.9.9.9) which the gateway is able to reach.

So I'll run an application ./sendStuff 9.9.9.9 which will send some packets to that IP address.

The problem is: how do I get the packets destined for 9.9.9.9 to go to the gateway on localhost? I've tried:

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

but neither of those pass packets through the gateway. I've verified that the correct IPs are present in sudo route. What can I do?


Per request, here is the route table, after running the second command(IP addresses changed to match the question. x.y.z.t is the IP of the machine I'm running this on):

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧街凉风 2024-10-24 02:26:22

如果启用了 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。

127.0.0.1 is probably picking up the packets, then forwarding them on their merry way if ipv4 packet forwarding is enabled. If it's not enabled, it will drop them.

If you are trying to forward packets destined to 9.9.9.9 to 127.0.0.1, look into iptables.

Edit: try this:

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

That should redirect all traffic to 9.9.9.9 to localhost instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文