Sockets Freebsd如何转发任何类别的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修改为:

我安装了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修改为:

      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