Ser*_*Ch. 2 networking linux routing ip socket
我使用原始套接字发送 IP/UDP 帧,目标 IP 地址范围为 127/8 - 例如 127.0.0.6。因此,数据包通过网络发送正常(在目标设备上使用 tcpdump 检查)。
但在目标 Linux PC 上,此类帧不会被处理,即不会发送到 UDP 套接字服务器(绑定到 0.0.0.0)。如果目标 IP 是 eth1 接口的地址 - 数据包将被正确处理。
为什么Linux不想处理具有本地主机IP的数据包?是内核Bug吗?
我需要地址 127.xxx,因为 LSP Ping 使用该地址 (RFC 4379)。
这是设计使然,整个 127.XXX 地址范围都保留用于环回,如 RFC1700 中所定义:
http://www.ietf.org/rfc/rfc1700.txt
这里对此进行了更多讨论:
为什么环回IP地址从127.0.0.1到127.255.255.254?
仅仅因为 MPLS 在内部使用它(无论出于何种原因),并不意味着目标服务器可以侦听它并使用该范围。