Bir adresi yeniden atamak bir dakika sürer. Sonraki hafta taşımanın kırıldığı yerdir ve nadiren sağlayıcının konsolunun ima ettiği yerdedir. Yeni bir genel IP dört yerde anılır: daemon'un dinlediği soket, istemcilerin doğruladığı güven çapası, eski adresi adlandıran her kural ve bunları birbirine bağlayan DNS kaydı. İki taşıma kontrol panelinden aynı görünür ama tamamen farklı davranır: adresi işlettiğiniz makinede yeniden atamak veya ikinci bir endpoint kurup istemcileri oraya taşımak. Aşağıdaki kontroller ucuz arızaları öne alır ve her bölüm hangi taşıma için geçerli olduğunu söyler.

Yerinde değişim ile paralel geçiş farklı işlerdir

Yerinde değişim ana makineyi, anahtarları, yönlendirme tablosunu ve kullanıcı listesini korur; yalnızca adres değişir. Yüzen bir IP'nin yeniden atanması bunu yapar ve birkaç sağlayıcıda konuk hiçbir şey fark etmez, çünkü çeviri örneğin önünde gerçekleşir. Yeniden oluşturma veya sağlayıcının yeniden ataması daha serttir: konuk değişikliği görür ve eski değeri önbelleğe alan her şey bunu aynı anda öğrenir.

Paralel endpoint, aynı işi yapan ikinci bir ana makinedir. Onu kurun, tek bir profille test edin ve yeni olan gerçek bir yolda kendini kanıtlayana kadar eskisinin yanıt vermesine izin verin. Bedeli durumdur. Paylaşılan peer kayıtları, iptaller ve günlükleme olmadan, tesadüfen aynı adı paylaşan iki ağınız olur.

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

Eski adresin yazılı olduğu her yeri bulun

Metin taramasıyla başlayın, çünkü yapılandırma dosyaları işin kolay yarısıdır. Daemon yapılandırmasını, güvenlik duvarı parçalarını, izleme hedeflerini ve diskte oluşturulmuş her istemci paketini arayın. IPv6 adresini de ekleyin, eğer yayımlıyorsanız; yalnızca A kaydını izleyen bir taşıma, çift yığın istemcileri eski yolda bırakır.

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

Sonra çekirdeği tarayın, çünkü çalışan bir sistem adresi hiçbir dosyanın söz etmediği yerlerde tutar. Statik kaynak NAT kuralı, ipset kaydı, bind adresi ve conntrack kaydı, onları kaldıran yapılandırma değişikliğinden daha uzun yaşar ve bazıları kaydedilmiş bir kural kümesinden geri geldikleri için yeniden başlatmayı da atlatır. Bir kat yukarıda, sağlayıcının güvenlik grupları, yük dengeleyici hedefleri ve izleme kontrolleri dosya sisteminizde hiç yoktur.

Herhangi bir şeyi değiştirmeden önce envanteri yazın; geri alma betiği olarak da işe yarar.

Ana makine adı kullanan istemciler toparlanır; gerçek IP kullanan istemciler sessizleşir

İstemciler sunucuya ana makine adıyla ulaşıyorsa, geçiş büyük ölçüde bir DNS sorunudur ve dün belirlediğiniz TTL ne kadar kötü olacağını belirler. Çözümleyiciler önbelleğe alır, stub çözümleyiciler yeniden önbelleğe alır ve birçok istemci adı yalnızca yeni bağlantıda arar, bu yüzden kurulmuş bir tünel başlangıç adresini korur.

Endpoint gerçek bir adres ise hiçbir şey yeniden çözülmez ve hiçbir şey şikâyet kaydetmez. WireGuard çözülmüş soket adresini saklar: Endpoint = vpn.example.net:51820, wg-quick up çalıştığı anda bir IP olur ve siz değiştirene kadar o IP olarak kalır. OpenVPN daha bağışlayıcıdır: bağlantı anında remote ana makine adını çözer ve resolv-retry infinite ile yeniden bağlanırken DNS'i tekrar dener. Gerçek bir IP verildiğinde ikisi de artık var olmayan bir makineyi aramaya devam eder.

