Еден OpenVPN порт, три услуги: зошто внатрешните портови се важни
Еден тунел, три услуги, еден јавен порт. Одделете го надворешниот VPN слушач од внатрешните портови на апликациите, потоа тестирајте ја секоја внатрешна дозвола одделно.
Една SSH сесија, една веб-апликација и едно пребарување на имиња можат да делат една VPN врска без борба за портови. Клиентот гради еден шифриран тек кон гејтвејот, и секој разговор на апликацијата патува внатре во него. Однадвор се видливи само транспортот и портот на самиот тунел. Внатре, секоја услуга го задржува својот порт и сѐ уште бара своја дозвола.
Што носи надворешниот тек и што крие
Клиентот го завиткува секој пакет во транспортот на тунелот пред тој да ја напушти машината. Тој надворешен тек има еден одредишен порт, фиксиран кога VPN-от бил конфигуриран. Внатре во обвивката, секој оригинален пакет ја задржува адресата и портот на услугата кон која е наменет. Гејтвејот ја отстранува обвивката и рутира според внатрешното заглавие, така што одредиштето гледа обичен клиент што пристигнува од мрежата.
Затоа снимање на WAN интерфејсот покажува еден разговор, не три. Внатрешните портови се појавуваат само по декапсулацијата. Затоа едно отворање на огнениот ѕид може истовремено да носи SSH, HTTPS и DNS.
# WAN side: one outer tuple, whatever the inner services are
tcpdump -ni wan0 'udp port 443'
# tunnel side: the inner tuples appear after decapsulation
tcpdump -ni tun0
Документацијата за TUN/TAP опишува предавање при кое рутиран TUN уред пренесува IP пакети меѓу јадрото и процес во кориснички простор. Токму тоа предавање го прави внатрешното заглавие видливо за рутирањето и кодот на огнениот ѕид на гејтвејот. Исто така објаснува зошто надворешниот порт не кажува ништо за тоа кои услуги се дозволени.
NAT пренасочувањето и припаѓа на слушачот, не на апликациите
Самостојно хостиран гејтвеј зад IPv4 NAT бара едно влезно преведување: јавната адреса и портот се мапираат на VPN слушачот. Не е потребно правило за SSH, HTTPS или DNS само затоа што корисниците на тунелот ги достигнуваат. Објавувањето на тие портови би ги изложило услугите што тунелот веќе ги штити. Правилото за пренасочување опишува достапност на слушачот, а не дозвола за нешто внатре.
Важи и обратното. Отворањето на портот на тунелот не изложува ништо друго, така што услуга достапна само преку тунелот ја држи својата јавна површина затворена. Тоа одделување обично е причината услугата да се држи приватна.
Внатрешната политика е местото каде пристапот навистина се одлучува
Шифрирањето го штити патот; тоа не го овластува одредиштето. Клиентските рути избираат кои префикси влегуваат во тунелот, политиката за пренасочување на гејтвејот одлучува дали пакетите смеат да го напуштат, а огнениот ѕид и најавата на одредиштето одлучуваат дали услугата ќе одговори. DNS е најјасниот случај: пренесувањето на прашања не прави резолверот да ги прифати од вашиот клиентски базен. Секој слој може да каже не независно.
Тестирајте ја секоја услуга одделно низ тунелот. Успешното пребарување не кажува ништо за веб-портот, а успешното веб-барање не кажува ништо за SSH.
dig @10.40.0.53 app.corp.example
nc -vz 10.40.0.10 8443
ssh -p 2222 [email protected]
Кога тунелот е активен, а сѐ не успева, прво прочитајте ја рутирачката табела на клиентот. Кога една услуга не успева додека другите работат, грешката е на тоа одредиште. Овие две набљудувања покажуваат на различни сопственици, а нивното мешање троши време.
WireGuard ја повлекува истата линија
WireGuard својот надворешен слушач го именува со ListenPort, а внатрешната апликација сѐ уште го користи портот на услугата што ѝ е потребен. AllowedIPs е множество рутирани префикси, а не список на дозволени портови на услуги. Читањето како список на дозволени портови дава правила што не одговараат на она што го прави тунелот. Именувањето е различно; раслојувањето не е.
Дозволете ја услугата во политиката за локален влез кога работи на самата крајна точка, или во политиката за пренасочување кога се наоѓа зад таа крајна точка. Разликата одредува кој сет правила го гледа пакетот.
Општата форма е еден надворешен транспорт со многу внатрешни разговори. Производите на кои им требаат неколку надворешни размени или друг IP протокол се потсетник дека моделот со еден јавен порт го опишува овој дизајн, а не секој VPN.