Eyni paket üzərində iki müstəqil qərar verilir və onlardan hər hansı biri sorğunu səssizcə bitirə bilər. Marşrut axtarışı interfeys və növbəti hop seçir, sonra paket filtri bu kombinasiyaya icazə verilib-verilmədiyini qərar verir. Vaxt aşımı sizə ikisindən birinin imtina etdiyini, hansının olduğunu deyil bildirir. Mərhələləri sıra ilə işləyin və təmir adətən təxmin olmaqdan çıxır.

İki qərar, bir paket, iki sahib

Marşrut axtarışı əvvəlcə siyasət qaydalarına, sonra onların göstərdiyi cədvələ baxır və təyinatla uyğun gələn ən dəqiq prefiksi seçir. Tunel marşrutu quraşdıran müştəri bu qərarın sahibidir və heç bir qoruyucu divar qaydası onu əvəz edə bilməz. Axtarış gözlənilməz yerə yönəldikdə, bütün sonrakı mərhələlər səhv paket üzərində işləyir.

Filtrleme ayrıdır. Linux hostunda netfilter qarmaqları trafiki paketin kimə aid olduğuna görə bölür: çıxış maşından çıxır, giriş orada bitir, forward oradan keçir. VPN müştərilərini qəbul edib onları LAN-a yönləndirən şlüzə forward yolu lazımdır və bu, əksər standart konfiqurasiyaların boş qoyduğu zəncirdir.

Mənbə seçimi eyni qərara aiddir və uyğunsuzluqların çoxu burada gizlənir. Yadro, marşrut birini göstərmədikcə çıxan interfeysdən mənbə ünvanı seçir, buna görə LAN alt şəbəkəsi üçün yazılmış filtr qaydası tunel ünvanı ilə çıxan paketə heç vaxt uyğun gəlmir.

Axtarışın həqiqətən nə seçdiyini oxuyun

Qərarı çıxarışla tapmaq əvəzinə çap edin. Aşağıdakı əmr yadronun həmin təyinat üçün istifadə edəcəyi marşrutu, o cümlədən interfeysi və seçəcəyi mənbəni göstərir:

ip route get 10.8.0.5
ip route get 10.8.0.5 from 192.0.2.44
ip rule show
ip route show table all | sed -n '1,40p'

VPN müştəriləri çox vaxt əsas cədvəldən aşağı prioritetlərdə siyasət qaydaları quraşdırır, buna görə təmiz əsas cədvəl tək başına heç nə sübut etmir. Qayda prioritetlərini seçdikləri cədvəllərlə müqayisə edin və tunel marşrutunun əl ilə bir dəfə əlavə edilmək əvəzinə yenidən qoşulmadan sonra qaldığını yoxlayın.

Siyasət əsaslı IPsec marşrutlaşdırmanın əhatə etmədiyi üçüncü uyğunlaşdırma mərhələsi əlavə edir, bunu strongSwan-ın forward qeydləri tunel və nəql qurğuları üçün təsvir edir. Təhlükəsizlik siyasəti trafiki prefiks və protokola görə seçir, marşrut isə yalnız qorunmayan paketin hara gedəcəyini qərar verir. Marşrutlanan, lakin uyğun selektoru olmayan alt şəbəkə ya qorunmamış qalır, ya da konfiqurasiyadan asılı olaraq atılır və heç bir nəticə qoruyucu divar problemi kimi görünmür. Siyasəti çap edin və onun selektorlarını tunelin daşımasını gözlədiyiniz prefikslərlə müqayisə edin.

Filtrleme marşrutda deyil, qarmaqda tətbiq olunur

VPN dinləyicisinə icazə verən qayda şlüzün özünə ünvanlanmış trafik haqqında qaydadır. O, həmin şlüzün arxasındakı hostlara çatan müştərilər haqqında heç nə demir, çünki forward trafik fərqli zəncirdən keçir. Qayda dəstini bir düz siyahı kimi oxumaq, düzgün görünən qaydanın heç vaxt işə düşməməsinin adi səbəbidir.

