Tailscale subnet marşrutlaşdırıcısında mənbə NAT-ı söndürün: tunel işləməyə davam edir, amma onun üzərindən keçən bağlantılar dayanır. Sorğular təyinat yerinə uzaq müştərinin öz overlay ünvanı ilə çatır ki, bu da dəyişikliyin məqsədidir və cavablar artıq LAN-ın heç vaxt bilməli olmadığı bir yola ehtiyac duyur. Belə yol olmadan paketlər yerə enir, cavablar adi şlüz vasitəsilə çıxır və nasazlıq heç bir firewall qaydasının izah etmədiyi firewall problemi kimi görünür. Tunel sağlamdır; geri qayıdış ayağı yoxdur.

SNAT nəyi gizlədirdi

SNAT aktiv olduqda marşrutlaşdırıcı subnetə yönləndirməzdən əvvəl mənbə ünvanını öz LAN ünvanı ilə yenidən yazır, beləliklə təyinat artıq necə çatacağını bildiyi hosta cavab verir və başqa heç nəyi konfiqurasiya etmək lazım deyil. Onu söndürmək orijinal mənbəyi qoruyur və təyinat öz naqilindəki qonşu əvəzinə overlay aralığında bir ünvan görür. Həmin ünvan realdır və tailnet üzrə marşrutlaşdırıla bilər, lakin LAN-dan standart şlüz vasitəsilə ona çatmaq mümkün deyil. Sənədləşdirilmiş açar --snat-subnet-routes=false və Linux subnet marşrutlaşdırıcısının özünə tətbiq olunur.

Bu, hər paket üçün açar deyil, daimi bir parametrdir, buna görə geri qayıdış yolu həmin marşrutlaşdırıcının xidmət etdiyi hər təyinat şəbəkəsi üçün mövcud olmalıdır. Bu da dəyişikliyi qeyd qutusu deyil, yerləşdirmə qərarı edir. Həmin marşrutlaşdırıcının xidmət etdiyi hər şey tələbi həmin anda miras alır.

Geri qayıdış yolu harada ola bilər

Üç yerləşdirmə geniş yayılmışdır və onlar düzgünlükdə deyil, əhatədə fərqlənir. Təyinat hostunda statik marşrut ən birbaşa və ən az miqyaslanandır, çünki hər cihaz öz nüsxəsini tələb edir. VPC-də və ya sayt marşrutlaşdırıcısında marşrut cədvəli bütün şəbəkəni bir anda əhatə edir və sinifsiz statik marşrutları daşıyan DHCP seçimi müştərilərə avtomatik çatır, lakin onu nəzərə almayan cihazlarda səssizcə uğursuz olur.

ip route add 100.64.0.0/10 via 192.168.1.10
ip route get 100.64.0.5

Hansı yerləşdirməni seçsəniz də, növbəti hop marşrutlaşdırıcının LAN ünvanıdır və heç vaxt onun tailnet ünvanı deyil. LAN hostu bu marşrut olmadan overlay-ə çata bilməz, buna görə overlay daxilində növbəti hop dairəvi olur və paketi heç yerə göndərmir. Bu tək səhv düzgün görünüb yenə də uğursuz olan konfiqurasiyaların çoxunu izah edir və yalnız marşrutlaşdırıcının öz cədvəlini oxuyan hər yoxlamadan keçir. Hansı yerləşdirmədən istifadə etdiyinizi yazın, əks halda növbəti şəxs səhv olanı yoxlayacaq.

Nasazlığı birtərəfli trafik kimi oxumaq

Simptomu səbəbdən daha asan tanımaq olar: xidmət marşrutlaşdırıcının özündə cavab verir və uzaq müştəridən səssiz qalır. Təyinatda tutma sorğuların gəldiyini və cavabların getdiyini göstərir ki, bu da siz cavabların hara getdiyini görməyincə uğur kimi görünür. Onlar standart şlüzə gedir, yəni giriş ayağı işləyib, geri qayıdış ayağı işləməyib.

Əvəzində marşrutlaşdırıcıda tutun, çünki o bir mübadilənin hər iki istiqamətini görür və cavabın ümumiyyətlə gəlib-gəlmədiyini göstərir. Cavab təyinatda görünür, amma marşrutlaşdırıcıda heç görünmürsə, marşrut təyinat tərəfində yoxdur və ya səhvdir. Əgər o marşrutlaşdırıcıda görünüb orada dayanırsa, problem daha irəlidədir və başqa araşdırmaya aiddir.

sudo tcpdump -ni any host 100.64.0.5
ip route get 100.64.0.5

Əsl ünvan bir marşruta dəyərmi

Təyinat şəbəkəsini yenidən konfiqurasiya etmək mümkün olmadıqda SNAT-ı saxlamaq daha sadə cavab olaraq qalır və qiyməti ondadır ki, hər müştəri təyinatın jurnallarında və siyasətində marşrutlaşdırıcı kimi görünür. Onu söndürmək tətbiq əsl mənbə ünvanına ehtiyac duyduqda və ya şəbəkə siyasəti marşrutlaşdırıcını paylaşan müştəriləri ayırmalı olduqda əsaslandırılır. Hər ikisi qanuni səbəbdir və heç biri pulsuz deyil. Fayda hər təyinat şəbəkəsində marşrut saxlamağa, üstəgəl aşağıda təsvir olunan firewall baxışına dəyməlidir.

Bir kiçik LAN üçün bu mübadilə adətən ödəyir, statik marşrut qəbul edə bilməyən cihazlar kütləsi üçün isə adətən ödəmir. Qərarı və səbəbi marşrutlaşdırıcı konfiqurasiyasının yanında qeyd edin ki, növbəti administrator hansı davranışın qəsdən olduğunu bilsin. Heç kimin yazmadığı standart səhvən qaçırılmadan ayırd edilə bilməz.

Firewall, jurnallaşdırma və ikiqat rol

Marşrutlaşdırıcının LAN ünvanı ilə uyğun gələn hər qayda artıq fərqli bir mənbə ilə uyğun gəlir və buraya icazə qaydaları və marşrutlaşdırıcını müştəri kimi qeyd edən hər hansı jurnal sahəsi də daxildir. Bu qaydaları ilk sınaqdan əvvəl oxuyun, ilk uğursuzluqdan sonra yox, çünki yalnız marşrutlaşdırıcının ünvanına icazə verən qayda yeni mənbəni tamamilə bloklayır. Əvəzi ehtiyacı olan müştərilərə və portlara qədər daraldın, sonra onun bütün tailnet-i səssizcə qəbul etmədiyini təsdiqləyin.

sudo nft list ruleset | grep -n '100\.64'
sudo iptables-save | grep -n '100\.64'

Bir düyünün həm çıxış düyünü, həm də subnet marşrutlaşdırıcısı kimi xidmət etməsi sənədləşdirilmiş bir birləşmədir və subnet SNAT-ı söndürüldükdən sonra yuxarı istiqamətli trafiki itirə bilər. Bu rolları ayrı düyünlərə ayırmaq qeydi aradan qaldırır və hər marşrut və firewall siyasətinə tək sahib verir. Rollar birlikdə qalmalıdırsa, bu davranışı gözləyin və müştərini günahlandırmazdan əvvəl yoxlayın. Marşrutu, açar parametrini və rol təyinatını bir qeyddə saxlayın, çünki növbəti bağlantı uğursuz olduqda onlar birlikdə oxunur.

Əlaqəli məqalələr