Тригер на порт срещу пренасочване на порт за домашен VPN сървър
Тригерът отваря съпоставяне след изходящ трафик; пренасочването съпоставя порта за постоянно. Домашният VPN сървър се нуждае от второто, ограничено до реалния слушател.
Пренасочването на порт и тригерът на порт стоят в едно и също меню на повечето домашни рутери и затова се третират като два начина за една и съща работа. Пренасочването е статично правило: входяща връзка към WAN порт се преобразува към фиксиран вътрешен адрес и порт, независимо дали нещо друго се случва. Тригерът е условен: рутерът следи изходящия трафик и отваря входящо съпоставяне само след като излезе съответстваща връзка. VPN сървърът чака първо някой друг да се свърже, така че точно това условие е единственото, което той никога не може да изпълни.
Две правила с различни жизнени цикли
IPv4 NAT пази състояние. Когато вътрешен хост изпрати пакет навън, рутерът създава съпоставяне, за да намерят отговорите пътя обратно; входящ пакет, който не съответства на никое съпоставяне, се изхвърля и точно това държи необновен настолен компютър извън интернет. Пренасочването е постоянен запис за преобразуване, добавен на ръка. Тригерът е временна дупка, пазена от модел на трафика.
Практическата разлика е времето. Пренасочването съществува от момента на запазване, докато някой го изтрие. Задействаното съпоставяне съществува след задействане на тригера и се затваря по таймер за бездействие, измерван в минути при потребителски хардуер, или веднага при рестарт.
Нито едно от двете не е по-сигурно по същество. Пренасочването излага един порт непрекъснато; тригерът го излага само след определен изходящ трафик. За услуга, която трябва да приеме първия пакет от непознат, само едно от двете отговаря на задачата.
Защо тригерът няма да публикува сървър
VPN сървърът е пасивен по дизайн. Партньорът, дали лаптоп в кафене или телефон на мобилни данни, изпраща първия пакет, а рутерът няма съпоставяне за него. Нищо вътре не е започнало трафик към порта на тригера, затова правилото никога не се задейства и връзката умира преди началото на ръкостискането.
Където тригерът изглежда, че работи, нещо друго генерира трафик на порта на тригера: клиент в LAN, сонда за мониторинг или собствените изходящи проверки на сървъра. Тогава съпоставянето се отваря за един хост и се затваря, когато трафикът спре, затова следващият външен партньор отново се проваля, докато първият успех стои в журнала и изглежда като доказателство.
Тригерът също обикновено е за един хост. Много реализации позволяват само на едно вътрешно устройство да държи съпоставянето в даден момент, което е напълно грешно за сървър, който трябва да отговаря на няколко партньора. Функцията е създадена за приложения, които отварят контролна връзка навън и очакват входящи данни на втори порт, и все още пасва на тази форма.
Какво всъщност съпоставя пренасочването
Пренасочването е един запис за преобразуване: WAN порт и протокол към вътрешен адрес и порт. То се нуждае от слушател, който вече работи от другата страна, и от това вътрешният адрес да остане на мястото си. DHCP аренда, която се премести на друга машина, изпраща всеки тунел към грешния хост, тихо, затова създайте резервацията преди правилото.
| Rule | Opens when | Closes when | Fits a VPN listener |
|---|---|---|---|
| Port forward | Saved, at boot | You delete it | Yes |
| Port trigger | Matching outbound traffic | Idle timeout or reboot | No |
Протоколът е по-важен, отколкото формата подсказва. OpenVPN през UDP се нуждае от UDP пренасочване, WireGuard се нуждае от UDP, а данните на IPsec пристигат като ESP, IP протокол 50, който изобщо няма портове. Форма за пренасочване, която приема само TCP или UDP, не може да изрази това, затова IPsec се нуждае от passthrough или статично съпоставяне едно към едно вместо правило за порт.
Слоят над вашия рутер
Пренасочването управлява само преобразуването, което притежавате. Ако WAN адресът не е ваш, какъвто е случаят зад NAT на оператор, където абонатите споделят 100.64.0.0/10, както е описано в RFC 6598, входящата връзка никога не стига до вашия рутер, защото доставчикът е преобразувал първи. Никое правило на устройството ви не може да поправи този ред.
Двойният NAT е същият проблем в миниатюра. Вашият рутер пренасочва към рутера на доставчика, който няма съответстващо правило и изхвърля пакета. Или добавете правилото на външното устройство, или превключете външното устройство в режим на мост и оставете вашето да държи публичния адрес.
Затова тестът трябва да идва отвън. Тест от същия LAN през публичния адрес зависи от поддръжка на hairpin NAT и може да мине или да се провали по причини, несвързани с правилото; телефон на мобилни данни или приятел в друга мрежа е по-чистата проверка.
Ограничете правилото, после проверете и двете половини
Пренасочете един порт към един адрес. Диапазон, добавен защото първите опити са се провалили, е начинът, по който интерфейсите за управление се озовават в интернет, а слушателят на VPN не се нуждае от публикувана до него администраторска страница на рутера.
Запазете всичко, което вече пазеше този слушател: самоличност чрез сертификат или ключ, хост-файлуол, актуални версии на пакетите. Пренасочването пропуска пакет; удостоверяването решава дали пакетът ще стане тунел, и това са два отделни отказа, когато нещо се обърка.
Проверката има две половини. Ръкостискането трябва да завърши от външна мрежа, а после частен ресурс зад сървъра трябва да отговори през тунела. Пренасочването пропуска връзката на тунела и нищо повече; маршрутизирането и оторизацията за 10.8.0.0/24 са друга настройка на друг екран.
Решете с три въпроса
Три въпроса решават избора по-бързо от всяка сравнителна таблица:
- Свързва ли се нещо отвън като първи пакет? Тогава използвайте пренасочване или релей. Тригерът не може да се отвори без изходящ трафик, който никога няма да съществува.
- Трябва ли дупката да надживее времето на бездействие? Тогава използвайте пренасочване, защото задействаното съпоставяне се затваря по свой график.
- WAN адресът ваш ли е, за да го публикувате? Ако не е, поправете горния слой, преди да редактирате каквото и да е правило.
Ако отговорът на трите въпроса е „не“, какъвто е случаят с лаптоп, който сам се обажда на търговски доставчик, нито едно от правилата не е нужно. Клиентът зад NAT работи, защото сам създава съпоставянето със състояние, и това покрива повечето хора, които четат страница за пренасочване на портове в полунощ.