Sockets Freebsd如何转发任何类别的IP?
我安装了FreeBSD 10.0服务器(IP:10.1.2.3),并希望使用假源IP向远程客户端发送数据包,例如:Sockets Freebsd如何转发任何类别的IP?,sockets,unix,freebsd,Sockets,Unix,Freebsd,我安装了FreeBSD 10.0服务器(IP:10.1.2.3),并希望使用假源IP向远程客户端发送数据包,例如: socket_sendto($socket $data, $length, 0, $ip, $port) $data包含IP头,我在这里指定我的“假IP” 问题是: 如果我指定IP到C类,一切都会进行得很顺利(在成功下面): 如果我将IP指定给B或A类,则不会向目标发送任何内容(以下失败): 那么,我该如何解决这个问题呢 顺便说一句,我已经将sysctl.conf修改为:
socket_sendto($socket $data, $length, 0, $ip, $port)
$data包含IP头,我在这里指定我的“假IP”
问题是:
net.inet.ip.forwarding=1
net.inet6.ip6.forwarding=1
net.inet.ip.fastforwarding=1
对不起,英语不好 可能与路由(网络掩码)有关。如果您的服务器IP为10.1.2.3/16,则所有IP地址(如10.1.X.Y)都可以直接访问,但如果您尝试发送到该范围之外的IP地址,IP数据包将通过路由器发送。正确配置的路由器不应传递此类假数据包。您应该检查
/etc/rc.conf
中的defaultrouter
设置。此defaultrouter可能接收此类假数据包,除非您的FreeBSD计算机上有其他东西阻止它们。@Kestas是正确的,请尝试下面的命令:
1) 验证您是否有到目的地的路线
# netstat -ln
2) 测试连接性:
# tracepath 10.2.1.2
3) 放在同一网络上:
# ifconfig re0 10.2.1.1 / 255.0.0.0
德国劳埃德船级社
# tracepath 10.2.1.2
# ifconfig re0 10.2.1.1 / 255.0.0.0