2 つのワイヤレス インターフェイス間のルーティング - Linux

2 つのワイヤレス インターフェイス間のルーティング - Linux

基本的に私のネットワークはこのようになっています

                            +------+
  10.0.0.10 ------ 10.0.0.1=|Laptop|=11.0.0.11 ------ 11.0.0.1 
(wlan0,client)    (AP,wlan0)+------+(wlan1,client)        (AP)

wlan0とwlan1はラップトップに接続されたUSB Wi-Fiアダプタです

これらのネットワークをラップトップ経由で接続したいのですが、最初はブリッジを試みましたが、ブリッジはサポートされていないことがわかりました。

これを試してみましたが、うまくいきませんでした。

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

何か助けていただければ幸いです。

答え1

2 つのマスカレード ルールは必要ありません。コンピュータをデフォルト ルートとするクライアントをマスカレードするだけで済みます。つまり、「WAN」側のインターフェイスから送信されるパケットにソース NAT を適用します。

ファイアウォールがデフォルト状態の場合、必要なルールは次の 1 つだけです。

iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

異なるネットワーク上の MTU が異なる場合は、MSS 修正を適用する必要がある可能性があります。

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu   

(これは、「ping は機能するが、Web サイトは機能しない」または「一部のサイトは機能するが、他のサイトは機能しない」などの問題を解決するのに役立ちます)。

非常によくある落とし穴があります。私はこれを 20 年ほどやっていますが、すべてが機能するはずなのに、何かが機能しないという状況になるまで、このことを忘れてしまうことがよくあります。カーネルでパケット転送を明示的に有効にする必要があります。

sysctl net.ipv4.ip_forward=1

/etc/sysctl.conf起動後に有効になるように同じ変数を設定します。

関連情報