Ev bağlantısındaki bir medya kutusunu düşünün; internete yalnızca bir tünel üzerinden ulaşması gerekiyor. Tünel düştüğünde uygulama fiziksel arayüz üzerinden sessizce devam etmek yerine durmalıdır. Bu davranışı elde etmek yönlendirme değil güvenlik duvarı sorunudur ve ayrım önemlidir çünkü bir yol, daemon yeniden başlatılarak değiştirilebilirken filtre koyduğunuz yerde kalır. Aşağıda paketin yolu gerçekte nasıl karar veriyor ve ardından tünelin yeniden bağlanmasını sağlayan istisnalar nasıl sınırlanır, ona bakıyoruz.

Yerel çıkış, iletmeden farklı bir kancadır

Makinedeki bir uygulamadan çıkan paket çıkış kancasından geçer; makinenin başka bir ana bilgisayar için yönlendirdiği paket iletmeden geçer. Yalnızca forward anan bir politika ikincisini kısıtlar ve birincisini ardına kadar açık bırakır, bu yüzden pek çok çıkış kilidi doğru görünür ve hiçbir şey yapmaz. Arayüz eşleştirmesi de aynı kurala aittir: oifname "tun0" accept zaten tünelden yönlendirilmiş trafiği geçirir. Yönlendirme ve filtreleme de ayrı kararlar olarak kalır, yani filtre paketi reddederken bir üst bağlantı yolu var olabilir. Güvendiğiniz şey bu ayrımdır.

Diğer cihazlar için ileten bir ağ geçidinin iki kancaya da ihtiyacı vardır. Yalnızca çıkışı kilitlemek makinenin kendisini korur ve aşağıdaki her istemciyi sızıntıya açık bırakır.

İstisna listesini uç noktadan dışarı doğru yazın

Tünelin uç noktasıyla başlayın: tek bir hedef adres veya küçük onaylı küme, taşıma protokolü ve hedef bağlantı noktası, örneğin udp dport 1194 ip daddr 203.0.113.7 accept. İstemci bir ana bilgisayar adı çözümlüyorsa, ilk DNS alışverişi çözümleyiciye ve 53 numaralı bağlantı noktasına sınırlı kendi kuralına ihtiyaç duyar, o çözümleyicinin adresine genel bir izin değil. Her istisna var olma nedenini adlandırmalıdır. VPN bağlantı noktasına tüm UDP trafiği için izin, aklınızdaki tek kimliği doğrulanmış hizmetten çok daha fazlasını kapsar.

İlk çözümleme, kilitlerin genellikle çürüdüğü yerdir. Zamanlayıcıyla yenilenen bir adres kümesi, yenileme başarısız olduğunda tanımlı bir davranışa ihtiyaç duyar ve bu davranış başarılı olana kadar bağlantıyı açmak olamaz. Tünel ayaktayken tünel üzerinden yenileyin, aksi hâlde son bilinen sağlıklı uç noktaya dönün.

Yerel yönetim de aynı muameleye ihtiyaç duyar. Bir yönetim alt ağı yalnızca adresleri özel olduğu için güvenilir değildir ve ona güvenen bir kural kilidin etrafında ikinci bir yol davet eder.

Arayüz eşleştirmesi sağlıklı tünelin kanıtı değildir

tun0 arayüzünden çıkan her şeyi kabul eden kurallar, o arayüzdeki paketin tünelden geldiğini varsayar. Arayüz adları yeniden oluşturulur ve bir ad kriptografik kimlik değildir. Eş de arayüz ayaktayken gitmiş olabilir, bu da kuralı çok inandırıcı bir etkisizlik hâline getirir.

Bağlantı izleme buna bağlı bir tuzak ekler. Kurulu bağlantılar için geniş bir kural, bir akışın daha önce aldığı izni yeniden oynatır, bu yüzden tünel düşmeden önce başlayan oturum sonrasında çalışmaya devam eder. Durum tabanlı kabulü gerçekten kastettiğiniz arayüzler ve adreslerle sınırlayın, yoksa kendini açan bir kilit kurdunuz. Giriş ve çıkış kuralları da farklı soruları yanıtlar ve birini sertleştirip diğerini yok saymak makineyi düşünmediğiniz yönde erişilebilir bırakır.

Daemon çökmesinden ne sağ çıkar

Tünel açıldıktan sonra çalışan bir betiğin kurduğu filtre tünelle birlikte kaybolur, tam da ona ihtiyaç duyulan anda. Kilidi açılışta yükleyin ve daemonun yalnızca kendi istisnalarını yönetmesine izin verin.

Varsayılan yolu silmek de bir yedek değildir. Yol, daemonun sahip olduğu ve yeniden yazdığı durumdur ve onu kaldırmak yeniden bağlanmak için gereken yolu alabilir. IPv6 kendi planına ihtiyaç duyar, çünkü komşu keşfi ve yönlendirici duyuruları sıradan trafik engellenirken çalışmaya devam etmesi gereken bağlantı hizmetleridir. DHCP de aynı kategoriye girer. Bunları sonradan kesinti olarak keşfetmek yerine amacı olan istisnalar olarak yazın.

Devreye almadan önce kurtarma yolu

Kilidi başarısız olacağı biçimde test edin: tünelsiz açılış, daemonu öldürme, uç noktayı değiştirme ve yeniden bağlanma. Her durum uygulamaları durdurmalı ve kurtarma kanalını çalışır bırakmalıdır. Bunu konsoldan yapın, çünkü uzak kabuk kendi kuralınızla kilitlenme olasılığı en yüksek oturumdur.

Sonra sıradan bir uygulamanın hâlâ nereye ulaşabildiğini kontrol edin; zararsız bir hedef ve doğrulayabileceğiniz bir istekle. İstediğiniz sonuç, bağlantıda reddedilme ve tünelden başarıdır; ikisini de anlamına gelebilecek belirsiz bir zaman aşımı değil. Kural kümesini tüm tabloyu bir kabuk betiğinden değiştirmek yerine güvenlik duvarının geri kalanıyla aynı sahip altında tutun. Her iznin kendini gerekçelendirebildiği bir politika, kimsenin açıklayamadığı uzun bir kural kümesinden daha değerlidir.

İlgili makaleler