Које VPN портове отворити на заштитном зиду: протокол по протокол
PPTP захтева TCP 1723 и GRE, L2TP/IPsec захтева UDP 500 и 4500 и ESP, а SSTP, OpenVPN и WireGuard захтевају по један порт. Ево шта треба отворити.
Два одвојена правила одлучују да ли VPN тунел преживљава заштитни зид: порт на који клијент зове и протокол који носи терет. Отворите само прво па се тунел аутентификује, а затим не преноси податке. Минимум је један TCP порт плус GRE за PPTP, два UDP порта плус ESP за L2TP/IPsec и IKEv2, и један порт за SSTP, OpenVPN и WireGuard. Смер, праћење стања и NAT одлучују о осталом.
Почните од порта на који клијент зове
Свака фамилија има улазну тачку коју клијент прво контактира, и управо ту улазну тачку ваше правило дозволе мора да именује. PPTP клијенти се повезују на TCP 1723. L2TP/IPsec започиње IKE на UDP 500 и прелази на UDP 4500 када се користи NAT traversal, а сам L2TP оквир је на UDP 1701 унутар тунела. SSTP умотава сесију у TLS на TCP 443, IKEv2 преговара на UDP 500 и 4500, OpenVPN подразумевано користи UDP 1194 али се често премешта на TCP 443, а WireGuard слуша на UDP 51820.
| Family | Rule to add on the gateway | Typical mistake |
|---|---|---|
| WireGuard | UDP port from ListenPort, for the peer address | Assuming 51820 when the config says otherwise |
| OpenVPN | The configured UDP or TCP port, often 443 | Opening 1194 after the server moved |
| SSTP | TCP 443 limited to the gateway IP | Allowing 443 to any destination |
| IKEv2 | UDP 500 and UDP 4500, plus ESP | Allowing only 500 and losing NAT-T |
| L2TP/IPsec | UDP 500, 4500, ESP, and 1701 inside the tunnel | Exposing 1701 to the internet |
| PPTP | TCP 1723 and IP protocol 47 | Writing a rule for TCP 47 |
Третирајте те бројеве као подразумеване вредности, а не као фиксна својства. WireGuard интерфејс користи који год порт за слушање његова конфигурација наведе, а OpenVPN сервер може да стоји на било ком порту који је администратор изабрао. Прочитајте конфигурацију сервера пре него што напишете правило, јер заштитни зид отворен за 1194 не чини ништа за сервер премештен на 443.
Трећа колона је место где већина захтева за промену оде наопако. Правило постоји, али показује на погрешно одредиште, погрешан смер или погрешан транспорт.
GRE и ESP су бројеви протокола, не портови
GRE и ESP уопште немају портове, па образац заштитног зида који прихвата само бројеве портова не може да их изрази. GRE је IP протокол 47, а ESP IP протокол 50, и оба се упарују преко поља протокола у IP заглављу. Правило написано као TCP порт 47 не упарује ништа, и тако PPTP политика изгледа исправно и ипак одбацује сваки пакет после руковања.
Кућни рутери крију то иза поља за пропуштање које инсталира правило протокола и, за GRE, NAT помоћника потребног за мапирање тока. На правом заштитном зиду протокол додајете сами: дозволите IP протокол 47 ка PPTP серверу, дозволите IP протокол 50 ка IPsec гејтвеју. Где платформа не нуди поље протокола, излаз је инкапсулација, зато IKEv2 може да се врати на UDP 4500 и зато OpenVPN и WireGuard никада не наилазе на проблем.
Проверите шта правило заиста упарује пре него што окривите клијента. Бројач пакета који на гејтвеју остане на нули каже да правило никада није активирано, и никакво поновно инсталирање на страни клијента то не мења.
Смер, стање и NAT мењају одговор
Клијент који зове ка споља и гејтвеј који слуша ка унутра су различити захтеви, а иста листа портова може бити исправна у једном смеру и погрешна у другом. Заштитни зид са стањем прати UDP ток на 500 и 4500 и пропушта одговоре назад без другог правила. ESP и GRE не носе портове, па NAT уређај нема шта да ухвати и треба му помоћник или инкапсулација да прати сесију.
NAT traversal је део који се пропушта. IKEv2 почиње на UDP 500, открије NAT уређај и наставља на UDP 4500, па политика која дозвољава само 500 даје тунел који се успостави и онда утихне. L2TP/IPsec ради исти покрет. Ако ваше снимање показује прву размену али не и сталан саобраћај, потражите правило које стаје на 500.
Забележите смер уз свако правило. „Дозволи UDP 4500“ не значи ништа док не кажете одакле докле, а правило исправно за клијента у покрету обично је погрешно за локал-уз-локал партнера.
Проверите сваку путању снимањем
Покрените снимање на гејтвеју, не на клијенту: клијент бележи само оно што је стигло. Ови филтери покривају горе наведене фамилије и показују која фаза недостаје:
sudo tcpdump -ni any tcp port 1723
sudo tcpdump -ni any udp port 500 or udp port 4500
sudo tcpdump -ni any proto gre
sudo tcpdump -ni any proto 50
Читајте излаз као низ. Када се појави преговарање али не и протокол терета, одбацивање се дешава негде између клијента и гејтвеја. Када се појаве оба а страница и даље не успева, заштитни зид више није осумњичени; погледајте рутирање, DNS или базен адреса који је клијент добио.
На уређају без tcpdump-а исте доказе дају бројачи интерфејса и правила. Бајтови улазе али не излазе на интерфејсу тунела — то упућује на повратну путању, а не на почетно правило дозволе.
Оставите скуп правила који можете да браните
SSTP на TCP 443 не разликује се од обичног HTTPS-а ниједном филтеру заснованом на портовима, и то је смисао када мрежа дозвољава само веб саобраћај. Зато и правило за 443 мора као одредиште да именује гејтвеј, а не цео интернет. Бришите привремена правила од-било-чега-до-било-чега чим тунел проради. Запишите које је правило упарило, број протокола где га има и смер, да следећа особа крене од доказа.
Cloud гејтвеји од тачке до локације чине избор видљивим: преузети профил користи или SSTP на 443 или IKEv2 на 500 и 4500, и треба да отворите само онај који профил заиста изабере. PPTP не вреди изузетка за GRE на модерној мрежи, јер мобилни оператери често одбацују протокол 47 без обзира на ваш заштитни зид. Пре него што затворите захтев, потврдите да правило одговара порту у конфигурацији сервера, да је поље протокола постављено где фамилија то тражи и да је одредиште гејтвеј, а не било која адреса.