Ugniježđeni VPN: koji tunel nosi vanjsku vezu?
Unutarnji tunel treba vanjski put do svoje krajnje točke. Dva klijenta pokrenuta u pogrešnom redoslijedu stvaraju sukob ruta, zato prvo popravi ugniježđivanje.
Dva VPN klijenta koji rade istodobno ne stvaraju ugniježđeni tunel; stvaraju dva tunela i svađu oko usmjeravanja. Ugniježđeni tunel postoji kada vezu unutarnjeg klijenta s vlastitim poslužiteljem nosi sam vanjski tunel, a to je raspored koji se gradi namjerno. Ako uspije, unutarnji poslužitelj vidi adresu vanjskog poslužitelja; ako ne uspije, jedan se klijent tiho ponovno poveže oko drugoga. O tome je li ugniježđivanje stvarno ili slučajno odlučuju tri uvjeta.
O ugniježđivanju odlučuju tri uvjeta
Prvi je koja krajnja točka treba koji put. Imenuj adresu unutarnjeg poslužitelja, imenuj adresu vanjskog poslužitelja i izričito navedi da je unutarnji poslužitelj dostupan samo kroz vanjski tunel. Sve ostalo slijedi iz te rečenice, uključujući koje rute pripadaju kojoj tablici.
Drugi je vidiš li put na svakom sloju. Ako jezgru ne možeš pitati koju bi rutu određeno odredište upotrijebilo, zaključuješ lanac iz završnog izlaznog IP-a, a to je upravo dokaz koji ne može razlikovati ugniježđivanje od slučajnosti.
Treći je što se dogodi kada vanjski tunel padne. Unutarnji se tunel može zaustaviti s njim, ponovno povezati preko obične mreže ili ostati blokiran dok se vanjski put ne vrati, a sve tri su obranjive politike. Nisu ista politika, a zadano ponašanje većine klijenata je drugo. Klijent koji ponovno poveže svoju krajnju točku preko fizičke mreže dok pokazuje zdravo povezivanje najčešći je način na koji namjeravani lanac tiho postane dva nepovezana tunela.
Uvjet jedan: koja krajnja točka treba koji put
ip route get 203.0.113.10 izravno odgovara na to pitanje: ispisuje rutu, izvornu adresu i sučelje koje bi jezgra sada upotrijebila za to odredište.
Pokreni ga za unutarnji poslužitelj prije nego što se unutarnji klijent pokrene i još jednom poslije, pa usporedi. Ako se odgovor promijeni s fizičkog sučelja na sučelje vanjskog tunela, ugniježđivanje je u tom trenutku stvarno. Ako se ne promijeni, unutarnji se klijent povezuje izravno, što god ploča govorila. Ponovi za adresu vanjskog poslužitelja, koja se još mora razriješiti preko fizičkog sučelja, jer je ruta koja rekurzivno zahvati obje krajnje točke kvar koji stroj posve odvaja od mreže.
Uvjet dva: pregledaj put na svakom sloju
Odabir rute na suvremenom klijentu više je od glavne tablice. Pravila politike mogu poslati označene pakete u drugu tablicu, klijent može svoj socket vezati uz sučelje, a kontejner ili imenski prostor ima vlastite tablice. ip rule i ip route show table all način su da otkriješ koji je od tih mehanizama u igri.
Klijent koji na vlastiti socket postavlja SO_MARK ili je konfiguriran da se veže uz određeni uređaj zaobilazi zadanu rutu za koju si mislio da si ju uredio. To je značajka, a ne pogreška, i znači da je jedina pouzdana provjera ona koja radi u istom imenskom prostoru kao klijent. Ako klijenti rade u kontejnerima, provjere pokreni u tim kontejnerima, a ne na hostu.
Uvjet tri: što se dogodi kada vanjski tunel padne
Ponašanje pri kvaru zahtijeva odluku, a ne zadanu vrijednost. Zapiši što se mora dogoditi s unutarnjim tunelom kada vanjski nestane, pa neka klijenti to rade.
Mogućnosti su konkretne. Zaustavljanje unutarnjeg klijenta kada vanjski put nestane daje čist lanac i očit prekid. Ako mu dopustiš izravno ponovno povezivanje, dobivaš dostupnost i tiho uklanjaš svojstvo zbog kojeg je lanac izgrađen. Blokiranje do povratka vanjskog puta najstrože je i najzahtjevnije za rad, jer svako zatitraje vanjskog tunela postaje vidljiv incident.
Testiraj sve tri s bezopasnim prometom i namjernim kvarom vanjskog tunela, jer čitanje konfiguracije neće ti reći koju imaš. Ubij vanjski tunel, promatraj što unutarnji klijent radi i ponovno provjeri rutu dok je dolje. Zatim vrati vanjski tunel i potvrdi da se lanac ponovno oblikuje umjesto da unutarnji klijent ostane na izravnom putu koji je u međuvremenu odabrao.
Što ti lanac ne daje
Dodatni slojevi dodaju krajnje točke, ključeve i načine kvara; ne dodaju nikakvo jamstvo anonimnosti i ne sprječavaju vanjskog operatera da vidi da tunel postoji. Svaka tvrdnja o tome od čega ugniježđivanje štiti mora imenovati promatrača od kojeg štiti.
Rezultat je kratak dokument, a ne veza koja radi: koja krajnja točka rabi koji put, što se događa pri vanjskom kvaru i tri naredbe koje pokazuju trenutačno stanje. Dokumentacija strongSwan o prosljeđivanju koristan je izvor o tome kako se promet tunela prosljeđuje između sučelja na hostu Linux. Ponovno pokreni provjere nakon svake nadogradnje klijenta, jer zadane vrijednosti koje su stvorile tvoj lanac nisu ugovor. Ugniježđeni tunel koji ne možeš pregledati glasina je sa statusnim svjetlom.