Пун тунел или рута до крајње тачке: како задржати VPN сервер доступним
Тунел путује кроз мрежу коју замењује. Упоредите изузетак руте до хоста са ознаком сокета на нивоу апликације и сазнајте када који од њих закаже.
Додајте подразумевану руту кроз тунел и сопствени пакети тунела ће је следити. Табела тада садржи правило које само себе побеђује. Шифрована веза са сервером покушава да путује унутар везе коју покушава да успостави.
Два механизма спречавају ту петљу. Један је видљив у табели рутирања, други живи унутар апликације.
Унутрашњи и спољашњи саобраћај су различите одлуке
Пакет апликације улази у виртуелни интерфејс и бива инкапсулиран. Резултат је нови пакет адресиран на јавну адресу сервера. Том пакету је потребна рута на физичкој мрежи, јер ништа у њему не сме да уђе у тунел.
Оба су одлуке о рутирању, и само прва припада тунелу. Када клијент инсталира подразумевану руту која покрива и сервер, спољашњи пакет се такође хвата.
Симптоми су тренутни и потпуни. Руковање се заврши и потом ништа не тече, или веза падне у тренутку када се рута инсталира. У оба случаја keepalive више не може да изађе.
Прва опција: рута до хоста за крајњу тачку
Директан приступ додаје руту за адресу сервера кроз првобитни гејтвеј. Потребна је једна линија. Видљива је свакоме ко чита табелу. Такође је лако објаснити у запису о промени.
Њена слабост се појављује када се основна путања промени. Сачувана рута именује гејтвеј и интерфејс из старе мреже. После промене Wi-Fi мреже тај гејтвеј можда не постоји, а рута остаје, изгледа исправно и не ради ништа.
# 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
Име хоста то отежава. Ако је крајња тачка име које се разрешава у неколико адреса, изузетак мора да покрије адресу која се стварно користи. Касније претраживање може да врати нешто што рута никада није покрила.
Друга опција: заштита сокета
Други приступ никада не дира табелу рутирања. Клијент означава или штити сокет који носи тунел, па оперативни систем шаље саобраћај тог сокета изван тунела по политици. Android тај механизам директно излаже VPN апликацијама. Десктоп клијенти имплементирају еквиваленте помоћу ознака заштитног зида или позива за везивање за уређај.
Предност је што изузетак прати везу, а не сачувани гејтвеј. Промена мреже преписује основну путању, а заштићени сокет се креће са њом јер никада није био прикован за адресу. Табела рута остаје чиста.
Цена је видљивост. Ништа у табели рутирања не показује изузетак, па рецензент који тражи руту до хоста не налази ништа и може да закључи да дизајн није безбедан. Заштита живи у коду клијента и у правилима политике која тај код инсталира.
Избор између две
Изаберите механизам на нивоу сокета када га клијент подржава, јер преживљава промене мреже које ломе приковану руту. Изаберите руту до хоста када изузетак мора да буде видљив другим алатима или када клијент не нуди ништа боље.
Ниједан механизам не уклања потребу да адреса сервера уопште буде доступна. Приватни гејтвеј има јавну адресу за слушање и баш та адреса мора да остане изван тунела. Унутрашње мреже иза њега постају доступне само после настанка тунела.
Шта год да изаберете, држите то уз компоненту која поседује тунел. Залутала рута до хоста додата ручно ради до следеће мреже, а затим постаје сутрашњи мистериозни прекид.