OpenVPN yeniden başlatıldıktan sonra IPv6 çıkışı ölür: önek sahipliğini kontrol edin
Tünel yeniden oluşturulduktan sonra IPv6 ölür. Herhangi bir şeyi yeniden başlatmadan önce devredilen önekin, istemci adreslerinin ve dönüş yolunun kime ait olduğuna karar verin.
IPv6, OpenVPN yeniden başladığı anda trafiği geçirmeyi bırakır ve IPv4 çalışmaya devam eder. Tünel arayüzü yeniden oluşturuldu ve onun IPv6 durumunu yöneten başka bir şey ya adresi ya da öneki erişilebilir kılan yolu kaybetti. Üç ayrı durum parçası devreye giriyor ve her birinin farklı sahibi var: sağlayıcının devrettiği önek ve ömrü, VPN istemcilerine verilen adresler ve o istemci önekini sunucuya geri gönderen üst yol. Herhangi bir daemona dokunmadan önce her birinin sahibini belirleyin, çünkü yanlış olanı yeniden başlatmak sorunu bir gün gizler ve bir sonraki bağlantıda geri getirir.
Üç IPv6 durum parçası, üç sahip
| State | Typical owner | What breaks when it is wrong |
|---|---|---|
| Delegated prefix and lifetime | Upstream router or provider via DHCPv6-PD | Clients keep addresses that the upstream no longer routes |
| Client addresses inside the tunnel | OpenVPN server config or a delegation daemon | No global address, or an address outside the routed prefix |
| Return route for the client prefix | Upstream router, or the server's own routing table | Outbound works, replies never arrive |
Tünelin içindeki küresel kapsamlı bir adres tek başına yeterli değildir. Üst yönlendiriciler o öneki yine de VPN sunucusuna geri göndermek zorundadır ve sunucunun tesadüfen ondan bir adresi olduğu için bunu yapmayacaklardır.
Bu yüzden genel bir /64'ü tünel havuzuna kopyalamak da risklidir. Sunucuya yönlendirilen bir önek, üst tarafın on-link olarak gördüğü bir önekle aynı değildir ve komşu keşfi bu boşluğu doldurmaz.
Herhangi bir şeyi değiştirmeden önce sunucunun durumunu okuyun
Durumu iki kez yakalayın, bir kez IPv6 çalışırken ve bir kez yeniden başlatmadan sonra, sonra karşılaştırın. Salt okunur görünümler yeterlidir ve bir bakım penceresi sırasında hiçbir maliyeti yoktur:
ip -6 addr show
ip -6 route show table all
ip -6 rule show
sysctl net.ipv6.conf.all.forwarding
Üç belirli fark arayın: kaybolan bir yol, kullanımdan kaldırılmış veya geçersiz bir ömre geçen bir adres ve yeniden devretmeden sonra değişen ama VPN yapılandırmasının hâlâ eskisini duyurduğu bir önek.
Adres kaybolduysa ama önek değişmediyse, onu atayan daemon arayüzü yönetmeyi bırakmıştır. Önek değiştiyse ama adresler değişmediyse, istemci yapılandırması eskimiştir. İki arıza tarayıcıdan aynı görünür ve hiçbir ortak yanları yoktur.
dhcpcd'nin tüneli yönetip yönetmeyeceğine karar verin
dhcpcd arayüzleri keşfedebilir ve bir DHCPv6 önekinin parçalarını alt arayüzlere devredebilir, yapılandırması da devretme hedeflerini açıkça adlandırabilir. Açık bir hedef olmadığında, belgelenmiş davranışı başka arayüzleri kapsayabilir ve böylece tünel kimsenin planlamadığı bir adresle kalır.
İki koşul sizi tünelin statik adreslemesini OpenVPN'ye bırakmaya itmelidir: sunucu yapılandırmasında sabit adresler gönderiyor ve tünel adı yeniden bağlanmada değişiyor. İkisi de geçerliyse, tüneli devretme daemonundan bilerek hariç tutun, nedenini söyleyen bir yorumla.
Bunun yerine tünele devretme bilinçliyse, önek değişikliği işlemesini uygulayın. Bu, devredilen önek veya ömrü değiştiğinde tepki vermek, sunucunun duyurduğu istemci önekini güncellemek ve yolu yeniden eklemek anlamına gelir. Bu tasarımda arayüzü hariç tutmak, yeni öneki bilen tek bileşeni ortadan kaldırır.
dhcpcd'yi yeniden başlatmak durumu yeniden oluşturduğu için bir şeyleri düzeltiyor gibi görünebilir, ama düşünmediğiniz arayüzlerin yapılandırmasını da yeniler veya geri çeker. Bu kurtarma onu her VPN yeniden başlatmasından sonra zorunlu kılmaz. Kanıt olarak kullandığınız sayaçları da sıfırlar. Gerçekten değiştirdiğiniz arayüzün hedefli olarak yeniden yüklenmesini tercih edin.
IPv6'yı IPv4 NAT'tan ayrı doğrulayın
Yönlendirmenin etkin olduğunu ve üst yolun gerçek istemci önekine işaret ettiğini doğrulayın, sonra yeni izin verilen bir IPv6 bağlantısı kurun. İstemcinin kendi IPv6 yol tablosunu da kontrol edin, çünkü genel bir adres gösteren istemci isteğinin tüneli kullandığını kanıtlamaz.
IPv4 maskeleme başka bir sorunu çözer: özel kaynaklar için dönüş yolu. Geri alınmış bir IPv6 öneki için hiçbir şey yapmaz ve eklenmesi IPv6'yı geri getirmez.
Sahiplik kaydıyla bitirin: hangi bileşen öneki devrediyor, hangisi istemci adreslerini atıyor, hangisi dönüş yolunu tutuyor ve yeniden bağlanmada her birine ne oluyor. Bir runbook'taki dört satır, sıradaki kişiyi önemli olanı bulmak için üç daemonu yeniden başlatmaktan kurtarır.