不需要的 ICMP 目标无法到达消息

不需要的 ICMP 目标无法到达消息

我正在运行带有 2.6.38 内核的 CentOS。 Linux 机器的 IP 为 10.0.0.10 分配给 eth0,这是机器上唯一的网络适配器。我创建了一个程序,为这个盒子伪造一个额外的 IP 10.0.0.20。我的程序会使用 eth0 的 MAC 响应 10.0.0.20 的 ARP 请求,因此对于 LAN 中的其他主机来说,10.0.0.20 与 10.0.0.10 具有相同的 MAC,所有发往 10.0.0.20 的流量都会路由到我的程序。 Linux 盒子并交付给我的程序。我的程序将处理这些 IP 数据包并在需要时进行回复。

到目前为止,我的程序运行良好:它可以接收目标地址为 10.0.0.20 的 IP 数据包,其他主机可以从我的 Linux 机器接收源地址为 10.0.0.20 的 IP 数据包。

但是,我注意到有时我的 Linux 操作系统会向其他主机发送一些 ICMP 目标不可达(主机不可达)消息。这些 ICMP 目标不可达消息的源地址为 10.0.0.10,这是我的 Linux 机器的真实 IP。我检查了 ICMP 消息,看来我的 Linux 操作系统试图通知其他主机 10.0.0.20 无法访问。我认为这是有道理的,因为我的程序在用户空间伪造 10.0.0.20,而操作系统不知道 10.0.0.20 在哪里。

有人可以建议如何消除这些目的地无法到达的消息吗?它们在我的应用程序中是不受欢迎的。

相关内容