Warum werden meine Pakete laut der Linux-Routingtabelle an die falsche Schnittstelle gesendet?

Warum werden meine Pakete laut der Linux-Routingtabelle an die falsche Schnittstelle gesendet?

Ich habe eine Ubuntu Bionic-Maschine mit einer WLAN-Verbindung und habe darauf einen Wireguard-Tunnel eingerichtet:

# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 5502  bytes 545376 (545.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5502  bytes 545376 (545.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wg0: flags=209<UP,POINTOPOINT,RUNNING,NOARP>  mtu 1420
        inet 10.0.0.3  netmask 255.255.0.0  destination 10.0.0.3
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 22980  bytes 2777236 (2.7 MB)
        RX errors 75  dropped 0  overruns 0  frame 75
        TX packets 23467  bytes 12255956 (12.2 MB)
        TX errors 0  dropped 362 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.218  netmask 255.255.0.0  broadcast 192.168.255.255
        ether dc:85:de:f3:3f:65  txqueuelen 1000  (Ethernet)
        RX packets 103227  bytes 54970550 (54.9 MB)
        RX errors 0  dropped 103695  overruns 0  frame 0
        TX packets 41654  bytes 15633577 (15.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ich habe zuvor den gesamten Datenverkehr durch den Wireguard-Tunnel umgeleitet, aber jetzt habe ich das umgekehrt, damit der Peer den Datenverkehr über diesen Host weiterleiten kann. Es scheint jedoch, als ob meine Pakete aus irgendeinem Grund immer noch durch den Tunnel geleitet werden möchten.

Hier ist meine Routing-Tabelle:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    600    0        0 wlan0
10.0.0.0        0.0.0.0         255.255.0.0     U     0      0        0 wg0
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.1.1     0.0.0.0         255.255.255.255 UH    600    0        0 wlan0
192.168.100.1   192.168.1.1     255.255.255.255 UGH   0      0        0 wlan0

Wenn ich versuche, eine externe Adresse anzupingen oder zu curlen, bleibt sie immer hängen. Traceroute zeigt, dass versucht wird, Pakete durch den Tunnel zu leiten (der Peer ist derzeit so konfiguriert, dass er sie verwirft):

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  10.0.0.1 (10.0.0.1)  68.393 ms  74.587 ms  74.328 ms^C

Wenn Sie traceroute 8.8.8.8 -i wlan0Traceroute jedoch zwingen, wlan0 zu verwenden, wie es die Routing-Tabelle oben vorschreiben sollte, funktioniert es.

Was könnte los sein? Steht in der Routing-Tabelle nicht, dass Pakete, die auf 8.8.8.8 abzielen, zur Weiterleitung über wlan0 an 192.168.1.1 gesendet werden müssen?

(Falls es wichtig ist, meine einzigen iptables sind jetzt -A FORWARD -i wg0 -j ACCEPTund -t nat -A POSTROUTING -o wlan0 -j MASQUERADE)

Antwort1

Es scheint, dass Routen zu einer anderen Tabelle hinzugefügt werden, die nicht mit oder wg-quick upangezeigt wird . Wenn Sie ausführen , können Sie es sehen. In diesem Fall befand es sich in einer Tabelle namens und hatte Vorrang vor der Standardtabelle.route -nip route showip route show table all51820

verwandte Informationen