Sayğaclar sualı tez həll edir. Paket sayı sıfır olan qaydaya heç vaxt çatılmayıb, bu da səhv zəncirə, səhv interfeysə və ya daha erkən atılmaya işarə edir. Atma siyasəti altında sayı artan qayda axtardığınız sərhəddir və paket səhv marşrutlaşdırılmaq əvəzinə atılır.

Zondunu müştərinin istifadə etdiyi yoldan göndərin

Şlüzün özündə aparılan testlər şlüzün öz mənbə ünvanı ilə çıxış və girişdən keçir. Bu, müştərinin forward sorğusundan fərqli yoldur, buna görə uğurlu yerli curl göründüyündən azını sübut edir. Uğursuz olan maşından yoxlayın və ya interfeysi və mənbəni açıq şəkildə təyin edin.

nc -vz -w 3 10.8.0.5 443
ping -c 3 -W 1 10.8.0.5
tcpdump -ni any host 10.8.0.5 and port 443
iptables -vnL FORWARD --line-numbers
nft list ruleset | sed -n '1,60p'

Hər iki tərəfdə tutma qalan halları ayırır. Müştəridən çıxıb heç vaxt çatmayan SYN marşrutlaşdırma, şifrələmə və ya yuxarı axın giriş siyahısı deməkdir. Gəlib cavab almayan SYN xidmət və ya onun host filtri deməkdir və tunel heç vaxt problem olmayıb.

Qayıdış trafiki ayrıca baxışa layiqdir. Asimmetrik marşrutlaşdırma və əks yol filtri səhv interfeysə gələn cavabları atır, bu da bloklanmış port kimi deyil, birtərəfli əlaqə kimi görünür. Qoruyucu divarı törətmədiyi simptoma görə günahlandırmazdan əvvəl sysctl dəyərini yoxlayın.

Loglama birinci addım deyil, ikinci rəy kimi işləyir. Forward zəncirində müvəqqəti log ifadəsi ona dəyən interfeysi və ünvanları göstərir və sonradan silmək asandır. Onu daimi qoysanız, cavab əvəzinə log həcmi problemi qurmuş olarsınız.

Hər dəyişikliyi yenidən qoşulmadan sonra qalan yerə qoyun

ip route add ilə əlavə edilmiş marşrut interfeys düşənə qədər yaşayır. Onu əvəzinə bağlantı profilində saxlayın: NetworkManager bağlantıda əlavə marşrutları qəbul edir, netplan isə onları açılışlar arasında saxlayır. Eyni qayda müştəri tərəfindəki qoruyucu divar istisnasına da aiddir, o, növbəti yenidən yükləmədən sonra yox olur.

Server tərəfindəki qaydalar xidmətin başlanğıcda yüklədiyi konfiqurasiya faylına aiddir, bağladığınızda bitən interaktiv sessiyaya deyil. Qaydanı yazın, yenidən yükləyin və sayğacın hərəkət etdiyini təsdiqləyin, çünki sintaksisi rədd edən yenidən yükləmə köhnə qayda dəstini səssizcə yerində qoyur.

Sonra orijinal tətbiq sorğusunu başdan sona təkrarlayın və hansı qatın dəyişdiyini qeyd edin. Filtr dəyişikliyi də tələb edən marşrut düzəlişi yenə də uğursuz olacaq və birincinin getdiyini bildikdən sonra ikinci uğursuzluq daha asan oxunur. Nəticənin yanında tarixi və müştəri versiyasını qeyd edin, çünki marşrutlaşdırma və filtrleme standartları buraxılışlar arasında dəyişir. Bu qeydi biletdə saxlayın ki, növbəti şəxs iki mərhələli gəzintini təkrarlamaq əvəzinə dayandığınız yerdən başlasın.

Əlaqəli məqalələr