Yanıt tünelden değil LAN'dan çıkıyor: neden ve nasıl
Tünelden gelen istek, yanıtın da aynı yoldan çıkacağı anlamına gelmez. Linux hedefi arar ve genellikle yerel alt ağ kazanır.
Bir ağ geçidi üzerinden yayınlanan hizmet, internetin çoğundan çalışır ve tek bir ofisten başarısız olur. Birisi tüneli inceler, isteğin geldiğini görür ve yanıtın aynı yoldan geri dönmesi gerektiği sonucuna varır. Linux böyle çalışmaz ve tüneli ne kadar incelerseniz inceleyin yanıt değişmez. Yanıt hedefe göre yönlendirilir ve başarısız olan o tek çağıran, ana makinenin zaten doğrudan ulaştığı bir alt ağdadır.
Giden paketi gerçekte ne belirler
Çekirdek, paketin hedefi için bir yol arar; ilke kurallarını öncelik sırasına göre ve ardından eşleşen kuralın seçtiği tabloyu inceler. Paketin geldiği arayüz, bunu önemli kılmak için bir kural veya işaret yazılmadıkça hiçbir rol oynamaz. Bu, bu ana makinenin yönlendirme gerçeğidir, tüneldeki bir arıza değildir.
Bu nedenle tünelden alınan bir istek, fiziksel arayüzden çıkan bir yanıt üretebilir ve hiçbir cihaz hata bildirmeden akış tek yönlü hale gelir. Tünel hakkında bir sonuca varmadan önce iki yönü de denetleyin. Yanlış yöne çıkan yanıt tünel sayaçlarından kaybolur, bu yüzden iki uç bir şeyin gönderilip gönderilmediği konusunda anlaşamaz. Bir kurala dokunmadan önce hangi sayacın hareket ettiğine dikkat edin.
Yerel alt ağ neden kazanır
Yerel ağda adresi olan bir ana makine, ana tabloda bu önek için bağlı bir yola sahiptir ve bağlı yol doğrudan eşleşmedir. Çağıran aynı alt ağdan geldiğinde, arama tünel dikkate alınmadan önce yerel bağlantıyı bulur.
Teşhisi kafa karıştırıcı yapan bu asimetridir. Daha geniş internetten gelen çağıranlar herhangi bir yerel yolla eşleşmedikleri için çalışır, oysa ofis önekini paylaşan tek çağıran başarısız olur ve birinin test etmek için kullandığı çağıran tam da odur.
Eş kapsamı kurulu yollarla aynı değildir
Tünel tarafında, bir eşin izin verilen aralıkları tünele neyin gönderilebileceğini ve ondan hangi kaynakların kabul edildiğini açıklar. Bunlar, yerel yönlendirme tablosunun paketi nereye göndereceği hakkında hiçbir şey söylemez.
Tünel aracı ana makineye varsayılan bir yol kurarsa, ilgisiz trafiği yan hasar olarak tünele sürükleyebilir. Kararın bunun yerine bir ilke kuralına ait olması gereken yerde, aracın yol kurma seçeneği tam da bunu önlemek için vardır ve adresler, anahtarlar ve uç nokta ayarları tam olarak oldukları gibi kalır. Kolaylık için eklenen varsayılan bir yol, bir ana makinenin kendi yerel ağını kaybetmesinin yaygın bir yoludur.
Tabloyu kaynak adrese göre seçin
Kaynak tabanlı bir kural, hizmet adresinden gelen yanıtları varsayılanı tünel olan özel bir tabloya gönderir, diğer her şey ana tabloyu kullanmaya devam eder. Yerel olarak kullanılmayan tablo ve öncelik numaralarını seçin ve bir şey eklemeden önce mevcut kuralları okuyun. Kaydedilmiş bir dosya yerine canlı kuralları okuyun, çünkü ikisi yeniden başlatmadan sonra farklı olabilir.
ip -6 route add default dev wg0 table 200
ip -6 rule add priority 32000 from 2001:db8:aa::20/128 lookup 200
ip -6 rule add priority 32001 from 2001:db8:aa::20/128 unreachableSon satır, eksik bir yolun yerel bağlantıya geri dönmek yerine görünür şekilde başarısız olmasını sağlar. Kaynak gerçekten ana makineye atanmış olmalıdır ve olağan yerel ve ana aramalar önceki konumlarında kalmalıdır. Kural tabloyu kaynağa göre seçer; tablolar arasında önek uzunluklarını karşılaştırmaz.
Önce yolu, sonra hizmeti doğrulayın
Yakalamadan çıkarım yapmak yerine çekirdeğe ne yapacağını sorun, hizmet adresini kaynak seçici olarak kullanarak. Burada doğru yanıt tam bir paket izlemesini kurtarır.
ip -6 route get 2001:db8:bb::30 from 2001:db8:aa::20Çıktı tüneli adlandırmalıdır. Ardından dokunmadığınız bir kaynağı test edin ve hâlâ yerel bağlantıyı kullandığını doğrulayın, böylece değişiklik tek bir adresle sınırlı kaldı. Daha geniş bir seçici özgün şikâyet hakkında hiçbir şey kanıtlamazdı.
Bunun düzeltmediği şeyler
Ağ geçidindeki iletmeyi, güvenlik duvarı kurallarını ve ICMPv6 davranışını oldukları gibi bırakın, çünkü kaynak yolu bunların hiçbirinin yerine geçmez. Eksik Packet Too Big iletisi, hangi tablo aramayı kazanırsa kazansın büyük yanıtları bozmaya devam eder. Yönlendirme kuralları eklemeden önce bunu düzeltin, yoksa belirti değişiklikten sonra da sürer.
Bunlardan herhangi birini uygulamadan önce yayın modelini doğrulayın. Kendi arka uç bağlantısını açan ters vekil sunucu kendi kaynağını sunar ve çağıranı korumaz, bu nedenle bu arıza o tasarımda oluşamaz. Kuralı orada uygulamak hiçbir şeyi çözmeyen ve gerçek nedeni gizleyen bir yönlendirme istisnası eklerdi.
Son olarak, kural numaralarını ve tabloyu ana makinenin yapılandırma yönetimine yazın. Elle eklenen bir ilke kuralı bir sonraki yeniden oluşturmada kaybolur ve ofisteki çağıran aynı şikâyetle geri döner.