Ich habe zwei Linux-Rechner miteinander verkabelt. Ein Rechner hat eine drahtlose Verbindung zu meinem Router, der andere nicht. Der Rechner ohne drahtlosen Zugriff (PC1) ist so konfiguriert, dass er eine eindeutige statische IP-Adresse hat und der andere Rechner (PC2) als sein Standard-Gateway festgelegt ist. PC2 ist so konfiguriert, dass er ebenfalls eine eindeutige IP-Adresse hat und den Router als Standard-Gateway verwendet. Wenn ich die kabelgebundene Verbindung aktiviere, kann PC1 mit den Schnittstellen eth0 und wlan0 von PC2 kommunizieren, und PC2 kann mit PC1 kommunizieren. Leider kann PC2 bei aktivierter kabelgebundener Verbindung nicht mit dem Router kommunizieren und PC1 somit auch nicht. Grundsätzlich können kabelgebundene und drahtlose Verbindungen von PC2 nicht gleichzeitig funktionieren.
PC2 (HINWEIS: route-n
ist gleich, unabhängig davon, ob die Verkabelung aktiviert ist oder nicht)
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 (HINWEIS: Ich kann die ifconfig von PC1 nicht abrufen)
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
Antwort1
Das aktuelle Setup der PC2-Routingtabelle ist Ihr Problem. Ich habe es hier reproduziert, wobei ich unwichtige Spalten entfernt und von der Netzmaske in die CIDR-Notation konvertiert habe:
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
Die erste Zeile bedeutet im Klartext: „Der Datenverkehr zu allen anderen Sites wird über das Gateway 10.0.0.138 gesendet.“
Die zweite und dritte Zeile liefern dasselbe Ziel, daher gewinnt die niedrigere Metrik. Zeile 3 könnte genauso gut gar nicht vorhanden sein. Bedeutet im Klartext: „Um das Gateway 10.0.0.138 und alle anderen 10.0.0.*-Peers zu erreichen, senden Sie über eth0.“
Zusammen führt dies dazu, dass der für das Internet bestimmte Datenverkehr über eth0 läuft und es daher zu keiner Konnektivität kommt.
Das Problem entsteht, weil Sie dasselbe Subnetz in zwei verschiedenen Bridging-Domänen im selben Netzwerk verwenden, was nicht zulässig ist. Hören Sie damit auf!
Ändern Sie die Netzmaske der eth0-Schnittstelle von PC2 in 255.255.252.0 und geben Sie ihr eine IP-Adresse, die weiter vom Router entfernt ist. Dadurch wird die Routing-Tabelle geändert (zum Beispiel erhält PC2 eth0 10.0.0.21 und 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
Jetzt stimmt der Datenverkehr zum Gateway 10.0.0.138 überhaupt nicht mit der zweiten Zeile überein und verwendet korrekt die dritte Zeile.
Noch besser wäre es, einen nicht überlappenden Bereich für die kabelgebundene Verbindung zu verwenden, zum Beispiel 10.0.1.x
Damit der Internetzugang auch für PC1 funktioniert, muss Ihr Router den für PC1 bestimmten Datenverkehr über PC2 senden. Dies können Sie auf zwei Arten einrichten: Ändern Sie die Routing-Tabelle des Routers oder konfigurieren Sie PC2 so, dass er Proxy-ARP ausführt.
Antwort2
Ich denke, dass einige Dinge die Ursache für Ihre Probleme sein könnten:
- Sie geben an, dass PC1 PC2 als Standard-Gateway verwendet, die Routing-Tabelle zeigt jedoch tatsächlich PC1
10.0.0.139
als Standard-Gateway an und nicht die eth0-Schnittstelle von PC2.10.0.0.140
- Wenn PC2 für das Routing des Datenverkehrs von PC1 verantwortlich ist, haben Sie die IP-Weiterleitung auf PC2 aktiviert? Ich glaube nicht, dass dies in Linux standardmäßig aktiviert ist. Prüfen Sie mit
cat /proc/sys/net/ipv4/ip_forward
. Wenn der Wert 0 ist, verwirft PC2 den gesamten routingfähigen Datenverkehr, der von PC1 an ihn gesendet wird.Anleitung, wenn Sie es einschalten müssen. - Wenn die IP-Weiterleitung auf PC2 tatsächlich aktiviert ist, wurde iptables so konfiguriert, dass es Datenverkehr akzeptiert, der seine Weiterleitungskette erreicht?
iptables -nvL
Überprüfen Sie die Regeln für die Weiterleitungskette.