次の設定があります。
(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の設定を変更するだけでこの結果を達成したいというのは、私が言及できなかったことです。
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