Paketler bir OpenVPN rotasını izleyip yine de bir IPsec politikası tarafından yakalanabilir ve bu bileşim doğru açı dışında her açıdan yönlendirme hatası gibi görünür. Linux bir rotayı çözer ve ardından ayrı bir güvenlik politikası veritabanına başvurur, bu yüzden daha belirgin bir hedef rotası eşleşen bir XFRM politikasını yerinden etmez. Görünen belirti, ana bilgisayardan çıkıp asla ulaşmayan trafiktir; oysa iki tünel de kendini sağlıklı bildirir. Bunu üç seçenek çözer ve hangisini seçeceğiniz o öneki iki yoldan hangisinin taşıması gerektiğine bağlıdır.

İki karar, bir değil

Rota seçimi dar bir soruya yanıt verir: hangi sonraki atlama ve kaynak adres bu paketi taşımalı. Güvenlik politikası veritabanı başka bir soruya yanıt verir: bu paket IPsec koruması gerektiriyor mu ve hangi seçiciler altında. İkisi de aynı paket için çalışır ve birincisini karşılamak ikincisi hakkında hiçbir şey söylemez. Bu yüzden bir metriği değiştirmek veya statik bir rota eklemek belirtiyi olduğu gibi bırakabilir.

Geniş bir IPsec seçicisi olağan nedendir. 172.16.0.0/12'yi koruyan bir politika 172.20.8.0/24'ü de kapsar, oysa yönetici oraya OpenVPN tüneli üzerinden ulaşmayı amaçlamış olabilir. Niyet yalnızca yönlendirme tablosunda vardır ve politika veritabanı bundan hiç haberdar olmadı.

Bunu iki metriğin yarışı değil, yapılandırılmış iki koruma yolunun çatışması olarak görün. Düzeltme, yanlış kapsamla yapılandırılan bileşene aittir.

Çekirdeğin gerçekte seçtiği rotayı okuyun

Çekirdeğin yaptığı aramayla başlayın; kaynak adres ve paketi başka bir tabloya yönlendirebilecek her politika kuralı dahil. Ana tablodaki bir rota, önceki bir kural başka bir tabloyu seçerse hiç değerlendirilmeyebilir ve en uzun önek eşleşmesi yalnızca kuralın seçtiği tablo içinde geçerlidir.

ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15

Asıl önemli olan son komuttur, çünkü seçilen rotayı çekirdeğin kullanacağı kaynak adresle birlikte yazdırır. Bu çıktıyı IPsec politikasının eşleştiği seçiciyle karşılaştırın. Rota OpenVPN arayüzünü gösterirken politika hâlâ aynı çiftle eşleşiyorsa çatışmayı tahmin etmeden yeniden üretmişsinizdir.

Dökümleri bir talep kaydına ulaşmadan önce ilgisiz adreslerden arındırın. Üretim ana bilgisayarından alınan yönlendirme tablosu iç topoloji taşır ve yalnızca soruyu yanıtlayan satırlar yapıştırmaya değer.

Aynı zamanda geçerli olan politikayı da okuyun

Politika listesi yönü, seçicileri ve eşleşen pakete ne olacağını belirleyen şablonu gösterir. Önce giden yönü, sonra dönen trafik için gelen tarafı okuyun, çünkü tek yönlü bir istisna başlayıp asla tamamlanmayan bir bağlantı üretir.

ip -s xfrm policy
swanctl --list-sas

Listedeki seçicileri bağlantının müzakere ettiği öneklerle karşılaştırın. strongSwan'ın rota kurulumunu kapatmak bu politikaları kaldırmaz ve bir metriği değiştirmek bir politikanın hangi kaynak-hedef çiftini koruduğunu değiştirmez. Bu iki sözde düzeltmeyi erken elemek gerekir, çünkü insanlar önce onları dener.

Liste beklediğiniz önek için bir politika içermiyorsa sorun başka yerdedir ve yönlendirme tablosu büyük olasılıkla doğruyu söylüyordur. Öneki kapsayan daha geniş bir politika içeriyorsa yakalanmayı bulmuşsunuzdur.

İki yol da meşru olduğunda üç seçenek

Geniş önek bir gereklilik değil kolaylık idiyse IPsec seçicisini daraltmak en temiz seçenektir. Uzak trafik seçicisini gerçekten IPsec'in arkasında olan alt ağlara indirmek çatışmayı her ana bilgisayar için bir anda ortadan kaldırır ve maliyeti yeni bir bileşen değil anahtar yeniden müzakereşidir.

Geniş seçici kalması gerektiğinde geçiş istisnası cerrahi seçenektir. strongSwan, alt öğesi pass modunu kullanan ayrı bir bağlantıyı destekler ve bu, çekirdeğe eşleşen trafiğin IPsec tarafından işlenmemesi gerektiğini söyler. Loopback uzak adresi o bağlantının gelen eşler için seçilmesini önler ve seçiciler her şeyi değil gerçek yetkili çifti tanımlamalıdır.

connections {
    openvpn-exception {
        remote_addrs = 127.0.0.1
        children {
            openvpn-exception {
                local_ts = 10.44.7.0/24
                remote_ts = 172.20.8.0/24
                mode = pass
                start_action = trap
            }
        }
    }
}

strongSwan yapılandırma örnekleri bu politika türünü ve loopback eş kuralını belgeler. Üçüncü seçenek, XFRM arayüzleriyle rota tabanlı bir tasarım olup politikayı küresel bir seçici yerine adlandırılmış bir arayüzden yönlendirilen trafiğe bağlar. Bu bir geçiş, ince ayar değil, ve trafik yine de müzakere edilen seçicileri karşılamalıdır.

OptionUse it whenCost
Narrow the selectorThe broad prefix was convenienceA rekey and a policy review
Passthrough childThe broad selector must stayOne exception per intended pair
XFRM interfacePolicy should follow routingA design migration

İstisnayı geri kalanı zayıflatmadan kanıtlayın

Değişikliği yükledikten sonra istisnayı ve korunmaya devam etmesi gereken sıradan bir hedefi test edin. İki yönü de kontrol edin, ardından OpenVPN tünelini düşürün ve istisna kapsamındaki trafiğe ne olduğunu doğrulayın. Tünel kapalıyken o öneki sessizce açık olarak gönderen bir istisna, olay sırasında keşfedilecek değil, bilerek verilmesi gereken bir politika kararıdır.

Hangi önekin hangi yolu kullandığını ve nedenini kaydedin. Aksi halde geniş bir seçici gören sonraki mühendis aynı incelemeyi yeniden açar ve yanıt kimsenin okumadığı bir commit iletisinde kalır.

İlgili makaleler