Puni tunel ubio je tvoju SSH sesiju: prikuj povratnu rutu
Puni tunel hvata i odgovore na tvoju vlastitu SSH sesiju. Prikuj host rutu za svoju administrativnu adresu kroz stari gateway i ponovo je instaliraj pri ponovnom spajanju.
Pokreni OpenVPN klijent na mašini na kojoj radiš preko SSH, i usred komande sesija se zamrzne. Tunel prijavljuje da je spojen, host dolazi do interneta kroz njega, a tvoji pritisci na tastaturi i dalje stižu dok ništa ne dolazi natrag. Ono što se promijenilo nije tunel: to je povratni put za pakete upućene tebi, koji sada odgovara novoj zadanoj ruti i ulazi u tunel koji udaljeni gateway neće koristiti da dosegne tvoj sto.
Šta redirect-gateway zapravo instalira
U svom def1 obliku, redirect-gateway dodaje 0.0.0.0/1 i 128.0.0.0/1 umjesto da prepiše zadanu rutu. Te dvije polovine pokrivaju cijeli adresni prostor, a obje ostaju duži prefiksi od 0.0.0.0/0, pa svako odredište bez specifičnijeg poklapanja sada ide u tunel. To je mehanizam koji treba zapamtiti, jer svaki popravak ispod radi tako što instalira specifičnije poklapanje.
Tvoja administrativna adresa je jedno od tih odredišta.
VPN server prosljeđuje promet svojih klijenata prema internetu. Nema rutu za javnu adresu s koje se spajaš, niti razlog da te pakete tretira drugačije od prometa koji dolazi od klijenta, pa ih odbacuje. U međuvremenu je zahtjev koji si poslao ipak stigao do hosta, i zato sesija izgleda živa samo s jedne strane.
ip route show table main | head -n 20
ip route get 198.51.100.23Pronađi svoju izvornu adresu i put prije tunela
Na serveru izlistaj uspostavljenu SSH vezu i zabilježi adresu partnera s koje je došla. Ta adresa je ono što tvoja povratna ruta mora pokriti, i nije uvijek ono što misliš: jump host, NAT gateway ili prevodilac operatera mogu podmetnuti drugi izvor.
Zatim pronađi fizički gateway i interfejs koji su nosili promet prije nego što je tunel počeo. U def1 rasporedu zadana ruta je još prisutna ispod polu-zadanih ruta, pa je informacija dostupna, iako čitanje dugačke tablice ruta na oko poziva na greške.
Zabilježi obje vrijednosti i ime interfejsa zajedno, jer ruta koju ćeš dodati treba sve tri. Ako je host koristio pravilo rutiranja po politici da odabere svoj uplink, obična ruta možda uopće neće biti razmotrena, i ta mogućnost mijenja popravak.
Prikuj host rutu koja nadjačava polu-zadane rute
Ruta /32 je duža od bilo koje polu-zadane rute, pa odgovori na tvoju adresu nju biraju umjesto tunela. Sljedeći hop je gateway prije tunela, a uređaj je fizički interfejs, što drži paket na putu koji je koristio prije nego što je tunel postojao.
ip route add 198.51.100.23/32 via 203.0.113.1 dev eth0Provjeri pretragom umjesto pregledom tablice: odgovor mora imenovati eth0 i gateway, nikada tun0.
OpenVPN već dodaje host rutu prema vlastitoj adresi VPN servera iz istog razloga, pa je obrazac poznat i administrativna adresa je jednostavno još jedna iznimka. Ne poseži za route-nopull da to popraviš, jer odbacuje gurnute rute koje tunel treba, uključujući udaljenu mrežu i DNS opcije.
Učini da preživi ponovno spajanje
Ruta dodana ručno nestaje kada se klijent ponovo spoji i instalira svoju, što popravak pretvara u ponavljajući prekid. Prikači komandu na nešto što se izvršava nakon instalacije ruta.
I route-up skripta i pre-up kuka mrežnog menadžera rade, a pouzdana provjera je ponovno spajanje praćeno istom pretragom.
Na Windowsu je ekvivalent trajna ruta dodana s -p, koja preživljava restarte ali i dalje mora pokazivati na ispravan gateway nakon promjene mreže. Bez obzira na platformu, napiši razlog pored rute: sljedeći administrator mora znati da postoji radi zaštite sesije upravljanja, a ne zato što je dizajn mreže to zahtijevao.
Kada prikovana ruta još uvijek nije dovoljna
Filtriranje povratnog puta može odbaciti paket koji dolazi na jedan interfejs i izlazi kroz drugi, a upravo to prikovana ruta stvara. Provjeri efektivnu vrijednost rp_filter prije nego što bilo šta globalno isključiš, i radije popravi asimetriju nego da isključiš provjeru. Primjenjuje se postavka po interfejsu, a loose režim često samo bilježi asimetriju umjesto da odbaci paket. Pročitaj oboje prije nego zaključiš da je filter tvoja krivica.
Hostovi s rutiranjem po politici trebaju pravilo kao i rutu, jer baza pravila bira tablicu prije nego što se ruta unutar nje razmotri. Ruta u tablici main nevidljiva je toku koji odgovara pravilu koje pokazuje na drugu tablicu. Pročitaj pravila prije nego što bilo šta dodaš u main. Ako pravilo već pokriva promet upravljanja, iznimka pripada tablici tog pravila.
Drži vanpojasnu konzolu otvorenom dok testiraš, i ponovo provjeri s druge prijave prije nego što isključiš onu koju koristiš. Ruta koja tvoj vlastiti promet upravljanja šalje u tunel presijeca vezu kroz koju je popravljaš. Vraćanje unutra tada znači serijsku konzolu ili spasilačko podizanje, što je loša trampa za preskakanje jednog koraka provjere.