![Linux,两个光纤接口互相连接-路由](https://linux22.com/image/548834/Linux%EF%BC%8C%E4%B8%A4%E4%B8%AA%E5%85%89%E7%BA%A4%E6%8E%A5%E5%8F%A3%E4%BA%92%E7%9B%B8%E8%BF%9E%E6%8E%A5-%E8%B7%AF%E7%94%B1.png)
我有一台 Linux 机器,上面有两个光纤接口相互连接。有没有办法设置路由,以便真正通过链路发送数据包?到目前为止,当两个接口位于同一台机器上时,除了通过环回之外,没有其他方法可以连接它们。
答案1
仅使用本机 TCP/IP 堆栈和正确配置的接口,主机就会选择到达最终目的地的最佳路由,在这种情况下,这不涉及通过光纤发送单播流量的数据包。如果您只需要验证接口功能,则可以通过链路发送广播流量或设置路由来生成可以通过嗅探器(如 tcpdump 或 wireshark)看到的流量。
可以让另一个进程 (vm/test suite/etc) 设置自己的 IP 堆栈来绕过主机堆栈。根据我的经验,这需要将接口设置为混杂,并且进程需要以 root 身份运行。这样,该进程就可以查看到达接口的所有流量,此外还可以直接在线路上发送数据包。
重要的是,Linux 主机本身在任何接口上都不能具有与此进程所使用的相同的网络配置,以便它在网络上显示为第二台主机。否则,它将使两个接口之间的流量短路。假设情况并非如此,与该进程通信的另一个接口将不知道它实际上是在与同一台机器通信,并将通过链路发送数据包以到达“第二台主机”。
答案2
据我所知,TCP/IP 堆栈将使任何本地接口之间的任何通信短路。因此,不会通过该链接发送或接收任何数据包。