Правилата што препраќаат сите порти можат да го проголтаат вашиот WireGuard слушач
Широко правило за препраќање може да ги проголта сопствените WireGuard и SSH слушачи на портата. Изберете тесни правила или одделна јавна адреса, потоа тестирајте ја контролната патека.
Јавна порта веќе извршува WireGuard на UDP 51820, SSH на 22 и една апликација што мора да биде достапна од интернет. Примамливото правило ја препраќа секоја порта до peer-от и ја прогласува работата завршена. На WireGuard порта тоа правило може да го фати транспортот на самиот тунел и да ве заклучи надвор од машината што го завршува. Објавувањето е одлука за рутирање со исклучок за контролната рамнина, а не една линија DNAT.
Јавен влез или влез низ тунел: изберете едно
Објавувањето на услуга создава нова влезна точка на интернет. Тоа не е исто како давање VPN членство на peer, бидејќи посетителот никогаш не влегува во тунелот и портата станува јавно лице на backend-от. Таа разлика ја одредува публиката на правилото и неговиот сертификат.
Административните интерфејси ретко припаѓаат на тоа место. Административната страница до која доаѓаат овластени VPN клиенти ја држи нападната површина внатре во тунелот и избегнува изложување на формулар за најава на произволно скенирање. Јавните крајни точки на апликацијата сè уште бараат сопствен TLS сертификат, автентикација и ограничување на брзината; шифрираниот скок WireGuard не го штити делот на посетителот до портата.
Ако услугата навистина мора да биде јавна, запишете го името на домаќинот, сертификатот што го покрива и опсезите на посетители што треба да го достигнат. Тие три факти подоцна го одредуваат обликот на правилото и политиката за филтрирање. Сè надвор од нив е проширување на опсегот на јавен слушач.
Една порта внатре, еден backend надвор
Користете една јавна порта и една backend услуга. Во овој пример eth0 ја носи јавната адреса 198.51.100.20, адресата на тунелот на портата е 10.200.0.1, а peer-от ја извршува апликацијата на 10.200.0.7. Јавниот TCP 9443 се мапира на TCP 8443 на peer-от:
iptables -t nat -A PREROUTING -i eth0 -d 198.51.100.20 -p tcp --dport 9443 -j DNAT --to-destination 10.200.0.7:8443
iptables -t nat -A POSTROUTING -o wg0 -d 10.200.0.7 -p tcp --dport 8443 -m conntrack --ctorigdst 198.51.100.20 --ctorigdstport 9443 -j SNAT --to-source 10.200.0.1Правилото SNAT се совпаѓа со преведениот backend и оригиналното јавно одредиште, па друга врска до истата backend услуга останува надвор од ова мапирање. Исто така ја крие адресата на посетителот од peer-от, и тоа е компромисот што го прави рутираното враќање со зачувување на изворот одделен дизајн. Референцата за iptables екстензии ги документира двете цели и нивните опции за совпаѓање.
Препраќањето сè уште треба да биде овозможено, а филтерскиот синџир бара дозвола за преведеното одредиште и портата плус воспоставените одговори. Синџирот FORWARD го гледа преведеното одредиште по DNAT, па правило напишано спрема јавната адреса не се совпаѓа со препратениот пакет. Напишете ја дозволата спрема backend торката, не спрема јавната.
Peer-от мора да ја прифати врската на услугата од адресата на тунелот на портата и да го испрати одговорот назад низ тунелот. Неговиот AllowedIPs мора да го овласти изворот што навистина го прима, што при преведување на изворот е адресата на тунелот на портата, и широк запис 0.0.0.0/0 на секој peer не е потребен за овој дизајн. Она што го отфрла повратниот сообраќај е peer чија листа ја испушта таа адреса, или дизајн со зачувување на изворот што наместо тоа ја препраќа адресата на самиот посетител, затоа проверете го изворот што peer-от навистина го гледа, а не оној во вашето правило.
Држете ги сопствените слушачи на портата надвор од правилото
Заменете го совпаѓањето на портата со правило што го покрива секое TCP и UDP одредиште, и сопствениот WireGuard сокет на портата паѓа внатре. Преведувањето на одредиштето се случува пред машината да одлучи дека пакетот е локален, па UDP 51820 може да заврши кај peer-от наместо кај процесот што ја држи секоја peer врска. Правилото се вчитува успешно и тунелот умира, дефект што тешко се чита од страната на peer-от.
SSH, агентите за мониторинг и секоја друга услуга хостирана на портата имаат иста изложеност. Правило што препраќа сè не ја разликува контролната рамнина од објавената апликација, и првото рестартирање по промената е моментот кога заклучувањето станува очигледно. Правилото што фаќа сè не предупредува за услугата што тивко ја презема. Ќе го откриете кога следната врска нема да успее.
Ако широкото препраќање навистина е потребно, резервирајте ги контролните порти пред правилото што фаќа сè или користете одделна јавна адреса за објавување. Втората опција е почиста бидејќи контролната адреса ја задржува сопствената политика, но добавувачот мора да ја достави таа адреса; додавањето DNS запис не доделува една.
Широкото препраќање на TCP и UDP исто така не се сите протоколи. ICMP, IPv6, повратната информација path-MTU и надворешниот VPN транспорт бараат сопствена политика, а правилото што ги покрива TCP и UDP ги остава тие случаи на стандардниот синџир.
Изберете модел пред да пишувате правила
Четири облици покриваат повеќето објавувања од порта, а изборот зависи од тоа колку услуги извршувате и колку ризик во контролната рамнина можете да поднесете. Табелата подолу ги подредува од најтесното кон најширокото.
| Model | What it protects | Cost | Use when |
|---|---|---|---|
| Narrow port forward | Every other listener, including the VPN | One rule per service | Few services, stable ports |
| Catch-all with reserved ports | Ports named in the exception list | Rule order becomes critical | Many services and disciplined review |
| Separate public address | Control address fully isolated | Provider must supply the address | High-value publication |
| VPN-only access | No public entry at all | Visitors need the tunnel | Admin interfaces and internal tools |
Почнете со тесниот модел дури и ако очекувате повеќе услуги подоцна. Најлесно се проверува, а претворањето на збир тесни правила во проверено правило што фаќа сè е поедноставно отколку да откриете кој слушач го фатило широко правило. Кој и модел да изберете, држете ги правилата кај сопственикот на огнениот ѕид. Примената на iptables линии покрај UFW или nftables конфигурација што ги управува истите синџири дава политика што се менува зависно од редот на подигање.
Докажете го и објавувањето и контролната патека
Тестирајте од овластен надворешен клиент користејќи го одобреното име на домаќин и сертификат валиден за него. Потврдете кој backend одговори, потоа проверете дека неповрзаните јавни порти остануваат одбиени. Исклучена проверка на сертификат не е поминат HTTPS тест, а врска што стигнува до погрешен backend е полоша од неуспешна.
Потоа проверете ја самата порта: поврзете WireGuard peer, отворете SSH сесија и потврдете дека мониторингот сè уште известува. Објавената услуга може да работи додека контролната рамнина е расипана, затоа двете проверки припаѓаат на истиот прозорец на промена. Рестартирајте еднаш за да докажете дека правилата повторно се применуваат во очекуваниот ред, потоа отстранете го објавувањето и потврдете дека отстранувањето навистина одговара на додавањето. Голем збир додавања при подигање со нецелосно чистење е начинот на кој привремен тест станува трајна дупка.