NATを介して転送されないトラフィック


2

NATを使用してインターネットアクセスを提供するルーターと、eth0でこのルーターに接続されているクライアントLinuxボックス(A)があります。

このLinuxボックスにはwlanインターフェイスwlan0もあります。このボックスで、このインターフェイスを使用してワイヤレスネットワークをアドバタイズし、IPアドレスを配布し、このネットワークからゲートウェイルーターによって提供される他のネットワークにトラフィックを転送することを望みます。

これまでのところ、hostapdとdhcpサーバーが動作しています。2番目のLinuxボックス(B)は、この新しいワイヤレスネットワークに接続してIPアドレスを取得できます。ただし、Bはサブネットの外部でpingを実行したり、アドレスを解決したりすることはできません。

Bのifconfig出力:

wlan2     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.42.10  Bcast:192.168.42.255  Mask:255.255.255.0
          inet6 addr: fe80::12fe:edff:fe1b:2bec/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:177 errors:0 dropped:0 overruns:0 frame:0
          TX packets:757 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26221 (26.2 KB)  TX bytes:132884 (132.8 KB)

Aのifconfig出力:

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.0.12  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:369 errors:0 dropped:0 overruns:0 frame:0
          TX packets:267 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:31272 (30.5 KiB)  TX bytes:33861 (33.0 KiB)

wlan0     Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:192.168.42.1  Bcast:192.168.42.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:79 errors:0 dropped:199 overruns:0 frame:0
          TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:18114 (17.6 KiB)  TX bytes:6874 (6.7 KiB)

Aでのiptables -t nat -Sの出力:

-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Aでのiptables -Sの出力:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT

どんなアイデアでも大歓迎です!

編集:

route -n Aからの出力:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan0

Bから取得したtraceroute:

$ sudo traceroute -i wlan2 8.8.8.8
[sudo] password for eab: 
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  * * *
 2  * * *
 3  * * *
 4  * * *

編集:

Aが作成した新しいワイヤレスネットワークに別のデバイスから接続すると、Cにインターネットに正常にアクセスできます。Bには2つのNICがあり、両方ともワイヤレスであり、wlan2はこの新しいワイヤレスネットワークに接続します。pingを実行できません。

Bからの出力:

$ ping -I wlan2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.42.10 wlan2: 56(84) bytes of data.
From 192.168.42.10 icmp_seq=1 Destination Host Unreachable
From 192.168.42.10 icmp_seq=2 Destination Host Unreachable
From 192.168.42.10 icmp_seq=3 Destination Host Unreachable

編集:

Bで「route -n」を実行すると、次の出力が生成されました。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan2

解決策:「sudo route add default gw 1​​92.168.42.1 wlan2」を実行すると、接続の問題が修正されました。複数のネットワークに接続された複数のNICがアクティブになっている場合でも、Linuxではデフォルトゲートウェイを1つしか使用できないことが判明しています。上記のコマンドを実行すると、次が生成されます。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.42.1    0.0.0.0         UG    0      0        0 wlan2
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.42.0    0.0.0.0         255.255.255.0   U     0      0        0 wlan2

回答:


0

各ボックスで "route -n"を実行することや、 "b"から外部のどこかへのtracerouteを実行することなど、さらにいくつかの詳細が適切です。また、

とはいえ、あなたの問題は、ルーターでパケットの転送を有効にしていないことだと思います。

Aで「cat / proc / sys / net / ipv4 / ip_forward」を実行してください-この値が「0」の場合、[あなたの1人]の問題である可能性があります。これを一時的に修正するには、コマンド「echo 1> / proc / sys / net / ipv4 / ip_forward」を発行します。また、/ etc / sysctl.confの適切な行を「net.ipv4.ip_forward = 1」に追加/変更することにより、 "(sysctl -p /etc/sysctl.confを使用して、このファイルを「リロード」)


IPv4転送を有効にするためにsysctl.confをすでに編集していました。元の質問にさらに情報を追加しました。

1
Bで「ルート-n」を実行できますか?tracerouteから、デフォルトゲートウェイが存在しないか、正しく設定されていないようです。
davidgo

デフォルトゲートウェイを設定すると、接続の問題が修正されました。ありがとうございます。設定されなかった理由はわかりませんが、この質問を調査し、将来の読者のために根本的な問題で更新します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.