Dlaczego serwer VPN za CGNAT nigdy nie przyjmuje połączeń
Adres 100.64, dynamiczna nazwa DNS rozwiązująca się gdzie indziej i brak przychodzącego uścisku dłoni to jeden problem: NAT operatora. Potwierdź to, a następnie przekaż ruch wychodzący przez przekaźnik.
Router zgłasza adres WAN zaczynający się od 100.72, dynamiczna nazwa DNS rozwiązuje się na inny adres publiczny, a serwer VPN na tym routerze nigdy nie kończy uścisku dłoni z zewnątrz. Przekierowanie portów jest skonfigurowane, usługa działa, a test z sieci LAN nadal przechodzi. W dzienniku routera nic nie wygląda na błąd. Ta kombinacja to NAT klasy operatorskiej i żadna reguła zapory nie może otworzyć portu na adresie, który trzyma ISP.
Potwierdzenie współdzielonego adresu zajmuje dwie minuty i zapobiega tygodniowi zmian konfiguracji.
Oznaki wskazujące na NAT operatora
Porównaj adres WAN na stronie statusu routera z adresem zgłaszanym przez zewnętrzne zapytanie. Adres WAN w zakresie 100.64.0.0/10 to zwykła oznaka, a prywatne zakresy 10/8, 172.16/12 i 192.168/16 znaczą to samo. Jeśli traceroute pokazuje ten sam publiczny skok wielokrotnie albo wczesny skok odpowiada adresem prywatnym, między routerem a internetem stoi jeszcze jeden translator. Niektórzy ISP podają przydzielony adres tylko w portalu klienta, więc wyeksportuj tę wartość razem z traceroute.
Zmiana protokołów lub portów nie pomaga, bo problemem jest osiągalność ruchu przychodzącego, a nie zamknięty port.
Dlaczego przekierowanie i dynamiczny DNS tego nie naprawią
Reguła przekierowania portu mapuje port na interfejsie WAN routera, ale ruch przychodzący nigdy nie dociera do tego interfejsu: ISP najpierw go tłumaczy i przekazuje tylko to, na co pozwala jego własna tablica. Publikowanie współdzielonego adresu w dynamicznym DNS kieruje klientów na bramę ISP używaną przez wielu abonentów, dlatego nazwa się rozwiązuje, a uścisk dłoni nadal zawodzi. Testy hairpin przechodzą, bo router odpowiada na własną regułę od środka, a UPnP ma dokładnie ten sam martwy punkt.
Ponowna konfiguracja klienta też nie pomoże, ponieważ awaria następuje, zanim odczytane zostanie jakiekolwiek ustawienie klienta.
Przekazywanie przez VPS z jawnymi trasami
Postaw z przodu publiczny adres: wynajmij najmniejszy VPS, który udźwignie ruch, a następnie spraw, by router domowy połączył się z nim wychodząco. UDP wychodzące z sieci domowej przechodzi przez NAT operatora, więc tunel powstaje od środka, a VPS staje się osiągalnym punktem końcowym. Strona domowa staje się klientem ze stałym adresem tunelu, a nie serwerem.
Na VPS dodaj wpis katalogowy właściwy dla klienta, aby serwer wiedział, który peer posiada podsieć domową, i dodaj odpowiednią trasę jądra.
# /etc/openvpn/server/ccd/home-site.conf ifconfig-push 10.8.0.10 255.255.255.0 iroute 192.168.50.0 255.255.255.0 # server.conf client-config-dir /etc/openvpn/server/ccd route 192.168.50.0 255.255.255.0 push "route 10.8.0.0 255.255.255.0"
Linia iroute mówi OpenVPN, który klient odbiera ruch dla podsieci domowej; linia route umieszcza tę podsieć w tablicy jądra VPS, aby pakiety w ogóle weszły do tunelu. Dla opublikowanej usługi dodaj regułę NAT docelowego, która przekierowuje publiczny port na 10.8.0.10, i włącz net.ipv4.ip_forward.
Przetestuj ścieżkę z zewnątrz
Sprawdź każdy skok po stronie publicznej, bo udany tunel nie dowodzi osiągalności usługi. Stan nasłuchu i przechwytywanie pakietów na VPS oddzielają „nic nie dotarło” od „dotarło i zostało odrzucone”.
ss -lunp | grep 1194 tcpdump -ni any udp port 1194 nft list ruleset | grep -A4 dnat # from a phone on mobile data, not the home Wi-Fi nc -vz -u 203.0.113.10 1194
Jeśli przechwytywanie pokazuje pakiety z telefonu, ale nie ma odpowiedzi, następnym przystankiem jest konfiguracja serwera lub zapora. Jeśli przechwytywanie nic nie pokazuje, klient nadal rozwiązuje nazwę lub wysyła na zły adres.
Alternatywy warte wycenienia w pierwszej kolejności
Dedykowany adres IPv4 od ISP to najkrótsze rozwiązanie i zwykle niewielka opłata miesięczna. Natywny IPv6 usuwa tłumaczenie na obu końcach, gdy VPN, sieć klienta i rekordy DNS go obsługują. Nakładka mesh z routerem podsieci w sieci domowej daje ten sam przekaźnik bez VPS, ale kosztem zależności od usługi koordynacyjnej.
Wybierz przekaźnik, gdy wymogiem jest stabilny dostęp przychodzący i każda reguła ma pozostać pod twoją kontrolą. Wybierz adres ISP, gdy budżet pozwala, a celem jest po prostu przestać o tym myśleć.