Zašto net.ipv4.conf.default.forwarding ostavlja tun0 na miru
default.forwarding samo sije nova sučelja, ne i živi tunel. Usporedite ip_forward, predložak i sučelje u namespaceu koji ga posjeduje.
Postavili ste net.ipv4.conf.default.forwarding=1, ponovno pokrenuli VPN, a tunel i dalje odbacuje pakete koje bi pristupnik trebao usmjeravati. Postavka u datoteci izgleda ispravno, a sučelje i dalje javlja da je prosljeđivanje onemogućeno. Ništa nije pokvareno: promijenili ste vrijednost koju nasljeđuju buduća sučelja, a ne onu koju rabi živi tunel.
Prođite ovo na hostu koji posjeduje tunel, u mrežnom namespaceu u kojem tunel doista postoji. Kontejner ili mrežni namespace može držati sučelje dok host pokazuje druge brojeve.
Čitajte tri vrijednosti zajedno
Počnite usporedbom preklopnika na razini pristupnika, predloška za nova sučelja i sučelja koje vas zanima. Zamijenite tun0 stvarnim ulaznim sučeljem i pročitajte i povratno sučelje jer se prosljeđivanje procjenjuje na mjestu gdje paket stiže.
sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.default.forwarding
sysctl net.ipv4.conf.tun0.forwardingČest je rezultat ip_forward = 0, default.forwarding = 1 i tun0.forwarding = 0. Prve dvije ne slažu se o ulozi hosta, a treća pokazuje što sučelje doista radi. Ta kombinacija odgovara hostu koji nikada nije konfiguriran kao usmjerivač, nego je dobio samo vrijednost predloška. Tri broja nisu u proturječju; ona odgovaraju na tri različita pitanja. Ni zapisivanje vrijednosti predloška ne odlučuje o ulozi hosta.
Zašto se pomiče baš globalni preklopnik
net.ipv4.ip_forward je kontrola na razini pristupnika. Njegova promjena ažurira postavke prosljeđivanja po sučelju kao dio iste operacije, zato jedan zapis može natjerati postojeći tunel da počne prosljeđivati. default.forwarding samo sije sučelja koja se inicijaliziraju nakon toga, pa tunel koji je već postojao zadržava vrijednost s kojom je rođen.
Dokumentacija kernela označava ip_forward posebnim iz povezanog razloga: njegova promjena vraća skup drugih IPv4 parametara na zadane vrijednosti za host ili usmjerivač. To ga čini tupim alatom. Postaviti ga jednom u sklopu uspostave uloge pristupnika u redu je; prebacivati ga iznova kao trik za otklanjanje pogrešaka može tiho prepisati konfiguraciju koju ste pažljivo doveli u red.
Vrijednosti po sučelju također postoje s razlogom. Namjerno vođen pristupnik može držati prosljeđivanje isključeno na sučelju koje nikada ne bi smjelo usmjeravati, čak i dok host prosljeđuje drugdje. Zato je važno čitati živo sučelje i zato samo globalna vrijednost nije cijeli odgovor. Takvu iznimku čitajte kao svjesnu odluku i zapišite zašto je to sučelje drugačije. Inače će ga sljedeći inženjer rado "popraviti".
Učinite postavku trajnom na pravom mjestu
Uspješan jednokratni sysctl -w dokazuje da kernel prihvaća vrijednost. Ne preživljava restart, a ni mrežnog upravitelja koji pri ponovnom povezivanju ponovno primjenjuje svoju zamisao o konfiguraciji sučelja. Stavite ulogu pristupnika u sysctl konfiguracijsku datoteku ili u mrežnog upravitelja koji posjeduje host, pa zatim ponovno pokrenite servis koji je primjenjuje.
Redoslijed je važan kod tunela. Ako upravitelj stvara sučelje pri podizanju i primjenjuje prosljeđivanje poslije, sučelje može naslijediti stari default. Restart servisa koji ponovno stvara tunel također je događaj stvaranja i lako se propusti kad unit izgleda zdravo. Provjerite slijed, ne samo konačan sadržaj datoteke.
Pročitajte ponovno iste tri vrijednosti nakon što se VPN ponovno poveže i još jednom nakon restarta. Novo stvoreni tunel novo je sučelje, a novo sučelje uzima default koji vrijedi u trenutku stvaranja. Ako se brojevi mijenjaju kroz te događaje, konfiguraciju primjenjuje nešto što još niste identificirali.
Ne popravljajte ovo pogrešnim alatom
Kad je prosljeđivanje izgledalo pokvareno, iskušenje je isprazniti vatrozid ili dodati masquerading. Ni jedno ni drugo ne rješava preklopnik prosljeđivanja. Stanje prosljeđivanja, dopuštenje za prosljeđivanje, ruta do odredišta i povratni put četiri su odvojena zahtjeva, a samo je prvi sysctl.
Testirajte i ispravnim tokom. Zahtjev upućen na samom pristupniku uopće ne vježba prosljeđivanje; to je lokalno generiran promet. Pitanje je prihvaća li se paket koji dolazi od VPN klijenta ili LAN hosta i usmjerava li se dalje, pa test mora nastati iza pristupnika.
Držite slučaj IPv6 odvojeno
Ovdje je sve IPv4. IPv6 prosljeđivanje, oglasi usmjerivača i ponašanje accept_ra imaju svoje kontrole, a kopiranje ipv4 puta u ipv6 postavku stvara datoteku koja izgleda uvjerljivo i ne radi ništa korisno. Pristupnik s dva stacka treba svjesno konfigurirati oba skupa.
Još jedna provjera: nakon što se vrijednosti slože, potvrdite da je ruta tunela odabrana za odredište i da povratni put postoji. Prosljeđivanje uključeno na sučelju bez rute i dalje je crna rupa, a taj kvar izgleda isto s klijentove strane.