İnsanları yanıltan şey ayna görüntüsüdür. Yeni adrese zaten yönelmiş bir istemci, eski dinleyici hâlâ yanıt verirken kendi masanızdan yaptığınız her testi geçer. Ben de buna kandım: yeni endpoint bir telefonda ilk denemede ayağa kalktı ve eski profilli bir istemci ancak eski dinleyici çok sonra kapatıldığında ortaya çıktı.

Güven adresle birlikte taşınmaz

WireGuard kimliği erişilebilirlikten ayırır, bu da adres taşımayı neredeyse ücretsiz kılar. Peer'lar ortak anahtarla tanımlanır ve endpoint yalnızca paketlerin şu anda gittiği yerdir; bir ana makine, peer'ın endpoint'ini son kimlik doğrulanmış paketin kaynak adresinden günceller. Boşta duran bir peer yine de yeni yere konuşmak için bir nedene ihtiyaç duyar ve adresi ancak oturumu eskidiğinde ve handshake yeniden denemeleri görünür bir yerde başarısız olduğunda öğrenir. WireGuard hızlı başlangıcı endpoint alanını kapsar.

TLS tabanlı sunucular tam tersi durumdur. Sertifika bir ada bağlıdır ve bir adresi çeviren istemci, çevirdiği şeyi konunun alternatif adlarıyla karşılaştırır. Yalnızca DNS SAN taşıyan bir sertifikaya IP ile bağlanın ve doğrulama başarısız olur: istemcinin kullandığı ad sertifikada yoktur. IP SAN ile yeniden düzenlemek o tek bağlantıyı düzeltir ve bir sonraki taşımayı daha kötü yapar. Profilde bir ana makine adı tutmak ve verify-x509-name ayarını yerinde bırakmak, alttaki adres değişirken denetimi sıkı tutar.

Sonra daemon'un neye bağlı olduğunu kontrol edin; eski adrese sabitlenmiş bir soket sessizce başarısız olur. local 203.0.113.10 ile başlatılan bir OpenVPN sunucusu o adres gittiğinde ayağa kalkmayı reddeder, oysa 0.0.0.0 üzerindeki bir dinleyici değişikliği ücretsiz izler. NAT da aynı şekilde bölünür: MASQUERADE makinenin artık sahip olduğu adresi izler ve statik SNAT --to-source 203.0.113.10 artık sahip olmadığınız bir adrese yeniden yazmaya devam eder, bu yüzden dönüş trafiği kaybolur. Yeni adres farklı bir upstream ağ geçidiyle geliyorsa rp_filter ayarını kontrol edin: ters yol filtreleme, çekirdeğin beklemediği bir arayüze gelen dönüş trafiğini düşürür.

Geçişin sırası ve işe yaradığının kanıtı

TTL'i bir gün önce düşürün, yeni dinleyiciyi ayağa kaldırın ve yalnızca sizde olan bir profille kanıtlayın. Aynı ağın içinden yapılan bir test neredeyse hiçbir şey kanıtlamaz, bu yüzden hücresel ağdaki bir telefon kullanın ve endpoint'e ping yerine tünelin taşıması gereken bir şeyi test edin.

Pencere boyunca iki adresi de izleyin. Yeni ana makinedeki wg show all latest-handshakes veya OpenVPN durum dosyası kaç peer'ın gerçekten taşındığını söyler. Yeni endpoint beklediğiniz peer'lara sahipken eskisinde yalnızca geride kalanlar varsa, eski dinleyiciyi devreden çıkarın, eski NAT kuralını kaldırın ve adresi sağlayıcının güvenlik duvarından çıkarın. Eski dinleyiciyi kaldırmak atlanan adımdır ve eski bir profilin hâlâ eski ağa ulaştığı boşluğu kapatır.

Başlamadan önce geri alma tetikleyicisini yazılı olarak belirleyin: yeni endpoint, kararlaştırılan pencereden sonra tek bir gerçek istemciden bile handshake almazsa eski adresi geri yükleyin ve profil dağıtmayı durdurun. Ardından taramayı yeniden çalıştırın ve hiçbir dinleyicinin kullanımdan kaldırılmış bir adrese bağlı olmadığını doğrulayın. İki şey bir sonraki taşımaya taşınır: istemci profilinde bir ana makine adı, böylece sonraki değişiklik bir DNS düzenlemesi olur, ve sunucunun kurtarma notlarının yanında saklanan envanter.

İlgili makaleler