Зошто VPN сервер зад CGNAT никогаш не прифаќа врски
Адреса 100.64, динамично DNS име што се решава на друго место и нема влезен ракување — еден проблем: NAT на операторот. Потврдете го, потоа препратете го излезниот сообраќај преку реле.
Рутерот пријавува WAN адреса што почнува со 100.72, динамичното DNS име се решава на друга јавна адреса, а VPN серверот на тој рутер никогаш не завршува ракување однадвор. Препраќањето порти е конфигурирано, услугата работи, а тестот од LAN сѐ уште поминува. Во дневникот на рутерот ништо не изгледа како грешка. Таа комбинација е NAT на ниво на оператор и ниту едно правило на огнениот ѕид не може да отвори порта на адреса што ја држи ISP.
Потврдувањето на заедничката адреса трае две минути и спречува една недела промени во конфигурацијата.
Знаците што укажуваат на NAT на операторот
Споредете ја WAN адресата на страницата за состојба на рутерот со адресата што ја пријавува надворешно пребарување. WAN адреса во 100.64.0.0/10 е вообичаениот знак, а приватните опсези 10/8, 172.16/12 и 192.168/16 значат исто. Ако traceroute покажува исто јавно скокање повторено или рано скокање одговара со приватна адреса, меѓу рутерот и интернетот стои уште еден преведувач. Некои ISP ја наведуваат доделената адреса само во клиентскиот портал, затоа извезете ја таа вредност заедно со traceroute.
Менувањето протоколи или порти не помага, зашто проблемот е влезната достапност, а не затворена порта.
Зошто препраќањето и динамичниот DNS не можат да го поправат
Правилото за препраќање порта мапира порта на WAN интерфејсот на рутерот, но влезниот сообраќај никогаш не стигнува до тој интерфејс: ISP прво го преведува и препраќа само она што го дозволува неговата сопствена табела. Објавувањето на заедничката адреса во динамичен DNS ги насочува клиентите кон порта на ISP што ја користат многу претплатници, затоа името се решава, а ракувањето сѐ уште не успева. Hairpin тестовите успеваат зашто рутерот одговара на сопственото правило одвнатре, а UPnP има точно иста слепа точка.
Ни преконфигурирањето на клиентот нема да помогне, бидејќи дефектот се случува пред да се прочита било која поставка на клиентот.
Препраќање преку VPS со јасни рути
Ставете јавна адреса напред со изнајмување на најмалиот VPS што може да го носи сообраќајот, потоа натерајте го домашниот рутер да се поврзе излезно кон него. Излезниот UDP од домашната мрежа поминува низ NAT на операторот, па тунелот се воспоставува одвнатре и VPS станува достапна крајна точка. Домашната страна станува клиент со фиксна адреса на тунелот, а не сервер.
На VPS додадете запис во директориумот специфичен за клиентот за да знае серверот кој партнер ја поседува домашната подмрежа, и додадете соодветна рута во јадрото.
# /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"
Линијата iroute му кажува на OpenVPN кој клиент го прима сообраќајот за домашната подмрежа; линијата route ја става таа подмрежа во табелата на јадрото на VPS за пакетите воопшто да влезат во тунелот. За објавена услуга додадете правило за одредишен NAT што ја препраќа јавната порта на 10.8.0.10 и овозможете net.ipv4.ip_forward.
Тестирајте ја патеката однадвор
Проверете го секое скокање на јавната страна, зашто успешниот тунел не докажува дека услугата е достапна. Состојбата на слушање и фаќањето пакети на VPS разликуваат „ништо не пристигна“ од „пристигна и беше отфрлено“.
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
Ако фаќањето покажува пакети од телефонот, но нема одговор, следна станица е конфигурацијата на серверот или огнениот ѕид. Ако фаќањето не покажува ништо, клиентот сѐ уште решава или праќа на погрешна адреса.
Алтернативи што вреди прво да се проценат
Посветена IPv4 адреса од ISP е најкраткото решение и обично е мала месечна такса. Вградениот IPv6 го отстранува преведувањето на двата краја кога VPN, клиентската мрежа и DNS записите сите го поддржуваат. Mesh слој со рутер за подмрежа во домашната мрежа го постигнува истото препраќање без VPS, но по цена на зависност од координациска услуга.
Изберете го препраќањето кога барањето е стабилен влезен пристап и секое правило треба да остане под ваша контрола. Изберете ја адресата од ISP кога буџетот дозволува и целта е едноставно да престанете да мислите за тоа.