VPN dışına yalnızca bir yerel web hizmetini porta göre yönlendirin
Kaynak port kuralının bir ana makine hizmetini WAN üzerinden dışarı çıkarıp çıkaramayacağına, ana makinenin geri kalanının VPN kullanmaya devam edip etmeyeceğine ve bunun maliyetine karar verin.
Bir ana makine hizmeti, makinedeki her şey tüneli kullanmaya devam ederken fiziksel yukarı akış bağlantısı üzerinden internete yanıt vermelidir. İlke tabanlı yönlendirmenin bu yükü taşıyıp taşıyamayacağını üç koşul belirler ve her biri kural yazmadan önce doğrulanması ucuzdur. Hizmet bu ana makinede sonlanmalı, DNAT veya iletilen bir portun arkasında olmamalıdır, VPN'in kendi kuralları istisnaya izin vermelidir ve isteği değil yanıtı eşleştirmelisiniz. Üçünden biri başarısız olursa aşağıdaki komutlar hatasız yüklenir ama işe yarar bir şey yapmaz.
Kural yazmadan önce üç koşulu denetleyin
Bir portu DNAT ile yayınlayan konteyner veya port iletiminin arkasındaki sunucu, bu ana makinede oluşmayan paketler üretir. Bu paketler iletilir, dolayısıyla ana makinenin yerel girdisine bağlı bir kural onları hiç görmez ve trafik varsayılan yolu kullanmaya devam eder. Devam etmeden önce hizmetin gerçekte nerede çalıştığını doğrulayın, çünkü insanların en sık yanıldığı koşul budur.
İkinci koşul mekanik değil ilkedir. Tüneli atlayan her yol, tünelin amacına bir istisnadır ve yönetilen bir ana makinede bu karar ilkenin sahibine aittir, zaman aşımında hata ayıklayan kişiye değil.
Yanıtı eşleştirin, istemcinin hedef portunu değil
TCP 443'te dinleyen bir sunucunun yanıtı ana makineden kaynak portu 443 ile ayrılır. Aynı ana makinedeki tarayıcı uzak bir HTTPS sitesine bağlanırken geçici bir kaynak port ve hedef port 443 gönderir. İkisi de port 443 trafiğidir ve yalnızca biri WAN tablosunu almalıdır, bu yüzden hedef port eşleştirmesi yanlış yarıyı yakalar.
Ayırt edebildiğiniz şey yanıtın yönüdür. Kaynak portu eşleştirin, kuralı yerel olarak oluşturulan paketlerle sınırlayın, kural tarayıcının isteklerine dokunmadan hizmetin kendi yanıtlarını kapsar.
Kural ona işaret etmeden önce eksiksiz bir dönüş tablosu oluşturun
Boş tablo yol yok demektir, bu da bozuk ilke yerine bozuk hizmet gibi görünür. Önce onu doldurun, ana makinede başka hiçbir şeyin talep etmediği bir tablo numarası ve öncelikle:
ip -4 route add table 100 192.0.2.0/24 dev eth0
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 iif lo ipproto tcp sport 443 lookup 100
Sayıları kopyalamak yerine çalışan ana makineden okuyun. ip -4 rule show hangi önceliklerin alındığını söyler ve var olan bir önceliğe kural eklemek, ayrı ayrı bakıldığında doğru görünen iki kuralın sırasını sessizce değiştirir.
Burada asıl işi iki seçici yapar. iif lo çekirdeğin ana makinenin kendi ürettiği paketleri bildirme biçimidir, bu yüzden kural dışarıdan gelen iletilmiş trafiği yanlışlıkla yakalayamaz. ipproto tcp sport 443 bunu tek bir taşıma ve tek bir porta daraltır, bu da gereksinimin izin verdiği kadar sıkıdır. Protokol seçicisini kaldırırsanız kural UDP 443'ü de yakalar, bu farklı davranışa sahip başka bir hizmettir.
Özel yanıtları tünelin içinde tutun
Aynı dinleyici özel taraftaki istemcilere de yanıt veriyorsa, tablo 100'de her şeyi yakalayan varsayılan WAN yolu bu yanıtları yukarı akış bağlantısından geri göndermeye çalışır. WAN varsayılanını izlememesi gereken özel önekleri ekleyin veya bir sonraki ilke kuralına düşmelerine izin verin:
ip -4 route add table 100 throw 10.90.0.0/24
throw yolu bu tablodaki aramayı bitirir ve paketi kural listesine geri verir, böylece ardından gelen VPN ilkesi şansını yakalar. Kendisi tünele hiçbir şey yönlendirmez ve sonraki hiçbir kuralın eşleşen yolu yoksa paket yine başarısız olur; throw'u düzeltme sanmak yerine sonraki ilkeyi doğrulayın.
Ters yol filtrelemesi ve ana makinenin güvenlik duvarı kuralları gelen istek için hâlâ geçerlidir. Doğrulamayı gevşetmeden önce bunların gerçek kararlarına bakın, çünkü yönlendirme istisnası rp_filter öğesinin imkânsız saydığı bir dönüş yolunu kabul etmesini sağlamaz.
TCP'yi, sonra QUIC'i, sonra yeniden başlatmayı test edin
Yetkili bir dış istemciden bir ve özel taraftan bir bağlantı açın, sonra yanıt aramasını gerçek adresler ve portlarla inceleyin. Dış yanıt tablo 100'ü alıyor ve özel yanıt almıyorsa, ilke istediğinizi yapıyor.
HTTP/3 UDP üzerinden sunulur ve bir TCP kuralıyla eşleşmez, bu yüzden QUIC dinleyicisi kendi seçicisine ihtiyaç duyar, aksi halde HTTPS çalışırken tüneli kullanmaya devam eder. Karar kıldığınız kuralları arabirime sahip bileşende saklayın ve yeniden bağlanma veya DHCP yenilemesinden sonra doğrulayın. Rakip bir yönetici yeniden başlatmadan sonra çalışma zamanı yolunu kaldırırsa, bu kaynakta düzeltilmesi gereken bir sahiplik sorunudur, üstüne daha geniş NAT kuralları eklemek için bir neden değildir.