La interfaco ekfunkcias, la agordo de la kunulo aspektas ĝusta, kaj neniu manpremo iam finiĝas. Aldoni implicitan kursaron tra la tunelo estas la paŝo, kiu ofte kaŭzas tion: la sama kursara tabelo nun decidas, kien la propraj ĉifritaj pakaĵoj de la tunelo devas iri, kaj la respondo, kiun ĝi produktas, revenas en la tunelon. Nenio povas porti la eksteran pakaĵon, kiu portus la internan, do la konekto haltas antaŭ ol ĝi komenciĝas. La riparo estas malgranda, sed ĝi havas ordon, kaj la kontrolado pli gravas ol la redakto.

Konfirmu la buklon antaŭ ol ŝanĝi kursaron

Legu la nunan finpunktan adreson de la kunulo kaj poste demandu la kursaran stakon, kien pakaĵo al tiu adreso irus. Se la respondo nomas la tunelan interfacon, la buklo estas konfirmita kaj plia diagnozo ne necesas. Konservu ambaŭ eligojn en la ŝanĝprotokolo antaŭ ol tuŝi ion, ĉar la komparo post la riparo estas la samaj du komandoj. Buklo ne estas subtila post kiam oni vidas ĝin; la malfacilaĵo estas, ke la interfaco aspektas sana dum ĝi okazas.

sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show

Inkluzivu la politikajn regulojn en tiu registrado. Implicita kursaro, kiu aspektas ĝusta en la ĉefa tabelo, ankoraŭ povas malgajni kontraŭ regulo, kiu elektas alian tabelon por markita aŭ nemarkita trafiko, kaj la buklo reaperos kun kursara tabelo, kiu aspektas en ordo.

Legu la vojon al la finpunkto, ne la vojon de la tunelo

La vojo al la finpunkto estas la kursaro, kiun la ĉifritaj datagramoj prenas al la publika adreso de la kunulo, kaj ĝi devas resti ekster la tunelo dum la tunelo ekzistas. La vojo de la tunelo estas ĉio, kion la kunulo rajtas porti. Tiuj du vojoj dividas unu kursaran tabelon, kaj ĝuste tial unu ĉio-kapta ero povas kunfaldi ilin unu en la alian. Apartigi la tunelan trafikon de la propra transporto de la tunelo estas la tuta dezajnoproblemo, kaj ĉiu subtenata ilo solvas ĝin ie iomete alimaniere.

Kontrolu ambaŭ adresfamiliojn aparte se la interfaco portas ambaŭ. Funkcianta IPv4-escepto diras nenion pri tio, ĉu la finpunkto IPv6 ankoraŭ atingeblas, kaj miksita agordo povas ŝajni funkcii ĝis la IPv6-adreso de la kunulo estas elektita.

Restarigu la vojon al la finpunkto per unu kohera ŝanĝo

Ekzistas du subtenataj aliroj, kaj miksi ilin estas kiel funkcianta agordo fariĝas neantaŭvidebla. La unua estas lasi la ilon, kiu posedas la interfacon, administri la tutan tunelon: wg-quick havas dediĉitan traktadon por implicita kunula gamo, kiu instalas apartan tabelon, politikajn regulojn kaj soketan markon, kio tenas la eksterajn pakaĵojn ekster la tunelo. Lasu tiun maŝinaron netuŝita anstataŭ reprodukti duonon de ĝi permane. Agordo, kiu miksas permane aldonitan implicitan kursaron kun administranto, kiu jam instalas markojn kaj regulojn, emas malsukcesi post rekonekto, kiam la administranto reskribas staton, kiun la permana paŝo supozis.

La dua estas permana dezajno, en kiu la finpunkto ricevas eksplicitan gastigan kursaron tra la fizika enirejo. Aldonu tiun kursaron antaŭ la implicita, anstataŭigu anstataŭ aldoni, por ke malnova ero ne povu venki, kaj konfirmu la serĉon poste.

sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1

Kontrolu, poste konservu revenan vojon

Manprema tempstampo, kiu progresas, estas la unua pruvo, kaj ĝi estas pli forta ol interfaco, kiu simple ekzistas. Sekvu ĝin per aplikaĵa testo tra la tunelo, poste mallevu la interfacon intence kaj konfirmu, ke la gastiganto revenas al uzebla stato anstataŭ teni implicitan kursaron montrantan al nenio. Tiun lastan paŝon homoj preterlasas, kaj ĝi decidas, ĉu restartigo lasos la maŝinon sen ligo.

sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20

Antaŭ ĉio ĉi, konservu la nunan kursaran staton kaj certiĝu, ke ekzistas enira vojo, kiu ne dependas de la tunelo: konzolo, eksterbenda administra adreso aŭ kolego surloke. Fora maŝino, kiu perdas sian implicitan kursaron, ne estas restaurebla tra la konekto, kiun ĝi ĵus perdis, kaj la plej sekura paŝo en la runbook estas tiu farita antaŭ la unua komando.

Rilataj artikoloj