2014-12-06 22 views
0

我安裝一臺FreeBSD服務器10.0(IP:10.1.2.3),並希望將數據包發送到遠程客戶端,用假源IP,如:Freebsd如何轉發任何類IP?

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

$數據包含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 

對不起,我英文不好。

回答

0

可能與路由(網絡掩碼)有關。如果您的服務器IP爲10.1.2.3/16,則所有IP地址(如10.1.X.Y)都可直接訪問,但如果您嘗試發送超出此範圍的IP地址,IP數據包將通過路由器傳送。正確配置的路由器不應該傳遞這樣的假包。您應該檢查defaultrouter設置在/etc/rc.conf。這個默認路由器可能會在收到這樣的虛假數據包,除非其他人在你的FreeBSD機器上阻止它們。

0

@Kestas是正確的,嘗試的命令怒吼:

1)檢查,如果你有到目的地的路線;

# netstat -ln 

2)測試連接:

# tracepath 10.2.1.2 

3)將同一網絡上:

# ifconfig re0 10.2.1.1/255.0.0.0 

GL!