Poskrbite, da bo posredovanje IPv4 preživelo ponovni zagon prehoda VPN
Nastavite ip_forward v imenskem prostoru, ki prenaša pakete odjemalcev, dajte nastavitvi enega lastnika in dokažite, da preživi ponovni zagon, namesto da bi samo urejali datoteko.
Ping na prehod deluje, doseganje česar koli za njim pa ne, in to je oblika težave s posredovanjem, ne težave s tunelom. Lokalna dostava do prehoda dokazuje, da se je tunel dvignil in da je dodeljevanje naslova delovalo; ne pove ničesar o tem, ali bo jedro prepustilo paket z enega vmesnika na drugega. Preden se dotaknete katerega koli sysctl, potrdite, da je stroj namenjen usmerjanju tega prometa in poiščite omrežni kontekst, ki drži vmesnik, obrnjen proti odjemalcu. Nato vrednost preberite tam, ne tam, kamor je slučajno pogledal zadnji prebrani vodnik.
Doseči prehod ni isto kot posredovati
Znotraj jedra se zgodita dve ločeni odločitvi. Dostava na lokalni naslov konča pot paketa; posredovanje ga pošlje znova ven skozi drug vmesnik, in ta druga odločitev se upravlja za vsak omrežni imenski prostor. Prehod je lahko popolnoma dosegljiv, medtem ko je posredovanje izklopljeno, in s poziva ping sta obe napaki videti enaki.
Zapišite, na kateri vmesnik pride paket odjemalca in skozi kateri vmesnik gre nadaljnja pot. Oba pripadata enemu imenskemu prostoru, in prav ta imenski prostor drži nastavitev, ki je pomembna.
Preberite vrednost tam, kjer so paketi v resnici
Na prehodu, ki usmerja v imenskem prostoru gostitelja, na vprašanje odgovori en ukaz: sysctl net.ipv4.ip_forward. Ko vhodna in nadaljnja pot živita v imenovanem imenskem prostoru, vprašajte ta prostor: ip netns exec vpn-gw sysctl net.ipv4.ip_forward. Vrednost gostitelja ne nadomesti vrednosti imenskega prostora, in enica na gostitelju ni dokaz za nič.
Vsak kontekst usmerjanja nima oznake, ki bi jo lahko predali ukazu ip netns. Izvajalna okolja vsebnikov in storitve ustvarjajo imenske prostore, ki se nikoli ne registrirajo pod prijaznim imenom, in zanje uporabite orodja za pregled izvajalnega okolja. Zamenjajte vpn-gw z resničnim imenom ali z mehanizmom okolja, ki doseže isti kontekst, in prenehajte ugibati na ravni gostitelja.
Dajte nastavitvi enega lastnika
Na običajnem gostiteljskem prehodu s systemd je trajna oblika datoteka drop-in z imenom, ki ga izbere skrbnik, na primer /etc/sysctl.d/60-vpn-forwarding.conf, ki vsebuje net.ipv4.ip_forward = 1. Datoteko zapišite in nato naložite prav to datoteko, da se spremeni tudi živo stanje: sudo sysctl -p /etc/sysctl.d/60-vpn-forwarding.conf, čemur sledi ponovno branje. Ime datoteke je primer, ne rezervirana pot VPN, in vodilna številka je pomembna, ker datoteke, razvrščene pozneje, zmagajo.
Prednost je mesto, kjer se trajnost tiho zlomi. Preverite tako nalagalnik distribucije kot svoj drop-in, ker procps sysctl --system na koncu bere tudi /etc/sysctl.conf, medtem ko je vrstni red sysctl.d v systemd povsem drugo zaporedje. Poznejša dodelitev lahko isti ključ takoj postavi nazaj, tako da vaša datoteka ostane pravilna, dejanska vrednost pa napačna. Ne prepišite obstoječe skrbniške datoteke, da bi dobili ta spor; poiščite lastnika in spremenite tam.
Imenski prostor, ustvarjen po zagonu, sploh ni pod nadzorom gostiteljskega drop-in. Njegova nastavitev pripada temu, kar ga ustvari, bodisi izvajalnemu okolju vsebnikov bodisi enoti za pripravo imenskega prostora. Dati vsebniku široke gostiteljske pravice, da bi se izognili vprašanju, je slabša kupčija kot deset minut porabiti za iskanje pravega lastnika.
Vedite, koliko stane stikalo, preden ga obrnete
ip_forward ni neškodljiv boolean. Dokumentacija jedra opozarja, da njegova sprememba ponastavi več drugih parametrov IPv4 na privzete vrednosti gostitelja ali usmerjevalnika, zato lahko diagnostično obračanje zavrže nastavitve, narejene drugje, in tega sploh ne omeni. Obravnavajte ga kot spremembo konfiguracije s stranskimi učinki, ne kot preizkus, ki ga lahko izvedete brezskrbno.
To tudi izključuje izklapljanje in vklapljanje vsakič, ko odjemalec ne doseže gostitelja. Če je vrednost že enica, je napaka drugje na poti, in pisanje istega ključa tretjič ga ne bo premaknilo.
Dokažite trajnost in nato preizkusite preostanek poti
Preberite vrednost nazaj v štirih trenutkih: takoj po spremembi, potem ko se pojavi vmesnik VPN, po ponovni povezavi in po načrtovanem ponovnem zagonu. Vrednost, ki se vrne na kateri koli od teh točk, ima drugega lastnika, in še en enkratni zapis to samo skrije do naslednjega zagona.
Omogočeno posredovanje še vedno pušča tri stvari za preverjanje. Odjemalec potrebuje pot do cilja, prehod potrebuje nadaljnjo pot in dovoljenje za njeno uporabo, cilj pa potrebuje povratno pot do naslova odjemalčevega tunela. Zasebni usmerjeni LAN samodejno ne potrebuje NAT, zato ne dodajajte masquerading, dokler ne veste, katera od treh stvari manjka, in preizkusite z predvidenega odjemalca, ne s prehoda samega, ker se zahteva, ki nastane na prehodu, nikoli ne dotakne poti posredovanja, ki ste jo pravkar omogočili. IPv6 ima svojo politiko posredovanja in usmerjanja, zato delujoč preizkus IPv4 o njej ne pove ničesar.
V runbooku imejte skupaj pot drop-in, lastnika imenskega prostora in ukaz za ponovno branje. Kdor to prevzame naslednji, mora znati prebrati vrednost, videti, kdo jo ima, in v minuti odločiti, ali je težava v trajnosti ali v preostanku poti.