Yönlendirme tablosu dökümü, VPN sorunlarını gidermede en az faydalı tanılama aracıdır ve en sık yapıştırılandır. Kırk satır önek size makinenin ne yapabileceğini söyler, başarısız istek için ne yaptığını değil. Gerçekte istediğiniz mekanizma aramadır: bu kaynak ve bu hedef verildiğinde hangi kural eşleşti, hangi tabloya başvuruldu ve hangi arayüz ile sonraki atlama çıktı. Tek bir hedef ve tek bir kaynakla başlayın, sonra tabloyu o soruyla elinizde okuyun ve aynı çıktı gürültü yerine kanıta dönüşür.

Tablo bir adaylar kümesidir, karar değil

Her kayıt bir öneki ve ona uyan trafikle ne yapılacağını açıklar: onu bir arayüze gönder, sonraki atlamaya devret veya düşür. O listede hiçbir şey niyete göre sıralı değildir ve bir insana en özgül görünen kayıt her zaman çekirdeğin seçtiği kayıt değildir, çünkü seçim en uzun önek eşleşmesini, eşit önekler arasında ise metriği izler.

Yani ilk adım listeyi okumak yerine çekirdeğe sormaktır. Arama komutu bir hedef için yanıt verir ve kaynak argümanıyla yönlendirilmiş ya da bağlanmış bir bağlantının kullanacağı tam çift için yanıt verir:

ip route get 198.51.100.10
ip route get 198.51.100.10 from 10.80.0.25
ip -6 route get 2001:db8:10::40

Yukarıdaki her adres bir belgeleme örneğidir. Mesele yanıtın şeklidir: arayüz, seçilen kaynak adresi, ağ geçidi ve kaydın geldiği tablo. Bu çıktı beklediğiniz arayüzle eşleşmiyorsa sorunu tek bir komutla yerelleştirdiniz ve tablonun tamamını ne kadar okursanız okuyun hangi adayın kazandığını söylemezdi.

Arama önce kurallardan, sonra tablolardan geçer

Linux'ta karar iki aşamalıdır. İlke kuralları öncelik sırasına göre değerlendirilir ve eşleşen ilk kural başvurulacak tabloyu adlandırır; o tablo daha sonra en uzun önek eşleşmesini yapar. Bir kural kaynak, hedef, güvenlik duvarı işareti, arayüz veya bunların birleşimi üzerinde eşleşebilir; bu yüzden ana tablonun dökümü tamamen doğru ve incelediğiniz paket için tamamen ilgisiz olabilir.

ip rule show
ip route show table all | head -40
ip route show table 100

Bir kural VPN havuzunuzdan gelen trafiği tablo 100'e gönderiyorsa, önemli olan tablo 100'dür ve ana tablo bir yem. Bu aynı zamanda bir yönlendiricide kaynak tabanlı yönlendirmenin arkasındaki mekanizmadır: aynı hedef, paketin nereden geldiğine bağlı olarak iki farklı yanıta sahip olabilir ve yalnızca kaynak argümanlı arama hangisinin geçerli olduğunu ortaya çıkarır.

IPv6'nın kendi kuralları ve tabloları vardır. Her iki aileyi çalıştıran bir tasarım her iki aramaya da ihtiyaç duyar ve çalışan bir IPv4 yanıtı, çift yığınlı bir istemcinin tercih edebileceği v6 yolu hakkında hiçbir şey söylemez.

VPN istemcisi ne kurar

İstemciler genellikle varsayılan rotayı değiştirmez, çünkü bu tünelin kendi dış yolunu bozar. Önek uzunluğuyla kazanan daha özgül bir şey kurarlar: 0.0.0.0/1 ve 128.0.0.0/1'i kapsayan bir çift yarım varsayılan, klasik hiledir, çünkü ikisi de 0.0.0.0/0'dan daha uzun öneklerdir ve birlikte tüm alanı kapsarlar. Diğerleri belirli özel önekler artı bir ilke kuralı kurar ve bazıları yalnızca seçilen trafiğin yakalanması için bir işaret ekler.

Bu yüzden "VPN varsayılan rotamı değiştirmedi" bir arıza kanıtı değildir. Gerçekte ne eklediğini ve söz konusu hedefin bu öneklerin içinde olup olmadığını kontrol edin:

ip route show | grep -E 'tun|wg|ppp|ipsec'
ip route get 10.20.30.40 from 10.80.0.25

İki yarım rota bir dökümde kolayca gözden kaçar çünkü varsayılana benzemezler. Bir öneki eklemeyi unutan split-tunnel yapılandırması tam olarak kovaladığınız belirtiyi üretir: tüneli kullanması gereken uygulama bunun yerine yerel olarak çözümleyip bağlanır. Kurulu önekleri kullanıcının gerçekten ihtiyaç duyduğu hedeflerle karşılaştırın, şans eseri test ettiğiniz adreslerle değil. Dosya sunucusunu kapsayıp çözümleyicisini kapsamayan bir split-tunnel listesi, genel bir adrese çözümlenen ve ardından kimlik doğrulamada başarısız olan bir bağlantı üretir; bu bir parola sorunu gibi görünür ama rota sorunudur.

Dış rota da hayatta kalmalı

Tünelin kendisi trafiktir. Kapsüllenmiş yükü taşıyan paketler fiziksel arayüz üzerinden eşin adresine gider ve bu yol tünele geri yönlendirilmemelidir. Yönlendirildiğinde, tünelin kurulup ardından trafik geçirmeyi bıraktığı o belirgin arıza ortaya çıkar, çünkü tünelin taşıması artık tünelin içindedir.

Eşin adresini iç hedefi kontrol ettiğiniz gibi kontrol edin ve tünele değil fiziksel arayüze çözümlendiğini doğrulayın:

ip route get 203.0.113.10
traceroute -n -m 5 203.0.113.10

Özyinelemeli bir rota, eşi yakalayan bir ilke kuralı veya tam tünelli bir istemci tarafından değiştirilmiş varsayılan, üç olağan nedendir. Üçü de dış aramada görünür ve hiçbiri olaydan sonra alınan ana tablo dökümünde görünmez.

Yönlendirme çıktısının size söyleyemeyeceği şeyler

Doğru bir arama, çekirdeğin paketi makul bir yere göndereceği anlamına gelir. Güvenlik duvarının izin verdiği, IPsec ilkesinin kapsadığı, NAT kuralının çevirdiği veya karşı tarafın dönüş rotası olduğu anlamına gelmez. Bunların her biri daha sonraki bir aşamadır ve strongSwan'ın yönlendirme notları paketin iki uçta geçmesi gereken zinciri açıklar.

Uygulama düzeyinde bağlamayı da hesaba katmaz. Bir süreç bir arayüze bağlanabilir, işaret koyabilir veya kendi çözümleyicisini kullanıp test ettiğinizden farklı çözümlenen bir adla bağlanabilir. Arama doğru olduğunda ve bağlantı hâlâ başarısız olduğunda sıradaki soru, bunu hangi sürecin yaptığı ve o sürecin sizin gördüğünüz aynı tabloyu görüp görmediğidir.

Bu yüzden tanılamayı düzenli tutun: hedefi ve kaynağı adlandırın, aramayı çalıştırın, yalnızca aramanın adlandırdığı tabloyu ve kuralı okuyun, sonra sonraki aşamayı test edin. Bu sıra bir yönlendirme soruşturmasını dakikalar içinde tutar ve başkasının izleyebileceği bir kayıt bırakır; yapıştırılmış bir tablo bunu asla yapmaz.

İlgili makaleler