OpenVPN istemcisinin arkasındaki alt ağ neden erişilemez?
OpenVPN, uzak bir LAN'ın hangi istemciye ait olduğunu tahmin edemez. İstemcinin dosyasındaki bir iroute girdisi, dönüş rotası ve yönlendirme o alt ağı erişilebilir kılar.
Sunucunun tünel adresine pingler başarılı olur, istemcinin kendi yönlendirme tablosu doğru görünür ve o istemcinin arkasındaki LAN hâlâ erişilemezdir. İstemcinin yönlendirme tablosu doğru görünür, sunucunun tünele giden bir rotası vardır ve paketler yine de kaybolur. Bu, istemcilerinden birinin aynı zamanda bir ağ geçidi olduğunu bilmeyen bir layer-3 tünelinin klasik belirtisidir.
Bir tun arayüzünün istemci başına sonraki atlaması yoktur. Çekirdek, çok sayıda eşi olan tek bir arayüz görür, bu yüzden uzak bir LAN için paketi hangi istemcinin alacağına dair karar OpenVPN süreci içinde verilmelidir. Bu karar iroute ile yapılandırılır ve o olmadan paketin gidecek yeri yoktur.
Sunucu arayüze göre değil, istemciye göre yönlendirir
Sunucunun bir istemcinin tünel adresine paket göndermesi gerektiğinde yanıt nettir: adres o istemcinin oturumuna aittir. Hedef o istemcinin arkasındaki bütün bir alt ağ olduğunda, adres sunucunun tanıdığı kimseye ait değildir ve çekirdeğin tünele giden rotası yalnızca "bu arayüzden" der, hangi eş olduğunu söylemez.
OpenVPN bunu, hedef önekini belirli bir istemciye eşleyen bir iç yönlendirme tablosuyla çözer. Bu tablo iroute girdilerinden oluşturulur, bu yüzden sunucu ana bilgisayarındaki sıradan bir rota yeterli değildir. Çekirdek rotası paketi tünel arayüzüne taşır; iç eşleme hangi oturumun onu alacağına karar verir. Bu yüzden onarım asla çekirdeğin rota çıktısında görünmez.
Eşleme yoksa paket sunucuya ulaşır, tünel rotasıyla eşleşir ve hiçbir istemci hedefi talep etmediği için düşürülür. Hiçbir şey temiz bir hata kaydetmez, bu yüzden arıza yönlendirme döngüsü yerine sessiz bir kara delik gibi görünür.
İstemciyi adlandıran iroute girdisini yazmak
iroute, sunucunun ana yapılandırmasında değil istemciye özgü bir yapılandırma dosyasında yaşar. Sunucuyu client-config-dir seçeneğiyle bir dizine yönlendirin, ardından adı istemci sertifikasının ortak adı olan bir dosya oluşturun ve öneki içine koyun.
LAN'ı 10.20.0.0/24 olan ve sertifikasının ortak adı branch-router olan bir şube için o yoldaki dosya iroute 10.20.0.0 255.255.255.0 gibi bir satır içerir. Ana yapılandırma yalnızca dizin seçeneğine ihtiyaç duyar; önek istemcide yaşar.
Ortak ad kırılgan kısımdır. Farklı subject ile verilmiş bir sertifika veya dosya sertifikaya göre adlandırılmışken kullanıcıları kullanıcı adıyla doğrulayan bir kurulum, asla okunmayan bir dosya üretir. Sunucunun oturum için gerçekte bildirdiği adı kontrol edin ve eşleşmeyen istemcinin rotaları olmadan sessizce bağlanması yerine başarısız olmasını sağlayan seçeneği değerlendirin. Dosyayı sertifikayla eşleşecek şekilde yeniden adlandırmak, çok uzun bir akşamı önleyen beş dakikalık bir düzeltmedir.
Bir istemci birkaç öneke sahip olabilir. Her ağ için bir iroute satırı ekleyin ve eşleme denetlenebilir kalsın diye listeyi o istemcinin diğer ayarlarının yanında tutun.
Dönüş yolunu iki yönde kurmak
Paketleri uzak LAN'a ulaştırmak işin yarısıdır. İstemci ayrıca o LAN'ın trafiğini tünele göndermelidir; bu genellikle istemciye bir rota iterek yapılır: push "route 10.8.0.0 255.255.255.0" gibi bir satır her istemciye sunucu tarafındaki ağa nasıl ulaşacağını söyler. Şube için eşdeğer rota, sunucu tarafında ulaşması gereken her şey için tüneli gösterir.
Dönüş yönü uzak tarafta bir sahip gerektirir. O tarafta birinin dönüş yolunu bilmesi gerekir: VPN havuzunu sunucuya yönlendiren LAN yönlendiricisindeki statik bir rota veya trafik LAN'a girmeden önce sunucuda adres çevirisi. Statik rota orijinal adresleri günlüklerde ve erişim kurallarında görünür tutar ama LAN sahibinin işbirliğini gerektirir; çeviri kendi kendine yeterlidir ancak gerçekte kimin bağlandığını gizler.
Yönlendirme sunucu ana bilgisayarında etkin olmalıdır. Bu olmadan çekirdek paketi tünelden kabul eder ve LAN arayüzüne geçirmeyi reddeder; bu da istemci açısından eksik bir iroute ile tamamen aynı görünür.
Erişilebilirliği doğru sondalarla denetlemek
Uzak uca ping atıp tahmin etmek yerine katmanlar halinde test edin. Sunucudan önek için iç eşlemenin var olduğunu ve çekirdek rotasının tüneli gösterdiğini kontrol edin. İstemciden itilen rotanın kurulu olduğunu ve LAN adresine giden varsayılan yolunun tünel olduğunu doğrulayın.
Sonra paketleri izleyin. Tünel arayüzündeki bir yakalama sunucunun istemciye doğru ilettiğini, LAN arayüzündeki bir yakalama ise iletip iletmediğini gösterir. İlki paket gösterip ikincisi hiçbir şey göstermiyorsa sorun yönlendirme veya bir filtredir; ikisi de hiçbir şey göstermiyorsa arama daha önce başarısız olmuştur.
Bir tünelle birleştirilmiş iki sunucu aynı kuralı iki tarafta yineler: her biri diğerinin havuzu için bir iroute gerektirir ve her biri yolu simetrik yapan rota ile yönlendirmeyi gerektirir. Yönlendirme ve politika burada ayrı konulardır. Yönlendirme bir paketin nereye gidebileceğine karar verirken FORWARD kuralı izin verilip verilmediğine karar verir, bu yüzden iki iroute satırı olan bir istemci, bir filtre aksini söylemedikçe her iki öneğe de ulaşır.