我有两台机器,每台机器都有两个有效的网络接口(interface),一个以太网接口(interface) eth0
和一个 tun/tap 接口(interface) gr0
。目标是使用接口(interface) gr0
在机器 A 上启动 TCP 连接,然后让机器 B 的响应(ACK 等)通过以太网接口(interface) eth0
返回。因此,机器 A 在 gr0
上发送 SYN,机器 B 在其自己的 gr0
上接收 SYN,然后通过 eth0
发送回 SYN/ACK >。 tun/tap 设备是一个 GNU Radio 无线链路,我们只希望通过以太网进行响应。
完成此任务的最简单方法是什么?我需要对 TCP/IP 进行更多研究,但我最初认为源欺骗传出数据包会告诉接收方响应欺骗地址(应该路由到 eth0
)。这将涉及通过 gr0
从 tun/tap 接口(interface)路由 IP,并将其他流量留给 eth0
。
我们正在使用 Linux,最好使用 Python 解决方案。
感谢您的关注!
最佳答案
您可以向每个系统上的 lo
接口(interface)添加一个额外的地址,并将这些新地址用作 TCP 连接端点。然后,您可以使用静态路由来指示每台机器通过哪条路径到达另一台机器的 lo
地址。
例如:
Machine A:
ip addr add 1.1.1.1/32 dev lo
ip route add 2.2.2.2/32 dev eth0 via <eth0 default gateway>
Machine B:
ip addr add 2.2.2.2/32 dev lo
ip route add 1.1.1.1/32 dev gr0
然后在机器A上绑定(bind)1.1.1.1,连接2.2.2.2。
关于linux - 如何通过不同的接口(interface)路由 TCP/IP 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6125472/