Pridėkite numatytąjį maršrutą per tunelį, ir paties tunelio paketai juo seks. Tada lentelėje bus taisyklė, kuri pati save nugali. Užšifruotas ryšys su serveriu bando keliauti to ryšio, kurį bando užmegzti, viduje.

Du mechanizmai užkerta kelią šiai kilpai. Vienas matomas maršrutų lentelėje, kitas gyvena programos viduje.

Vidinis ir išorinis srautas yra skirtingi sprendimai

Programos paketas patenka į virtualų sąsają ir yra inkapsuliuojamas. Rezultatas – naujas paketas, adresuotas viešajam serverio adresui. Tam paketui reikia maršruto fiziniame tinkle, nes nieko iš jo negali patekti į tunelį.

Abu yra maršrutizavimo sprendimai, ir tik pirmasis priklauso tuneliui. Kai klientas įdiegia numatytąjį maršrutą, apimantį ir serverį, išorinis paketas taip pat sugaunamas.

Simptomai yra momentiniai ir visiški. Rankos paspaudimas baigiasi, o po to niekas nebeplūsta, arba ryšys nutrūksta tą akimirką, kai įdiegiamas maršrutas. Abiem atvejais keepalive nebegali išeiti.

Pirmas variantas: mazgo maršrutas galiniam taškui

Tiesioginis metodas prideda maršrutą serverio adresui per pradinį šliuzą. Tam reikia vienos eilutės. Jį mato kiekvienas, kas skaito lentelę. Jį taip pat lengva paaiškinti pakeitimų įraše.

Jo silpnumas pasireiškia, kai pasikeičia pagrindinis kelias. Išsaugotas maršrutas nurodo šliuzą ir sąsają iš seno tinklo. Po Wi-Fi pakeitimo to šliuzo gali nebūti, o maršrutas lieka, atrodo teisingai ir nieko nedaro.

# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7

# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0

# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7

Mazgo vardas tai apsunkina. Jei galinis taškas yra vardas, kuris išsprendžiamas į kelis adresus, išimtis turi apimti faktiškai naudojamą adresą. Vėlesnė užklausa gali grąžinti tai, ko maršrutas niekada neapėmė.

Antras variantas: apsaugoti lizdą

Kitas metodas niekada neliečia maršrutų lentelės. Klientas pažymi arba apsaugo lizdą, kuriuo keliauja tunelis, todėl operacinė sistema pagal politiką siunčia to lizdo srautą už tunelio ribų. Android šį mechanizmą tiesiogiai teikia VPN programoms. Darbalaukio klientai įgyvendina atitikmenis su ugniasienės žymomis arba priskyrimo įrenginiui iškvietimais.

Privalumas tas, kad išimtis seka ryšį, o ne išsaugotą šliuzą. Tinklo pokytis perrašo pagrindinį kelią, ir apsaugotas lizdas juda kartu, nes niekada nebuvo pritvirtintas prie adreso. Maršrutų lentelė lieka švari.

Kaina yra matomumas. Niekas maršrutų lentelėje nerodo išimties, todėl recenzentas, ieškantis mazgo maršruto, nieko neranda ir gali padaryti išvadą, kad projektas nesaugus. Apsauga gyvena kliento kode ir politikos taisyklėse, kurias tas kodas įdiegia.

Pasirinkimas tarp jų

Pasirinkite lizdo lygmens mechanizmą, kai klientas jį palaiko, nes jis atlaiko tinklo pokyčius, kurie sulaužo pritvirtintą maršrutą. Pasirinkite mazgo maršrutą, kai išimtis turi būti matoma kitiems įrankiams arba kai klientas nesiūlo nieko geresnio.

Nė vienas mechanizmas nepanaikina poreikio, kad serverio adresas apskritai būtų pasiekiamas. Privatus šliuzas turi viešą klausymosi adresą, ir būtent tas adresas turi likti už tunelio. Vidiniais tinklais už jo tampa pasiekiami tik po to, kai atsiranda tunelis.

Kad ir ką pasirinktumėte, laikykite tai prie komponento, kuriam priklauso tunelis. Ranka pridėtas atsitiktinis mazgo maršrutas veikia iki kito tinklo, o paskui tampa rytojaus paslaptingu sutrikimu.

Susiję straipsniai