![有線接続が無線接続より優先される](https://rvso.com/image/1497099/%E6%9C%89%E7%B7%9A%E6%8E%A5%E7%B6%9A%E3%81%8C%E7%84%A1%E7%B7%9A%E6%8E%A5%E7%B6%9A%E3%82%88%E3%82%8A%E5%84%AA%E5%85%88%E3%81%95%E3%82%8C%E3%82%8B.png)
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
問題の原因となっている可能性があると思われることがいくつかあります:
- PC1 が PC2 をデフォルト ゲートウェイとして使用していると述べていますが、PC1 のルーティング テーブルには、
10.0.0.139
PC2 の eth0 インターフェイスではなく、デフォルト ゲートウェイとして表示されます。10.0.0.140
- PC2 が PC1 からのトラフィックのルーティングを担当している場合、PC2 で IP 転送をオンにしましたか? Linux ではこれがデフォルトで有効になっていないと思います。 で確認してください
cat /proc/sys/net/ipv4/ip_forward
。 0 の場合、PC2 は PC1 から送信されたすべてのルーティング可能なトラフィックをドロップします。オンにする必要がある場合のガイド。 - PC2 で IP 転送が実際に有効になっている場合、iptables は転送チェーンにヒットするトラフィックを受け入れるように設定されていますか?
iptables -nvL
転送チェーンのルールを確認します。