【发布时间】:2011-09-01 19:11:55
【问题描述】:
我有两台机器,每台都有两个有效的网络接口,一个以太网接口eth0 和一个tun/tap 接口gr0。目标是使用接口gr0 在机器A 上启动TCP 连接,然后让机器B 的响应(ACK 等)通过以太网接口eth0 返回。因此,机器 A 在 gr0 上发送 SYN,机器 B 在自己的 gr0 上接收到 SYN,然后通过 eth0 将其 SYN/ACK 发回。 tun/tap 设备是一个 GNU Radio 无线链接,我们只希望通过以太网获得响应。
实现此目的最简单的方法是什么?我需要对 TCP/IP 进行更多研究,但我最初认为源欺骗传出数据包会告诉接收器响应欺骗地址(应该路由到eth0)。这将涉及从 tun/tap 接口通过gr0 路由 IP,并将其他流量留给eth0。
我们使用的是 Linux,最好使用 Python 解决方案。
感谢收看!
【问题讨论】:
-
另外,识别内核对收到的数据包做了什么的好方法是什么?它会丢弃它吗?发送给
/dev/null?是的,这可能是一个单独的问题更好。 -
netstat -s的输出可能让您了解内核如何处理数据包(丢弃/传递/连接计数),尽管仅在聚合级别。使用tcpdump或wireshark查看线路上发生了什么。 -
好吧,我的欺骗接近了,我看到收到的数据包,但没有生成响应。似乎内核出于某种原因默默地丢弃了数据包。
-
我打赌你会发现像这样的非对称路由要么 (a) 不可能,要么 (b) 如此麻烦以至于不值得麻烦。我很想知道你为什么需要它。
-
我认为你是对的,不值得麻烦。为了满足您的好奇心:我们正在测试一个 GNU Radio 程序,该程序通过无线电链路传输 IP 流量。我们目前遇到的问题是我们有许多重复的 ACK 和重传。有人向我们建议,通过以太网将响应路由回可以让我们进一步确定核心问题。虽然是一位知识渊博的网络人士提出了这个建议,但我认为他并没有完全考虑过执行此类路由所涉及的步骤。
标签: linux networking spoofing