我有两台机器,每台机器都有两个有效的网络接口,一个是以太网接口eth0
,一个是tun/tap接口gr0
。目标是使用接口gr0
在机器A上启动TCP连接,然后通过以太网接口eth0
返回来自机器B的响应( back等)。因此,机器A在gr0
上发送SYN,而机器B在它自己的gr0
上接收SYN,然后通过eth0
发送回它的SYN/ACK。tun/tap设备是GNU无线电无线链路,我们只希望响应通过以太网。
实现这一目标的最简单方法是什么?我需要更多地研究TCP/IP,但我最初认为,源欺骗传出的数据包将告诉接收方响应欺骗的地址(应该路由到eth0
)。这将涉及通过gr0
来路由来自tun/tap接口的IP,并将其他流量留给eth0
。
我们使用Linux和Python解决方案会更好。
感谢您的关注!
发布于 2011-05-25 22:40:20
您可以向每个系统上的lo
接口添加额外的地址,并将这些新地址用作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上的1.1.1.1并连接到2.2.2.2。
发布于 2011-05-26 05:33:45
您可能有兴趣在受影响的接口上启用火星数据包net.ipv4.conf.all.log_martians
日志记录,并禁用反向路径过滤net.ipv4.conf.<interface>.rp_filter
。
可以通过sysctl
实用程序和/或/proc
文件系统访问此sysctl变量。
https://stackoverflow.com/questions/6125472
复制相似问题