Linux はインターフェイス間のパケットを転送します。

Linux はインターフェイス間のパケットを転送します。

iptablesを使わずにインターフェイス間でパケットを転送したいと思います。私はiptables自体に反対するのではなく、単に私の単純な要件には不要だと思います。しかし、私はこれを行うことはできません。できますか?

シナリオは次のとおりです。ホストAには無線インターフェイスと有線インターフェイスがあります。私のワイヤレスゲートウェイのIPは10.0.0.1です。私のワイヤレスインターフェイスは10.0.0.12です。

そのため、sysctlを使用してポート転送を有効にし、有線インターフェイス用のネットワークにIPを生成してから、有線インターフェイスに接続されているホスト(ホストBと呼びます)のルートテーブルエントリを作成すると、すべてが解決されると思いました。大丈夫だと思いましたか?

だから私は持っています:

  • ワイヤレス電話:
    • ゲートウェイ==10.0.0.1
    • ホストAインターフェース==10.0.0.12
    • ホストAネットマスク== 255.255.255.0
  • 熱狂的な:
    • ホストAインターフェース==10.0.0.99
    • ホストBインターフェース== 10.0.0.100、ホストAに接続
    • ネットマスクが255.255.255.255のホストBのルーティングテーブルエントリ。

ホストAからホストBにpingとsshを実行できます。ただし、ホストBでゲートウェイをpingしようとすると、ホストAの有線インターフェイスに次のようなものがたくさんあります。

12:56:55.211866 ARP, Request who-has gateway tell 10.0.0.100, length 46
12:56:56.211751 ARP, Request who-has gateway tell 10.0.0.100, length 46
12:56:57.214187 ARP, Request who-has gateway tell 10.0.0.100, length 46
12:56:58.211834 ARP, Request who-has gateway tell 10.0.0.100, length 46
...

何か抜けましたか?それともiptablesが必要ですか?

これはホストAのルーティングテーブルです。

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG        0 0          0 wlp3s0
10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0
10.0.0.100      0.0.0.0         255.255.255.255 UH        0 0          0 enp0s25

広告ありがとうVance!

ところで、ホストAでは:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

ベストアンサー1

同じアドレス空間を持つ2つの異なるネットワークブロックを持つことはできません。したがって、ip_forward = 1がルーティングに使用されるため、ip_forwardを実行することは役に立ちません。したがって、両方のネットワークブロックで異なるネットワークを使用するか、実際にこの設定が必要な場合はブリッジを設定します。

Debian の場合

$sudo apt-get install bridge-utils

vi /etc/network/interfaces

   allow-hotplug wlan0  
      iface wlan0 inet manual

   auto eth0   
      iface eth0 inet manual

   auto br0  
   iface br0 inet static  
   bridge_ports eth0 wlan0  
      address 10.0.0.1  
      netmask 255.255.255.0

$sudo service networking restart

おすすめ記事