web-dev-qa-db-ja.com

インターフェース間のルーティング方法

次の設定があります。

                         (192.168.4.1)     
   Device A     <------->   device B   <------->   Device C
(192.168.5.84)           (192.168.5.1)          (192.168.4.5)

デバイスBには、実際にはdhcpサーバーが実行されているwifiインターフェイス(wlan0 = 192.168.4.1)があります。次に、ケーブルインターフェイス(eth0 = 192.168.5.1)があります。

到達したいのは、デバイスAとデバイスCが互いに通信できることです。私はこの結果を得る方法を読んでいて、これを達成するにはルーティングを使用する必要があることを発見しました。私はいくつかのことを試しましたが、それが機能しない理由がわかりません。

デバイスAには静的IP(サブネット255.255.255.0およびゲートウェイ192.168.5.1)があります。

デバイスCはDHCPサーバーからIPを受信しました(サブネット255.255.255.0およびゲートウェイ192.168.4.1)。

私がやったこと:

デバイスBでは、/etc/sysctlでipforwardを有効に設定しました

追加されたルーティング:

iptables -A FORWARD -i eth0 -o wlan0 -s 192.168.5.0/24 -d 192.168.4.0/24 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -s 192.168.4.0/24 -d 192.168.5.0/24 -j ACCEPT 

問題は、デバイスAとデバイスCの両方がデバイスBからアクセスできることです。そのため、これはルーティングの問題である必要があることを示しています。だから私の質問は、デバイスBがトラフィックをAからCにルーティングする状況にどうやって行くのですか?


pdate:デバイスBの設定を変更するだけでこの結果を達成したいというのは、私が言及できなかったことです。

2
Steven

Iptablesを使用する必要はありません。 IP転送を正常に有効にした場合(つまり、/proc/sys/net/ipv4/ip_forwardから1)、両方のネットワークがBに直接接続されているため、デバイスBがこの作業を行います。デバイスAとCの正しいルートが欠落している可能性があります。
A:

ip route add 192.168.4.0/24 via 192.168.5.1

C:

ip route add 192.168.5.0/24 via 192.168.4.1
4
Winnie Tigger