Linuxルーティングの問題を解決するために誰が助けることができますか?基本的に、Ubuntuノートブックを使用して接続されたネットワークへのインターネットアクセスを提供したいと思います。
Wi-Fiネットワーク(192.168.42.0/24)があるラズベリーパイがあります。 IPアドレスは192.168.42.20です。
インターネットアクセスはモバイルホットスポットを介して提供されます。 (192.168.43.0/24).インターネットゲートウェイは192.168.43.1です。
私は上記の各ネットワークに1つずつ2つのWi-Fiカードを持つLinuxノートブック(Ubuntu)を持っています。 (192.168.42.21および192.168.43.10)
また、クライアントとインターネット接続を正常に共有したイーサネットカードの他のネットワークも接続しました。ネットワークは10.42.0.0/24です。この例では、ノートブックはDHCPサーバーで、対応するIPは10.42.0.1です。
私はラップトップを使ってPiにインターネットアクセスをルーティングしようとしています。ノートブックに次のようなiptableルールを追加しました。これは、私が言ったように、インターネットに接続できる10.42.0./24ネットワークの転送ルールに由来します。
-A FORWARD -d 192.168.42.0/24 -o wlx801f0281f02a -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.42.0/24 -i wlx801f0281f02a -j ACCEPT
-A FORWARD -i wlx801f0281f02a -o wlx801f0281f02a -j ACCEPT
ip_forwarding is enabled
Piにパスを追加しました。これで、ルーティングテーブルは次のようになります。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.42.21 0.0.0.0 UG 0 0 0 wlan0
192.168.42.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
Piは他のネットワークにpingを送信でき、他の2つのネットワークはPiにpingを送信できます。
しかし... 10.42.0.117のデバイスは外部の世界にシームレスに接続できますが、Piはまだインターネットにアクセスできません。
10.42.0.117のルーティングテーブルは、Piのルーティングテーブルと完全に「並列」です。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.42.0.1 0.0.0.0 UG 0 0 0 eth0
10.42.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
私は何を見逃していますか?
答え1
したがって、@YoMismoが私を正しい方向に導いた後の答えは、iptablesルールをもう1つ追加することでした。
sudo iptables --table nat -A POSTROUTING -s 192.168.42.0/24 ! -d 192.168.42.0/24 -j MASQUERADE
結果を見ることができます
sudo iptables -t nat -L -n -v
要約すると、次のようにアクセスする必要があるデバイスにパスを追加します。
sudo ip route add 0.0.0.0/0 via 192.168.42.21 dev wlan0
192.168.42.21は、「Linuxルーター」の「ブリッジ」Wi-FiアダプターのIPアドレスです。
次に、次のように「linux router」に iptables ルールを追加します。
sudo iptables -A FORWARD -d 192.168.42.0/24 -o wlx801f0281f02a -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.42.0/24 -i wlx801f0281f02a -j ACCEPT
sudo iptables -A FORWARD -i wlx801f0281f02a -o wlx801f0281f02a -j ACCEPT
sudo iptables --table nat -A POSTROUTING -s 192.168.42.0/24 ! -d 192.168.42.0/24 -j MASQUERADE
同様に、wlx801f0281f02aは、ネットワーク192.168.42.0/24への接続に使用するブリッジWi-Fiアダプタインターフェースです。
したがって、ソースデバイスからのインターネット要求は、ソースデバイスへのパスを使用して「Linuxルータ」の192.168.42.21にルーティングされ、ここでNATになりゲートウェイに転送されます。
ip_forwardが有効になっています。
要件が一時/一時である場合は、規則を継続的に作成するか、bashスクリプトに入れます。