Tüneli bağlarsınız, ip route çalıştırırsınız ve özgün varsayılan ağ geçidi hâlâ oradadır. Sonraki düşünce, istemcinin rotayı devralamadığıdır; bu yüzden varsayılanı elle silersiniz ve bağlantıyı tamamen kaybedersiniz. O kaydın kalması gerekir. redirect-gateway def1 ile OpenVPN, sıradan varsayılanın yerini almak yerine onu geçen iki daha özgül rota kurar. Eski ağ geçidi kalır ve test ettiğiniz trafiği taşımayı bırakır.

def1 gerçekte ne yapar

Bayrak 0.0.0.0/1 ve 128.0.0.0/1 ekler; ikisi de tünele işaret eder. 0.0.0.0/1 ilk sekizlisi 0 ile 127 arasında olan her adresi alır, 128.0.0.0/1 ise 128 ile 255 arasını alır, böylece her IPv4 hedefi eski varsayılandan daha özgül bir eşleşmeye sahip olur. Hangi rotanın kazanacağına metrik değil, önek uzunluğu karar verir.

Özgün varsayılanı yerinde bırakmak bilinçlidir. İstemcinin neyin yerine geçtiğini hatırlaması gerekmez ve VPN sunucusuna kendi bağlantısını taşıyan rotayı yeniden yazmaz. Bağlantı kesildiğinde iki yarım rotayı kaldırır ve tablo eskisi gibi olur.

Neden /1, /0 değil

Yönlendirme en uzun eşleşen öneki seçer, en düşük metriği değil; bu yüzden varsayılanın metriği ne derse desin /1, /0'ı yener. İki yarı vardır çünkü bir /1 alanın yalnızca yarısını kapsar; yalnızca 0.0.0.0/1 varsa, 128.0.0.0 ve üzerindeki her şey hâlâ eski varsayılanı izler, bu da bazı sitelerin çalışıp bazılarının çalışmadığı kafa karıştırıcı belirtiyi üretir.

Eski varsayılanın metriğini yükseltmek veya düşürmek hiçbir şeyi değiştirmez, başka bir arayüzdeki daha düşük metrikli bir varsayılan da trafiği çalmaz. Önek uzunluğu önce karar verir ve yalnızca eşit önekler metriğe geri düşer.

Gerçek bir yönlendirme tablosu okuyun

Bağlı bir ana bilgisayar üç kaydı birden gösterebilir; tünel yarıları taşırken özgün ağ geçidi hâlâ listelenir. Adresler kopyalanacak bir yapılandırma değil örnektir, çünkü arayüz adları, tünel topolojisi ve ek rotalar platforma ve istemciye göre değişir.

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

Önemli olan ilişkidir: genel bir varsayılanın üstünde iki özgül yarı. Eski ağ geçidi satırı kalır çünkü onun yerini hiçbir şey almadı.

Paketin gerçekte izlediği rotayı kontrol edin

Daha özgül rotalar hâlâ kazanabilir: özel bir aralık için rota, yerel bir alt ağ veya VPN sunucusunun kendi adresi /1'den daha uzundur. Tünelin sunucusuna dışarıya giden bir yola ihtiyacı vardır ve o bağlantıyı tünele geri göndermek onu anında bozar. Linux'ta tabloyu gözle okumak yerine çekirdeğe sorun: önemsediğiniz hedefle ip route get seçilen rotayı, arayüzü ve kaynağı yazdırır. İlke yönlendirmesi yapılandırılmışsa kuralları da inceleyin, çünkü bir kural ana tabloya başvurulmadan önce farklı bir tablo seçebilir.

IPv4'ün yalnızca bir kısmı yanlış davranıyorsa, iki yarının da kurulduğunu doğrulayın ve ardından başarısız hedefle eşleşen bir istisna arayın. Eski varsayılanı silmek bir düzeltme değildir ve istemcinin tüneli temiz biçimde kaldırmak için ihtiyaç duyduğu rotayı da siler.

def1 neleri kapsamaz

İki IPv4 kaydı IPv6 hakkında hiçbir şey söylemez: IPv6 bağlantısı olan bir ana bilgisayar, o aile ayrıca yönlendirilene kadar kendi varsayılanını kullanmaya devam eder; bu yüzden çift yığınlı bir ağda bazı trafik tüneli atlıyormuş gibi görünür. Diğer istemciler ve ağ yöneticileri tam tünel yönlendirmesini farklı uygular ve tabloları eşleşmez. Burada açıklanan def1 davranışı OpenVPN'in belgelenmiş bayrağına aittir, makinedeki her VPN'e değil.

Bir kill switch farklı bir soruyu yanıtlar: tünel düştüğünde makinenin ne yaptığını. Yönlendirme önceliği, tünel açıkken trafiğin nereye gideceğine karar verir; sonrasında güvenlik duvarının ne yapacağına karar vermez. İş sırası: tabloyu okuyun, iki yarının da var olduğunu doğrulayın, başarısız hedef için ip route get çalıştırın, ilke kurallarını kontrol edin, sonra IPv6'ya ayrıca bakın. Eski varsayılanı olduğu yerde bırakın.

İlgili makaleler