VPN klijent briše vašu dodanu rutu? Koristite tablicu pravila
Klijent ponovno nameće rute koje posjeduje, pa ručno dodani unos nestaje za nekoliko sekundi. Stavite izuzetak u tablicu pravila s prioritetom pravila koje pobjeđuje.
Jedna /24 za laboratorijski pisač nestaje između dva poziva ip route show, a klijentov dnevnik samo kaže da se mreža promijenila. Ništa nije bilo pogrešno s naredbom, prefiksom ni vašim privilegijama. Korporativni klijent koji posjeduje model usmjeravanja hosta ponovno nameće taj model kad god ga netko drugi uredi, pa se unos koji ste dodali uklanja kao uljez. Borba s njim u istoj tablici je gubitnička pozicija. Rješenje je potpuno prestati natjecati se za tu tablicu i staviti izuzetak tamo gdje monitor nikad ne gleda.
Monitor objašnjava nestalu rutu
Dokažite to prije nego što bilo što redizajnirate: pročitajte tablicu, dodajte prefiks, pričekajte nekoliko sekundi, pročitajte ponovno. Ako unos nije prisutan, a niste ništa upisali da biste ga uklonili, neki agent nadzire. Pronađite proces koji posjeduje to ponašanje i pročitajte njegov dnevnik oko trenutka kad ruta nestane, jer ista usluga obično održava tunel, paketne filtre i konfiguraciju razrješivača. Ubijanje tog procesa da bi ruta ostala je trampa zbog koje ćete zažaliti pri sljedećem ponovnom povezivanju.
ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route showPrefiks i sučelje iznad su rezervirani primjeri. Kopiranje naziva sučelja iz radnog primjera na drugom računalu najčešći je razlog zašto ova demonstracija ne daje baš ništa.
Druga tablica je nevidljiva monitoru
Agent ponovno gradi samo tablicu koju posjeduje. Dajte izuzetku vlastitu tablicu plus pravilo koje odgovarajuće odredišta šalje tamo, i glavna se tablica nikad ne mijenja, pa agent nema što ispraviti. To je cijela ideja: jedan prostor naziva ruta koji održava netko drugi i jedan koji dotičete samo vi.
Trampa je održavanje. Dva objekta mogu se razilaziti, a položaj pravila na popisu jednako je važan kao i ruta unutar tablice koju odabire.
Izgradite izuzetak, pa neka pobijedi
Stvorite tablicu, instalirajte rutu i dodajte pravilo koje odabire tablicu za to odredište. Prioritet određuje hoće li se vaše pravilo razmotriti prije ili poslije onih koje je klijent umetnuo, a pravilo koje se sortira kasnije nikad se ne dosegne, pa je broj dio dizajna, a ne ukras. Zatim pitajte jezgru što bi zapravo učinila, što je drugo pitanje od onoga što ste konfigurirali.
ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50ip route get razrješava rutu koju bi jezgra koristila, uključujući uređaj i izvorišnu adresu. Ne ispisuje identifikator tablice, pa ga uparite s ip rule show kad trebate potvrditi koja je tablica pobijedila. Zajedno odgovaraju na jedino važno pitanje: napušta li promet prema toj adresi mjesto koje ste namjeravali?
Drugi oblici iste ideje
Uzorak se poopćava kad prestanete razmišljati u odredištima. Lokalna podmreža može ostati dostupna dok tunel zadržava zadanu rutu. Odgovori SSH poslužitelja priključenog na LAN mogu izlaziti kroz sučelje kroz koje su stigli umjesto da nestanu u tunelu. A pravilo temeljeno na sučelju može gurnuti sve što dolazi na bežično sučelje u tunel, dok promet koji host sam generira ostaje na Ethernetu:
ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10Posljednji slučaj odgovara dolaznom sučelju, a ne odredištu, što je drugi tip pravila i drugi mentalni model. Proslijeđeni promet također zahtijeva omogućen net.ipv4.ip_forward, a udaljena strana mora usmjeriti izvorni raspon natrag ili ga prevesti; pravilo na jednom računalu nikad ne stvara drugu polovicu puta.
Tretirajte pravilo kao potrošno
Pravila i rute tablice žive u memoriji. Nakon ponovnog povezivanja uređaj tunela može se preimenovati, dodijeljena adresa može se pomaknuti, a pravilo sa starom vrijednošću tiho prestaje odgovarati. Ponovno primijenite cijelu promjenu iz jedne skripte koja ju posjeduje, zatim ponovno provjerite ip rule show, trenutačni naziv uređaja i svježi ip route get prema stvarnom odredištu prije nego što se pouzdate u izuzetak.
Dvije granice preživljavaju bez obzira na brigu. Klijent još uvijek kontrolira vlastita pravila filtriranja i konfiguraciju razrješivača, a izuzetak usmjeravanja ne nadjačava ni jedno ni drugo. Ako klijent također izbriše vaše pravilo, podržani putovi su njegova vlastita politika podijeljenog tunela ili klijent koji vam dopušta upravljanje rutama, poput OpenConnecta; krpanje dobavljačke binarne datoteke da bi se utišao njegov monitor je obveza održavanja s provjerom integriteta.
Zapišite broj tablice, prioritet i odredište u bilješku pokraj skripte. Inače sljedeća osoba pronađe pravilo koje nadjačava tunel i nema načina saznati zašto.