【问题标题】:Freebsd How to forward any classes IP?Freebsd 如何转发任何类IP?
【发布时间】:2014-12-08 03:40:04
【问题描述】:

我安装了一个FreeBSD 10.0服务器(IP:10.1.2.3),想用假的源IP向远程客户端发送数据包,例如:

socket_sendto($socket $data, $length, 0, $ip, $port)

$data 包含 IP 标头,我在这里指定我的“假 ip”。

问题是:

  1. 如果我将IP指定给C类,一切顺利(成功以下):

    10.1.2.4
    10.1.3.5
    
  2. 如果我将 IP 指定给 B 或 A 类,则不会发送到目的地(以下失败):

    10.2.1.2
    11.1.2.3
    

那么,我该如何解决这个问题?

顺便说一句,我已经将 sysctl.conf 修改为:

  net.inet.ip.forwarding=1
  net.inet6.ip6.forwarding=1
  net.inet.ip.fastforwarding=1

抱歉英语不好。

【问题讨论】:

    标签: sockets unix freebsd


    【解决方案1】:

    可能与路由(网络掩码)有关。如果您的服务器 IP 是 10.1.2.3/16,则所有 IP 地址(如 10.1.X.Y)都可以直接访问,但如果您尝试发送到此范围之外的 IP 地址,IP 数据包会通过路由器。正确配置的路由器不应通过此类虚假数据包。您应该检查/etc/rc.conf 中的defaultrouter 设置。这个默认路由器可能接收到这样的假数据包,除非你的 FreeBSD 机器上有其他东西阻止它们。

    【讨论】:

      【解决方案2】:

      @Kestas 是对的,试试下面的命令:

      1) 验证您是否有到达目的地的路线;

      # netstat -ln 
      

      2) 测试连通性:

      # tracepath 10.2.1.2
      

      3) 放在同一个网络上:

      # ifconfig re0 10.2.1.1 / 255.0.0.0
      

      GL !

      【讨论】:

        猜你喜欢
        • 2018-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-20
        相关资源
        最近更新 更多