Naslednji skok na poti VPN: zakaj mora biti prehod lokalno dosegljiv
Naslov via poti mora biti dosegljiv na povezavi, s katere pošiljate. Spremljajte predajo, preverite iskanje in preizkusite z gostitelja, ki ima promet.
Pot v omrežje VPN nosi dva naslova, ki ju je lahko zamenjati: predpono cilja, ki ga paket skuša doseči, in naslednji skok, ki ga bo premaknil korak bliže. Na gostitelju LAN mora biti ta naslednji skok usmerjevalnik, do katerega na isti povezavi res lahko pridete. Oddaljeni naslov VPN ni naslednji skok, pa naj se še tako natančno ujema s ciljem, ki ga imate v mislih.
Ta priročnik pokriva običajen primer: prenosnik na 192.168.20.0/24, prehod VPN z naslovom LAN 192.168.20.5 in oddaljeno omrežje 10.70.0.0/24 za tem prehodom. Vsi spodnji ukazi predpostavljajo, da ste na prenosniku, razen če je navedeno drugače.
Dva naslova, ena pot
Predvideni vnos je 10.70.0.0/24 via 192.168.20.5. Predpona pove, kam gre paket; naslov via pove, kdo ga nosi tja. Jedro zavrne namestitev poti, katere prehoda ne more doseči prek vmesnika, ki ga navedete, in ta zavrnitev je ves smisel: naslednji skok, ki za dosegljivost potrebuje tunel, ne more biti naslednji skok, ki tunel gradi.
Zato prvo preverjanje ni «ali prehod deluje», ampak «ali je prehod na tej povezavi». Lastna podomrežja prenosnika, njegov vnos ARP ali soseda in vmesnik na poti se morajo ujemati. Naslov, ki obstaja samo znotraj 10.70.0.0/24, je lahko cilj druge poti, nikoli pa via prve.
H čemu naslednji skok zavezuje prehod
Namestitev poti na prenosniku odloči le prvo predajo. Nato prehod potrebuje svojo pot: omogočeno posredovanje, tunelska pot za 10.70.0.0/24 in vsaka politika dostopa, ki določa, kdo jo sme uporabljati. V Linuxu je to net.ipv4.ip_forward=1 plus tunelska pot; požarni zid pred njim potrebuje pravilo, ki dovoli posredovani tok.
Povratna smer je del, ki ga ljudje pozabijo. Oddaljena stran mora imeti pot nazaj v 192.168.20.0/24, ali pa mora zasnova prevesti vir prenosnika v nekaj, kar oddaljena stran pozna. Delujoč ping s prehoda dokazuje, da prehod doseže oddaljeno omrežje; ne pove ničesar o tem, ali paketi prenosnika preživijo pot nazaj.
Preverite iskanje z gostitelja, ki pošilja
Vprašajte jedro, kateri naslednji skok bi izbralo, in preberite vmesnik v odgovoru:
ip route get 10.70.0.10
ip route show 10.70.0.0/24
ip neigh show 192.168.20.5
Če iskanje poroča o prehodu in vmesniku LAN, je prvi odsek konfiguriran po načrtu. Če poroča o tunelski napravi, je nekaj prej v tabeli bolj specifično in zmaguje. Če se pot sploh ne namesti, vam jedro sporoča, da prehod ni dosegljiv, in to sporočilo je bolj uporabno kot vsak zajem paketov.
Nato poskus ponovite s pravega mesta. Zahteva, ustvarjena na prehodu, uporablja lastni izvorni naslov prehoda, kar lahko skrije manjkajočo povratno pot ali politiko, ki dovoli le določene vire. Priročnik ip-route loči cilj, prehod in prepis onlink, in prepis je vredno razumeti, preden ga uporabite.
Ne uporabljajte onlink za hlinjenje dosegljivosti
onlink pove jedru, naj preskoči preverjanje dosegljivosti prehoda in vseeno pošlje tja. Ne ustvari poti, ne razreši ARP za naslov, ki ga ni, in ne prisili oddaljenega usmerjevalnika, da odgovori na vašem segmentu Ethernet. Zakonit je za prehode, ki odgovarjajo, a niso v povezanem podomrežju, in je past, kadar se uporabi za utišanje napake, ki je niste pojasnili.
Če se pot namesti le z onlink, je naslednje vprašanje, zakaj prehoda ni tam, kjer mislite. Napačen VLAN, drugi naslov na napačnem vmesniku ali tipkarska napaka v zadnjem oktetu vse to povzročijo, in vsak od njih tudi zlomi povratno pot, ko promet začne teči.
Tuneli točka-točka niso Ethernet
Tunelska naprava ne izvaja ARP in pogosto nima smiselnega podomrežja sosedov. Njene poti so pogosto videti kot 10.70.0.0/24 dev tun0, brez kakršnegakoli via, ker je partner edina druga končna točka. Kopiranje via v slogu LAN v to tabelo ustvari pot, ki jo jedro lahko zavrne ali, še huje, tako, ki kaže na naslov, na katerega partner nikoli ne odgovori.
V priročniku imejte oba modela ločena: pot LAN ima dosegljiv prehod, tunelska pot ima vmesnik in partnerja. WireGuard, OpenVPN in IPsec vsi kažejo nekoliko drugačne oblike, zato zapišite obliko, ki ste jo res uporabili, namesto da posplošujete z enega gostitelja.
Dodajte, potrdite, povrnite
Celotna sprememba so trije ukazi in eno preverjanje, in zapisati jo je treba v tem vrstnem redu:
sudo ip route add 10.70.0.0/24 via 192.168.20.5
ip route get 10.70.0.10
ping -c 3 10.70.0.10
sudo ip route del 10.70.0.0/24 via 192.168.20.5
Potrdite pot, potrdite en cilj in nato imejte vrstico za brisanje pripravljeno, če bi sprememba naredila gostitelja nedosegljivega na način, ki ga niste predvideli. Če mora pot preživeti ponovni zagon, jo vstavite v omrežno konfiguracijo gostitelja in ne v profil lupine, ter preizkusite ponovni zagon, preden se nanjo zanesete. Pot, ki obstaja le v lupini, ki jo je dodala, je pot, ki jo boste razhroščevali dvakrat.