WireGuard-Schlüsselaustausch gelingt, aber es kommt keine Antwort zurück
Ein kürzlicher Handshake beweist, dass die Schlüssel funktionieren. Verfolgen Sie eine innere Adresse und lesen Sie die Übertragungszähler, bevor Sie den Tunnel, die Firmware oder die Schlüssel beschuldigen.
Kürzliche Handshakes sind eine gute Nachricht und eine viel kleinere Behauptung als der Satz, den man schreiben möchte. Die Gegenstellen haben authentifizierte Handshake-Nachrichten ausgetauscht. Ein Anwendungspaket muss trotzdem sein inneres Ziel erreichen und zurückkommen.
Diese Lücke zwischen einer gesunden Steuerungsebene und einer stillen Datenebene ist das ganze Thema hier. Zwei Ablesungen derselben Zähler sagen Ihnen, auf welcher Seite davon Sie stehen.
Ein Handshake beweist Schlüssel, nicht Zustellung
Der WireGuard-Handshake ist eine Schlüsselvereinbarung mit Authentifizierung. Er gelingt, sobald die Gegenstellen einander erreichen und gültige Schlüssel besitzen. Routing, Firewall-Regeln und das Ziel selbst sind Fragen, die der Handshake nie stellt.
Ein Tunnel kann also einwandfrei aufgebaut sein, während jedes Paket darin verworfen wird. Ein falsch geroutetes inneres Paket und eine Antwort, die einen anderen Weg nimmt, sehen vom Client aus gleich aus.
Eine innere Adresse ist der ganze Test
Wählen Sie ein Ziel und bleiben Sie dabei. Die eigene Tunneladresse der Gegenstelle ist der einfachste Fall, und ein Host hinter der Gegenstelle fügt genau einen Hop hinzu. Zwischen beiden zu wechseln, ohne die Änderung zu notieren, erzeugt Ergebnisse, die niemand vergleichen kann.
Sehen Sie dann auf die Route, die der Client wählt. Eine spezifischere lokale Route kann das Paket woanders hinschicken, bevor WireGuard überhaupt gefragt wird, und das passiert immer, wenn das Heim-LAN den entfernten Bereich überlappt.
ip route get 10.30.8.10
ip -4 addr show wg0
ip route show table all | grep -w wg0
Eine Adresse, die auf die physische Schnittstelle auflöst, hat die Frage bereits beantwortet. Der Tunnel verwirft nichts. Das Paket ist nie in ihn hineingelangt.
Zähler sind Beweise, kein Urteil
wg show meldet gesendete und empfangene Bytes pro Gegenstelle, und die beiden Zahlen bewegen sich unabhängig. Nehmen Sie eine Ablesung, stellen Sie eine erlaubte Anfrage und nehmen Sie dann innerhalb derselben Minute eine weitere Ablesung.
wg show wg0 transfer
wg show wg0 latest-handshakes
ping -c 4 10.30.8.10
wg show wg0 transfer
Steigender Versand bei gleichbleibendem Empfang ist die Signatur einer unbeantworteten Anfrage. Das sagt nicht, ob die Anfrage gefiltert wurde, ob das Ziel aus war oder ob die Antwort über eine andere Route ging. Das sind drei Untersuchungen mit einem Symptom. Trennen Sie sie, bevor Sie irgendeine Konfiguration ändern.
Auch eine feste Bytezahl ist keine Erfolgsschwelle. Zählerwerte folgen dem Verkehr, und eine Zahl als Gesundheitsbeweis zu behandeln, erzeugt selbstsicheren Unsinn.
Die Gegenstelle prüft das Rückpaket selbst
Die ferne Gegenstelle akzeptiert ein inneres Paket nur, wenn die Quelle in ihre allowedips fällt. Eine Route, die es beim Sender gibt, reicht nicht. Ein fehlender Quelleintrag beim Empfänger verwirft den Rückverkehr stillschweigend.
Host-Firewalls stehen hinter dieser Prüfung. Eine Weiterleitungsregel, die die Tunnelschnittstelle, aber nicht das innere Subnetz erlaubt, akzeptiert den Handshake und verwirft das Paket. Von der Client-Seite sieht das genau wie eine tote Gegenstelle aus. Ein Host mit zwei Schnittstellen kann auch von der falschen Quelle antworten, und die Gegenstelle verwirft dann die Antwort, die sie nie erwartet hat.
Halten Sie das Experiment ehrlich
Ein Fernzugriffsprofil aus demselben Heimnetz zu testen, das es erreichen soll, übt einen anderen Pfad als den beabsichtigten. Wechseln Sie in das externe Netz und notieren Sie dessen lokales Präfix, damit beide Läufe verglichen werden können.
Ein kleiner erfolgreicher Austausch schließt auch nicht jedes Pfadproblem aus. Größere Pakete können scheitern, wo kleine durchkommen, und ein Filter, der auf Größe oder Protokoll passt, kann sich unter Last anders verhalten.
Behalten Sie den Handshake als die bekannt funktionierende Stufe und gehen Sie von ihr aus weiter. Der nächste nützliche Beweis ist, wo eine innere Anfrage stoppt, nicht ein neuer Schlüsselsatz und eine weitere Runde Raten.