防止逃逸以悄悄转发传入的数据包

防止逃逸以悄悄转发传入的数据包

我正在 Ubuntu 14.04 上编写 NAT,为了测试它是否按预期工作,我手动将默认网关更改为属于同一网络的其他一些主机的 NAT 运行的 IP 地址。

尽管我使用原始套接字监听 IP 0.0.0.0,并强制我的 NAT 仅接受通过 IPv4 的 UDP 数据包,但从我编写的程序中,我无法拦截来自任何其他主机的传出数据包,但可以拦截发送到广播地址的数据包。

尝试从其中一个主机开始与 netcat 进行通信,并使用 wireshark 监控发生的情况,我能够看到这些数据包。

我希望将这些数据包接收到我的程序中,并避免系统将它们转发到我的控制之外。我的假设是我在逃逸时遗漏了某些东西,这可能只是配置问题,应该与我的程序无关。我该如何克服这个问题?

答案1

我无法拦截来自任何其他主机的传出数据包

这就是交换网络的工作方式。没有一个 NIC 能够看到其他 NIC(包括网关)的(非广播)流量。

我认为自己在度假期间错过了什么

你错过了想要閣門。

相关内容