linux - 如何通过不同的接口(interface)路由 TCP/IP 响应?

标签 linux networking spoofing

我有两台机器,每台机器都有两个有效的网络接口(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/

相关文章:

python - 开始在 python 上录制之前的语音识别流延迟

java - 为什么 Inet6Address.getByAddress 需要主机名和直接地址字节?

sockets - TCP拥塞会影响其他端口吗?

networking - 如何访问 docker 自定义桥接网络中的端口

java - 防止 cookie 欺骗

javascript - 如何在运行时修改/"Spoof"标准浏览器JS DOM对象(Window.location)?

linux - 在 Linux 服务器上部署 WSO2 ESB 4.8.1 时无法登录 wso2 carbon

c++ - QSocketNotifier - 如何使用它来监视文件? - linux

linux - 为什么我必须使用 libtool --mode==execute gdb wireshark 才能调试 wireshark

javascript - spoofer.js : An unexpected error has occurred, 我应该担心吗?