VPN серверін жаңа жария IP-ге көшіру: алдымен нені тексеру керек
Орнында ауыстыру мен қатарлас көшу әр жерде бұзылады. Конфигурацияларды, NAT пен сертификаттарды қарап шығып, әр клиенттің атауды қалай шешетінін тексеріңіз.
Мекенжайды қайта тағайындау бір минут алады. Келесі апта — көшіру бұзылатын жер, және провайдер консолі меңзеген жерде сирек. Жаңа жария IP төрт жерде көрсетіледі: демон тыңдайтын сокет, клиенттер тексеретін сенім тірегі, ескі мекенжайды атайтын әрбір ереже және оларды байланыстыратын DNS жазбасы. Екі көшіру басқару тақтасынан бірдей көрінеді, бірақ мүлде басқаша әрекет етеді: өзіңіз басқаратын машинада мекенжайды қайта тағайындау немесе екінші endpoint тұрғызып, клиенттерді соған көшіру. Төмендегі тексерулер арзан сәтсіздіктерді алдыңғы қатарға қояды, және әр бөлім қай көшіруге қатысты екенін айтады.
Орнында ауыстыру мен қатарлас көшу — түрлі жұмыстар
Орнында ауыстыру хостты, кілттерді, маршруттау кестесін және пайдаланушылар тізімін сақтайды; тек мекенжай өзгереді. Мұны қалқымалы IP-ні қайта тағайындау жасайды, және бірнеше провайдерде қонақ бұны мүлде байқамайды, себебі аударма инстанстың алдында жүреді. Қайта құру немесе провайдердің қайта тағайындауы неғұрлым қатал: қонақ өзгерісті көреді, және ескі мәнді кэштегеннің бәрі оны сол сәтте біледі.
Қатарлас endpoint — сол жұмысты атқаратын екінші хост. Оны құрыңыз, бір профильмен сынаңыз, және жаңасы нақты жолда өзін дәлелдегенше ескісі жауап беріп тұрсын. Бағасы — күй. Ортақ peer жазбалары, кері қайтарулар және логтау жоқ болса, кездейсоқ бір атауды бөлісетін екі желіңіз бар.
| Question | In-place swap | Parallel endpoint |
|---|---|---|
| Rollback in one step? | Only if you can get the old address back | Point DNS back; old host still up |
| Blast radius | Every client at once | Only the clients you moved |
| Best when | The address is yours to reassign | The old address is gone for good |
Ескі мекенжай жазылған барлық орынды табыңыз
Мәтіндік іздеуден бастаңыз, өйткені конфигурация файлдары — жеңіл жартысы. Демон конфигурациясынан, файрвол үзінділерінен, мониторинг мақсаттарынан және дискідегі кез келген генерацияланған клиент бумасынан іздеңіз. IPv6 мекенжайын да қосыңыз, егер оны жарияласаңыз; тек A жазбасын ғана қадағалайтын көшіру қос стекті клиенттерді ескі жолда қалдырады.
OLD=203.0.113.10
grep -RIn -- "$OLD" /etc /root
ss -lunpt | grep -F "$OLD"
nft list ruleset | grep -F "$OLD"
iptables-save | grep -F "$OLD"
wg show all endpoints
Сосын ядроны қарап шығыңыз, өйткені жұмыс істеп тұрған жүйе мекенжайды ешбір файл атамайтын жерлерде ұстайды. Статикалық көз NAT ережесі, ipset жазбасы, bind мекенжайы және conntrack жазбасы оларды жойған конфигурация өзгерісінен ұзағырақ өмір сүреді, ал кейбіреуі сақталған ережелер жиынтығынан қайтып келгендіктен қайта жүктеуден де өтеді. Бір қабат жоғарыда провайдердің қауіпсіздік топтары, жүктеме теңгерушісінің мақсаттары және мониторинг тексерулері сіздің файлдық жүйеңізде мүлде жоқ.
Бірдеңені өзгертуден бұрын түгендеуді жазып қойыңыз; ол қайтару сценарийі ретінде де жарайды.
Хост атауымен келетін клиенттер қалпына келеді; литералды IP клиенттері үнсіз қалады
Клиенттер серверге хост атауы арқылы жетсе, көшу негізінен DNS мәселесі, және кеше қойған TTL қаншалықты нашар болатынын шешеді. Шешушілер кэштейді, stub шешушілер тағы кэштейді, және көптеген клиенттер атауды тек жаңа қосылымда іздейді, сондықтан орнатылған туннель бастапқы мекенжайын сақтайды.
Егер endpoint литералды мекенжай болса, ештеңе қайта шешілмейді және ештеңе шағымды тіркемейді. WireGuard шешілген сокет мекенжайын сақтайды: Endpoint = vpn.example.net:51820 wg-quick up іске қосылған сәтте IP-ге айналады және сіз оны өзгертпейінше сол IP болып қалады. OpenVPN неғұрлым жұмсақ: ол remote хост атауын қосылу кезінде шешеді және resolv-retry infinite арқылы қайта қосылғанда DNS-ті қайталап көреді. Литералды IP болса, екеуі де енді жоқ машинаға қоңырау шала береді.
Адамдарды адастыратын нәрсе — айна бейнесі. Жаңа мекенжайға бұрыннан бағытталған клиент, ескі тыңдаушы әлі жауап беріп тұрғанда, өз үстеліңізден жасаған әрбір сынақтан өтеді. Мен де бұған алдандым: жаңа endpoint телефонда бірінші әрекетте көтерілді, ал ескі профилі бар клиент ескі тыңдаушы әлдеқайда кейін өшірілгенде ғана беті ашылды.
Сенім мекенжаймен бірге көшпейді
WireGuard бірегейлікті қолжетімділіктен бөледі, бұл мекенжайды көшіруді іс жүзінде тегін етеді. Peer-лер ашық кілтпен анықталады, ал endpoint — пакеттер қазір бара жатқан жер ғана; хост peer-дің endpoint-ін соңғы аутентификацияланған пакеттің көз мекенжайынан жаңартады. Бос тұрған peer жаңа орынмен сөйлесуге себеп керек етеді, және мекенжайды сессиясы ескіріп, handshake қайта әрекеттері көрінетін жерде сәтсіз болғанда ғана біледі. WireGuard жылдам нұсқаулығы endpoint өрісін қамтиды.
TLS негізіндегі серверлер — қарсы жағдай. Сертификат атауға байланған, және мекенжайды теретін клиент тергенін субъектінің балама атауларымен салыстырады. Тек DNS SAN ғана алып жүретін сертификатқа IP арқылы қосылыңыз, және тексеру сәтсіз болады: клиент қолданған атау сертификатта жоқ. IP SAN-мен қайта шығару сол бір қосылымды түзейді және келесі көшіруді нашарлатады. Профильде хост атауын сақтап, verify-x509-name-ті орнында қалдыру мекенжай астында өзгеріп жатқанда тексеруді қатаң ұстайды.
Сосын демонның неге байланғанын тексеріңіз; ескі мекенжайға қадалған сокет үнсіз сәтсіз болады. local 203.0.113.10-пен іске қосылған OpenVPN сервері сол мекенжай жоғалғанда көтерілуден бас тартады, ал 0.0.0.0 үстіндегі тыңдаушы өзгерісті тегін қадағалайды. NAT та дәл солай бөлінеді: MASQUERADE машинаның қазір қандай мекенжайы болса соны қадағалайды, ал статикалық SNAT --to-source 203.0.113.10 енді сізге тиесілі емес мекенжайға қайта жаза береді, сондықтан қайтарым трафигі жоғалады. Жаңа мекенжай басқа upstream қақпасымен келсе, rp_filter-ді тексеріңіз: кері жол сүзгісі ядро күтпеген интерфейске келетін қайтарым трафигін тастайды.
Көшу реті және оның жұмыс істегенін дәлелдейтін деректер
TTL-ді бір күн бұрын төмендетіңіз, жаңа тыңдаушыны көтеріңіз және оны тек өзіңізде бар профильмен дәлелдеңіз. Сол желінің ішінен жасалған сынақ ештеңе дәлелдемейді, сондықтан ұялы желідегі телефонды қолданыңыз және endpoint-ке ping жасаудың орнына туннель тасуға тиісті нәрсені сынаңыз.
Бүкіл терезе бойы екі мекенжайды да қадағалаңыз. Жаңа хосттағы wg show all latest-handshakes немесе OpenVPN күй файлы қанша peer шынымен көшкенін айтады. Жаңа endpoint-те күткен peer-леріңіз болып, ескісінде тек қалғандары қалса, ескі тыңдаушыны пайдаланудан шығарыңыз, ескірген NAT ережесін жойыңыз және мекенжайды провайдер файрволынан алып тастаңыз. Ескі тыңдаушыны жою — өткізіп жіберілетін қадам, және ол ескірген профиль ескі желіге әлі жететін саңылауды жабады.
Бастамас бұрын қайтару триггерін жазбаша белгілеңіз: егер келісілген терезеден кейін жаңа endpoint ешбір нақты клиенттен handshake алмаса, ескі мекенжайды қалпына келтіріңіз және профильдерді таратуды тоқтатыңыз. Сосын іздеуді қайта жүргізіп, ешбір тыңдаушының шығарылған мекенжайға байланбағанын растаңыз. Келесі көшіруге екі нәрсе өтеді: клиент профилінде хост атауы, сонда келесі өзгеріс DNS редакциясы болады, және сервердің қалпына келтіру жазбаларының қасында сақталған түгендеу.