Split-tunnel kuralınız neden bir hizmetle eşleşmeyi bıraktı
Kural bir öneki sabitler ve hizmet taşındı. Uygulamanın gerçekten kullandığı hedefi okuyun, sonra istisnayı genişletmek yerine mekanizmayı onarın.
Split tunneling genellikle iki yoldan biriyle başarısız olur. Ya tünelin içinde olması gereken trafik tüneli dolanır, ya da dışarıda kalması gereken trafik içeri çekilir. Eskimiş kuraldan kaynaklanan arıza ilk türdür ve daha kafa karıştırıcıdır, çünkü kural tam yazıldığı gibi uygulanır. Değişen şey hedeftir: hizmet artık kuralın hiç adlandırmadığı bir adreste yanıt veriyor ve tünelde yanlış olan bir şey yok.
Kural neyi sabitler ve DNS ne döndürür
Split-tunnel kuralı hedefler hakkında statik bir ifadedir, genellikle bir önek, rota veya adres listesi olarak dile getirilir. Gönderim anında paketin hedefine göre değerlendirilir. Ana makine adı, yaşam süresi ve önbelleği olan bir adres kümesi döndüren bir aramadır ve yanıt çözümleyiciye, sorgu türüne ve dakikaya göre değişebilir.
Bu iki nesne asla birbirleriyle pazarlık etmez. Kural kendisine verilen önekle eşleşmeye devam eder, hizmet verdiği adresi değiştirmeye devam eder ve aralarındaki boşluk sessizce büyür. Bu yüzden belirti yapılandırma değişikliğinden sonra değil, sağlayıcı geçişinden veya sertifika yenilemesinden sonra ortaya çıkar. Kimse tüneli düzenlemedi, dolayısıyla kimse tünele bakmaz ve teşhis politikaya değil uygulamaya doğru kayar.
Eşleşmenin bozulduğu üç yol
Apaçık durum taşınmış bir hizmettir: operatör ona yeni bir adres verdi, DNS peşinden gitti ve istisna gitmedi. İkincisi, kuralın hiç kapsamadığı bir adres ailesidir; bu, bir ad yalnızca IPv4 için olan istisnanın yok saydığı AAAA kayıtlarını döndürmeye başladığında olur. Üçüncüsü bir çözümleyici farkıdır: iç ve genel görünüm aynı ad için farklı adresler döndürebilir, bu yüzden uygulamanızın kullandığı adres test ettiğiniz adres değildir.
Önbelleğe alınmış bağlantı dördüncü bir çeşittir ve gözden kaçırması kolaydır. Uygulama bir saat önce çözdüğü bir adresle hâlâ konuşuyor olabilir, bu da yeni aramanızla açık soketinin hizmetin nerede yaşadığı konusunda anlaşmadığı anlamına gelir.
Uygulamanın gerçekten kullandığı hedefi okuyun
Tarayıcı sekmesine değil, işletim sistemine ve soket tablosuna sorun. Arama, adın şu anda neye çözüldüğünü yanıtlar ve soket tablosu sürecin bağlı olduğu adresi gösterir; bu daha eski olabilir. Bir teori kurmadan önce ikisini de çalıştırın, çünkü aralarındaki fark vakaların yaklaşık yarısında yanıtın kendisidir.
getent ahosts api.example.com
dig +short api.example.com A
dig +short api.example.com AAAA
ss -tnp | grep -F api
ip route get 203.0.113.40
Sonra kuralın kapsadığıyla karşılaştırın. Geçerli adres istisnanın dışında kalıyorsa ve istek hâlâ başarısız oluyorsa, tünel yapılandırmasına dokunmadan nedeni buldunuz. Uygulama kurala uyan bir adrese bağlıysa ve istek hâlâ başarısız oluyorsa, sorun tünelin ötesinde ve bu yanlış bir araştırmadır.
Belirtiyi değil mekanizmayı onarın
Ürün bakımlı alan adı tabanlı yönlendirmeyi destekliyorsa onu kullanın ve belgelenmiş yenileme ve kapsam davranışını izleyin. Bu, statik bir tahmini bakımlı bir yanıtla değiştirir; karşılığında özelliğin belgelendiği gibi çalışmasına bağlı kalırsınız.
Tasarım statik bir listeye dayanıyorsa ona bir sahip ve güncelleme planı verin. Plan, adresin nasıl keşfedildiğini, değişikliği kimin onayladığını ve listenin bir sağlayıcı geçişini ne kadar hızlı izlemesinin beklendiğini söylemelidir. Sahibi olmayan bir liste, nedeni bilinen bir gelecek kesintisidir.
Kısa bir testte gördüğünüz her adresi yakalamak için istisnayı büyük bir komşu ağa genişletmeyin. Bu bir onarım değil; güvenlik sınırında kalıcı bir değişikliktir ve kural var olduğu sürece ilgisiz hizmetlerin tüneli sessizce atlamasına izin verir.
Niyetin iki yarısını da doğrulayın
Bir split-tunnel tasarımının iki niyeti vardır ve bir onarım ikisini de korumalıdır. Korumalı hizmet tünelden geçmeli ve hariç tutulan kategoriler onu dolanmaya devam etmelidir. Onarılan hedefe yeni bir bağlantı test edin, ardından dışarıda kalması gereken bir şeyi test edin.
curl -sv --max-time 5 https://api.example.com/ -o /dev/null 2>&1 | grep -E 'Trying|Connected to'
curl -sS --max-time 5 https://public.example/ -o /dev/null -w '%{http_code}\n'
Yeni adresi, seçtiğiniz mekanizmayı ve tarihi not edin. İşte o not, bir sonraki kişinin VPN'in kendi yapılandırmasını rastgele görmezden geldiği sonucuna varmasını engeller.