转发包含任何源地址的数据包

时间:2016-01-14 13:42:26

标签: networking iptables scapy

我有三台电脑:A,B和C.

我正在尝试将A上的数据包从B发送到C.为此,我将B配置为A和C的默认网关作为B的默认网关。在B上,我激活了数据包转发(sysctl -w net.ipv4.ip_forward=1)和配置iptables' FORWARD政策到"接受"。

如果我使用scapy从A发送数据包(MAC地址是连接到A的Bs接口的地址): sendp(Ether(dst="e8:39:35:0f:13:09")/IP(dst="12.34.56.78"), iface="eth2"),C上的tcpdump表示数据包到达。

但是,只要我从A发送数据包添加源地址,转发似乎就不再起作用了 - 没有数据包到达C:sendp(Ether(dst="e8:39:35:0f:13:09")/IP(src="1.2.3.4",dst="12.34.56.78"), iface="eth2")

我错过了什么吗?任何意见都非常欢迎!

1 个答案:

答案 0 :(得分:0)

一些离线帮助为我提供了解决此问题的线索:关键字为Reverse Path Forwarding:这是一项有助于防范IP欺骗的功能。如果内核获取网络数据包,它会检查它是否可以通过数据包到达的接口到达数据包的源IP。如果不是这种情况,则丢弃数据包。

根据操作系统的不同,可能启用也可能不启用。请参阅cat /proc/sys/net/ipv4/conf/eth0/rp_filter的输出:0表示没有反向路径转发。