OpenVPN iroute ve Çekirdek Yönlendirmesi: Hangisi Eksik?
Sunucuda bir rota var ama trafik yine de duruyor. Yol kararlarından biri çekirdeğe, diğeri eşe aittir; hangisinin eksik olduğunu ve neyi doğrulamanız gerektiğini öğrenin.
10.77.20.0/24 için bir paket, bir OpenVPN sunucusunda iki ayrı karardan geçer: işletim sistemi onu VPN arayüzüne teslim etmeli, OpenVPN ise o önekin hangi bağlı istemciye ait olduğunu bilmelidir. Eksik çekirdek rotası paketi tünelden önce düşürür, eksik eş rotası ise tünelden sonra düşürür. Uzaktaki LAN'dan bakıldığında iki arıza aynı görünür ve hangisine sahip olduğunuzu teşhis etmek her iki tarafta birer komut alır.
Klasik kullanıcı alanı veri yolunda çekirdek rotası paketi tünel sürecine sokar ve iroute o sürece hangi eşin onu alması gerektiğini söyler. Hiçbiri diğerinin yerine geçmez ve yalnızca birini taşıyan bir yapılandırma, ilk ping'e kadar makul görünür.
Tek Rota Değil, İki Karar
10.77.20.0/24'ün tek bir istemcinin arkasında durduğu bir saha-sahaya bağlantı düşünün. Sunucunun çekirdek rotası, örneğin ip route add 10.77.20.0/24 dev tun0, eşleşen paketleri tünel aygıtına gönderir. Ardından OpenVPN, istemci yapılandırma dizinindeki iroute girdilerinden oluşturduğu kendi iç tablosuna bakarak bu paketleri hangi eş bağlantısının alacağına karar verir. Çekirdek rotası olmadan paket sürece hiç ulaşmaz, eş rotası olmadan ise sürece ulaşır ama hiçbir yere gitmez.
Bu ayrımı unutmak kolaydır, çünkü istemci profilindeki tek bir rota satırı her iki işi de yapıyor gibi görünebilir. Öyle değildir: bir rota itmek istemcilere tünelden neyi göndereceklerini söylerken iroute sunucuya bir istemcinin arkasındaki adres aralığının kime ait olduğunu söyler. Farklı dosyalarda yaşarlar, farklı taraflarca okunurlar ve zıt yönlerde başarısız olurlar.
iroute Nereye Aittir ve Ne Söyler
Girdi, istemcinin common_name değerine göre adlandırılmış, istemci başına bir dosyaya, client-config-dir altına iroute 10.77.20.0/24 biçiminde yazılır. Dosya adı eşleşmesi kozmetik değildir: OpenVPN kimliği doğrulanmış kimliği arar ve tam olarak o ada sahip dosyayı okur, bu yüzden site-a adlı bir dosya yalnızca common name değeri site-a olan bir istemci için geçerli olur. Böyle bir dosyası olmayan istemcilerin doğrudan reddedilmesi gerekiyorsa ccd-exclusive ekleyin; her istemci bir saha ağ geçidi olduğunda doğru ayar budur. Ağ geçidi başına tek dosya tutun ve onu gerçekten verdiğiniz sertifika konusuna göre adlandırın.
Uzaktaki LAN'ı suçlamadan önce girdiyi sunucudan test edin. Durum dosyası bağlı istemcileri common name'leriyle listeler ve --verb 4 ile çalışan bir sunucu eş bağlandıkça iroute kurulumunu günlüğe yazar. Bağlantı anında hiçbir şey görünmüyorsa dosya yanlış dizindedir ya da yanlış kimliği adlandırıyordur.
Tuzak: Dosya Var, Kimlik Yanlış
Yanlış eşe bağlanmış doğru görünen bir iroute, eksik dosyadan daha çok zaman kaybettirir çünkü diskteki her şey doğru görünür. Sertifika yeniden adlandırma, yinelenen common name'ler ve etkin kimliği değiştiren username-as-common-name hep bunu üretir. Beklediğiniz kimlik yerine sunucunun hangi kimliği doğruladığını kontrol edin: durum çıktısı yetkilidir, dosya adı ise yalnızca bir arama anahtarıdır.
Bir rota sahibinden daha uzun yaşayabilir. Statik rotalar ve iroute girdileri bir öneki tanımlar, kullanılabilirlik garantisi vermez; bu yüzden trafik o anda bağlantısı kesilmiş bir eşe doğru yönlendirilmeye devam edebilir.
Yolu Eşin Ötesinde Tamamlayın
Eş sahipliği yolun ortasıdır, sonu değil. İstemci paketleri tünelden kendi LAN'ına iletmelidir; bu da o ana makinede IP yönlendirmenin etkin olması ve geçişe izin veren bir güvenlik duvarı kuralı gerektirir. Uzaktaki LAN'daki makineler tünel adresi için bir dönüş yoluna ihtiyaç duyar: ya ağ geçidine geri işaret eden bir rota ya da istemci tarafında bilinçli bir NAT tasarımı. Dağıtım varsayılanını kabul etmek yerine istemcide iletme ayarını sysctl net.ipv4.ip_forward ile doğrulayın.
Diğer VPN istemcileri de o alt ağa erişmek zorundaysa düzen yeniden büyür: sunucunun client-to-client ayarına ve o istemcilerin de öneki tünel üzerinden yönlendirmesine ihtiyaç vardır. Bunların hiçbiri sunucunun kendi yönlendirme tablosundan çıkmaz.
Tek bir hedefi sunucunun kendisinden değil gerçek bir kaynaktan doğrulayın. İlgisiz bir LAN makinesinden istemcinin arkasındaki bir makineye yapılan ping, dönüş yolunu, iletme kuralını ve eş sahipliğini tek hamlede sınar; oysa başarılı bir el sıkışma yalnızca kimliği kanıtlar. Ardından sahip eşin bağlantısını kesin ve rotanın ne yaptığını kaydedin, çünkü o yanıt sizin arıza biçiminizdir.