有線接続が無線接続より優先される

有線接続が無線接続より優先される

2 台の Linux マシンを有線接続しました。1 台のマシンはルーターにワイヤレス接続されていますが、もう 1 台のマシンはワイヤレス接続されていません。ワイヤレス アクセスのないマシン (PC1) は、一意の静的 IP を持つように構成され、もう 1 台のマシン (PC2) はデフォルト ゲートウェイとして設定されます。PC2 も一意の IP を持つように構成され、ルーターをデフォルト ゲートウェイとして使用します。有線接続を有効にすると、PC1 は PC2 の eth0 および wlan0 インターフェイスと通信でき、PC2 は PC1 と通信できます。残念ながら、有線接続を有効にすると、PC2 はルーターと通信できず、したがって PC1 も通信できません。基本的に、PC2 の有線接続とワイヤレス接続は同時に動作できません。

PC2 (注:route-n有線が有効かどうかに関係なく同じです)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.138      0.0.0.0         UG    0      0        0 wlan0
10.0.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     9      0        0 wlan0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99  
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 60:a4:4c:62:ee:86  
          inet addr:10.0.0.140  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::62a4:4cff:fe62:ee86/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7744 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12554 (12.5 KB)  TX bytes:1509568 (1.5 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2179347 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2179347 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:217854881 (217.8 MB)  TX bytes:217854881 (217.8 MB)

wlan0     Link encap:Ethernet  HWaddr c0:4a:00:66:58:98  
          inet addr:10.0.0.103  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::c24a:ff:fe66:5898/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1605422 errors:0 dropped:0 overruns:0 frame:0
          TX packets:669649 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1405768536 (1.4 GB)  TX bytes:83997471 (83.9 MB)

PC1 (注: PC1 の ifconfig を取得できません)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.139      0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0

答え1

PC2 ルーティング テーブルの現在の設定が問題です。重要でない列を削除し、ネットマスクから CIDR 表記に変換して、ここで再現しました。

Destination     Gateway         Metric Iface
0.0.0.0/0       10.0.0.138      0      wlan0
10.0.0.0/24     0.0.0.0         1      eth0
10.0.0.0/24     0.0.0.0         9      wlan0

最初の行は、平易な英語で「他のすべてのサイトへのトラフィックは、10.0.0.138 ゲートウェイを介して送信される」という意味です。

2 行目と 3 行目は同じ宛先を提供するため、メトリックが低い方が優先されます。3 行目は存在しないのと同じです。わかりやすい英語の意味は、「ゲートウェイ 10.0.0.138 とその他すべての 10.0.0.* ピアに到達するには、eth0 経由で送信します」です。

これらを組み合わせると、インターネット宛のトラフィックが eth0 を通過することになり、接続が失われます。

問題は、同じネットワーク内の 2 つの異なるブリッジ ドメインで同じサブネットが使用されているために発生しますが、これは許可されていません。これを止めてください。

PC2のeth0インターフェースのネットマスクを255.255.252.0に変更し、ルーターから離れたIPアドレスを指定します。これにより、ルーティングテーブルが次のように変更されます(たとえば、PC2にeth0 10.0.0.21、PC1にeth0 10.0.0.22を指定します)。

Destination     Gateway         Metric Iface
0.0.0.0/0       10.0.0.138      0      wlan0
10.0.0.20/30    0.0.0.0         1      eth0
10.0.0.0/24     0.0.0.0         9      wlan0

これで、ゲートウェイ 10.0.0.138 へのトラフィックは 2 行目とまったく一致しなくなり、3 行目が正しく使用されるようになります。

さらに良いのは、有線接続に重複しない範囲を使用することです。たとえば、10.0.1.x などです。

PC1 でもインターネット アクセスが機能するようにするには、ルータが PC1 宛てのトラフィックを PC2 経由で送信する必要があります。これを設定するには、ルータのルーティング テーブルを変更するか、プロキシ ARP を実行するように PC2 を構成するという 2 つの方法があります。

答え2

問題の原因となっている可能性があると思われることがいくつかあります:

  1. PC1 が PC2 をデフォルト ゲートウェイとして使用していると述べていますが、PC1 のルーティング テーブルには、10.0.0.139PC2 の eth0 インターフェイスではなく、デフォルト ゲートウェイとして表示されます。10.0.0.140
  2. PC2 が PC1 からのトラフィックのルーティングを担当している場合、PC2 で IP 転送をオンにしましたか? Linux ではこれがデフォルトで有効になっていないと思います。 で確認してくださいcat /proc/sys/net/ipv4/ip_forward。 0 の場合、PC2 は PC1 から送信されたすべてのルーティング可能なトラフィックをドロップします。オンにする必要がある場合のガイド
  3. PC2 で IP 転送が実際に有効になっている場合、iptables は転送チェーンにヒットするトラフィックを受け入れるように設定されていますか?iptables -nvL転送チェーンのルールを確認します。

関連情報