首页 文章

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

提问于
浏览
0

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

我试图从A到B发送数据包到C.为了实现这一点,我将B配置为A和C的默认网关作为B的默认网关 . 在B上,我激活了数据包转发( sysctl -w net.ipv4.ip_forward=1 )并配置了iptables的FORWARD策略"ACCEPT" .

如果我使用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

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

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

相关问题