Du antaŭfiksoj /1 kovras ĝuste la samajn IPv4-adresojn kiel unu sola /0, kaj tiu egaleco validas nur ene de la listo de permesitaj antaŭfiksoj de la kunulo. Ĝi ĉesas validi en la momento, kiam la agorda ilo decidas kiel enkursigi, ĉar Linux wg-quick traktas implicitan antaŭfikson kiel specialan kazon, ne kiel aritmetikon. La speciala branĉo instalas apartan tabelon, du politikajn regulojn, ingan markon kaj agordojn por la inversa vojo, kiujn paro da duonaj itineroj neniam ricevas. Kiam do prokura servilo aŭ retumilo ĉesas funkcii post la ŝanĝo, la antaŭfiksoj estas la malplej interesa parto de la ŝanĝo.

La antaŭfiksa listo ne estas la tuta agordo

AllowedIPs faras du taskojn samtempe, kaj nur unu el ili temas pri kovrado. Por WireGuard mem la listo estas kriptoŝlosila enkursigado: ĝi decidas, kiuj celoj estas ĉifrataj al kunulo kaj kiujn fontadresojn tiu kunulo rajtas uzi. Por wg-quick la sama listo samtempe funkcias kiel itinera specifoj, kaj la itinero, kiun ĝi produktas, dependas de tio, kiun branĉon la listo hazarde kongruas. Identa kovrado ĉe du malsamaj listformoj do diras nenion pri identa stato de la gastiganto.

La implicita agordo forprenas tiun decidon el viaj manoj, ĉar Table implicite estas aŭtomata kaj la ilo elektas, kie la itineroj surteriĝos. Alia retadministrilo, distribua envolvilo aŭ propra valoro de Table denove ŝanĝas la rezulton, kaj tial konsilo verkita por unu gastiganto povas aspekti malĝusta ĉe la sekva.

Kion la implicita branĉo aldonas super itinero

Ero /0 sendas wg-quick en sian implicitan itineran vojon: aparta enkursiga tabelo ricevas la implicitan itineron, unu politika regulo sendas nemarkitan trafikon tien, dua regulo konservas pli specifajn itinerojn de la ĉefa tabelo kiel aŭtoritataj, kaj la interfaco ricevas fajroŝtrumpan markon sur sia propra ingo. Tiu marko estas la bukla gardanto. La ĉifritaj datagramoj portantaj la tunelan trafikon foriras kun la marko metita, tiel ke la regulo, kiu direktas ĉion alian en la tunelon, ne englutu la proprajn transportajn pakaĵojn de la tunelo.

Paro da eroj /1 anstataŭe prenas la ordinaran itineran vojon. Du itineroj surteriĝas en la agorditan tabelon, kaj neniu el la ĉirkaŭa maŝinaro aperas, ne ĉar ĝi estas senbezona, sed ĉar tiu koda vojo neniam estis enirita.

Kie la du aranĝoj diverĝas

La diverĝo montriĝas unue kiel ripeto. Kun la duonaj itineroj en la ĉefa tabelo, la propra transporta adreso de la kunulo falas ene de tunela antaŭfikso, do la pakaĵo, kiu devus porti la tunelon, kongruas kun itinero direktanta en la tunelon. Io devas escepti ĝin: gastiganta itinero por la nuna finpunkto, permane aplikita marko aŭ interfaca specifa regulo. Gastiganta itinero funkcias ĝis la adreso de la finpunkto ŝanĝiĝos, kio okazas ĉe finpunktoj bazitaj sur DNS, migraj klientoj kaj agordoj kun pluraj kunuloj.

Due, ĉio, kio rezonas pri markoj, ŝanĝas sian konduton. Travidebla prokura servilo, kiu lokalice redirektas konektojn, kreas novajn ingojn, kies markoj kaj fontoj diferencas de la originala klientfluo, kaj la politikaj reguloj generitaj de la implicita branĉo estis parto de tio, kio apartigis tiujn fluojn. Legi la propran elirantan konekton de la prokura servilo estas alia ekzerco ol testi, ĉu la originala celo estas atingebla.

Legi la regulojn kaj markojn antaŭ redakti

Kaptu la nunan staton dum la tunelo estas sana, poste denove post la ŝanĝo, kaj komparu la du elprenaĵojn anstataŭ rezonadi el la agorda dosiero. Inkluzivu la politikajn regulojn, ĉiun tabelon, la markon de la interfaco kaj la registritajn finpunktojn.

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

Se la unua eliga linio perdis la regulon por nemarkita trafiko kaj la aparta tabelo estas malplena, la implicita branĉo ne funkcias kaj neniu kvanto da antaŭfiksa aritmetiko restarigos ĝiajn efikojn. Marko de nulo sur interfaco, kiu antaŭe portis unu, estas la sama signalo, videbla en unu sola valoro.

Ekzercu perdon de la tunelo antaŭ liverado

Se la duona itinera aranĝo estas la konscia elekto, ĝi devas eksplicite provizi la mankantajn pecojn: finpunkan vojon, kiu postvivas adresajn ŝanĝojn, la intencitan konduton kiam la tunelo falas, kaj la ekvivalentan traktadon por IPv6. Skribu tion kiel postulojn anstataŭ malkovri ĝin dum paneo. Poste ekzercu la paneon, ĉar plena tunelo, kiu silente refalas al la fizika suprenligo, estas pli malbona ol tiu, kiu ĉesas funkcii.

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

La itinera serĉo devus solvi la finpunkton el la fizika interfaco sen trairi la tunelon, kaj mallevi la interfacon devus lasi la gastiganton en la stato, kiun la dezajno promesis. Prokura servilo, kiu funkcias post la anstataŭigo, pruvas, ke la generita gastiganta stato gravis; ĝi ne pruvas, ke bukla preventado kaj konduto en mallevita stato postvivis la redakton.

Rilataj artikoloj