Даректи кайра дайындоо бир мүнөт алат. Кийинки жума — которуу бузулган жер, жана провайдердин консолу көрсөткөн жерде сейрек. Жаңы жарыя IP төрт жерде көрсөтүлөт: демон угуучу сокет, клиенттер текшере турган ишеним тиреги, эски даректи атаган ар бир эреже жана аларды байланыштырган DNS жазуусу. Эки которуу башкаруу панелинен бирдей көрүнөт, бирок такыр башкача жүрөт: өзүңүз башкарган машинада даректи кайра дайындоо же экинчи endpoint куруп, клиенттерди ошого которуу. Төмөнкү текшерүүлөр арзан каталарды алдыга коёт, жана ар бир бөлүм кайсы которууга тиешелүү экенин айтат.

Ордунда алмаштыруу жана параллель өткөрүү — ар башка жумуштар

Ордунда алмаштыруу хостту, ачкычтарды, маршруттоо таблицасын жана колдонуучулардын тизмесин сактайт; тек дарек өзгөрөт. Муну калкыма IPни кайра дайындоо жасайт, жана бир нече провайдерде конок муну такыр байкабайт, анткени котормо инстанстын алдында жүрөт. Кайра куруу же провайдердин кайра дайындоосу катаалыраак: конок өзгөрүүнү көрөт, жана эски маанини кэштегендин баары аны ошол эле учурда билет.

Параллель endpoint — ошол эле ишти аткарган экинчи хост. Аны куруп, бир профил менен сынап, жаңысы чыныгы жолдо өзүн далилдегенче эскисин жооп берип турсун. Баасы — абал. Жалпы peer жазуулары, жокко чыгаруулар жана логдоо жок болсо, кокустан бир атты бөлүшкөн эки тармагыңыз бар.

QuestionIn-place swapParallel endpoint
Rollback in one step?Only if you can get the old address backPoint DNS back; old host still up
Blast radiusEvery client at onceOnly the clients you moved
Best whenThe address is yours to reassignThe 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 редакциясы болот, жана сервердин калыбына келтирүү жазууларынын жанында сакталган эсеп.

Тектеш макалалар