寻址到 Linux 系统自己的接口之一的流量是否会离开系统?

Sea*_* W. 5 linux networking socket

我有两台独立的服务器在 Linux 系统的同一端口上运行,一台绑定到环回接口,另一个绑定到公共以太网接口。如果我将该系统上的客户端连接到公共套接字,系统是否足够智能以保持自身内部的流量?

slm*_*slm 5

不,当它寻址分配给本地接口的 IP 地址时,数据永远不会离开盒子。

您可以通过使用traceroute来确认这一事实。

例子

这是我的 Fedora 19 系统上的无线网卡。

$ ip -4 addr show wlp3s0 | grep inet
    inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
Run Code Online (Sandbox Code Playgroud)

它被分配了 IP 地址 192.168.1.20。如果我们traceroute这个IP:

$ traceroute 192.168.1.20
traceroute to 192.168.1.20 (192.168.1.20), 30 hops max, 60 byte packets
 1  greeneggs.bubba.net (192.168.1.20)  0.041 ms  0.013 ms  0.013 ms
Run Code Online (Sandbox Code Playgroud)

请注意,我们从不离开盒子。这是一个单跳,所以我们保持本地系统。