是否可以使用 Xinetd(或任何其他解决方案)来监听未分配给接口的 IP 地址的传入数据包,并启动守护进程(如 Xinetd)?
因此,我的 Linux 机器是默认网关,所有数据包都发送给它。我想识别目标 IP 未绑定到接口的特定数据包并对其做出反应(启动守护进程)
谢谢!
答案1
是的,启用net.ipv4.ip_nonlocal_bind
设置:
echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/enable-nolocal-bind.conf"
sysctl net.ipv4.ip_nonlocal_bind=1
(后者是“立即启用”,第一行是使其持久化。)现在您可以将守护进程绑定到任何 IP 地址。
但是,这可能不会像您预期的那样工作。在同一个 LAN 中,计算机不使用默认网关进行通信。它们直接发送数据包,例如进行 ARP 查询以找出系统的 MAC 地址,然后向其发送数据包。如果没有回复,它不会恢复为将数据包发送到默认网关。相反,它将失败并显示错误。
答案2
在 Linux 上,本地类型的路由是环回的,将传送到本地主机。也称为任何IP。
路由尽可能大的前缀。如果使用 IPv6,也许为此保留整个 /64,例如2001:db8:bdd2:c0e::/64
。将其路由到此主机(Linux 机器),然后在 Linux 机器中将其发送到本地。
配置 xinetd 来监听所需的端口。
最终结果是,该网络中的任何 IP(比如说2001:db8:bdd2:c0e::138
)都将终止于此框,并启动服务器程序。