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