Serverin IP ünvanı dəyişdikdən sonra SNAT qaydası hələ də köhnə ünvanı göstərir
Tunel qoşula bilər, halbuki yönləndirilən hər paket dayanır, çünki tərcümə qaydası hələ də hostun artıq sahib olmadığı ünvana yazır.
Server yeni ünvana köçdü, müştərilər hələ də qoşulur və göndərdikləri heç nə internetə çatmır. Bu ayrılıq ipucudur: dinləyici soket və port yönləndirməsi köçmədən sağ çıxdı, buna görə tunel qalxır, halbuki yönləndirilən paketlərə tətbiq olunan mənbə tərcüməsi hələ də hostun artıq sahib olmadığı ünvanı göstərir. Yenidən yazılmış həmin paketlərə cavablar artıq mövcud olmayan maşına gedir.
Qoşulma və yönləndirmə müxtəlif yerlərdə uğursuz olur
Qurulma müştərilərin artıq bildiyi son nöqtədən asılıdır: ictimai ünvan, onun qarşısındakı port yönləndirməsi və içəridəki dinləyici. Yönləndirilən trafik isə paket tunelə girdikdən sonra verilən ikinci qərardan asılıdır; o zaman host mənbəyi yenidən yazır ki, cavablar geri yol tapa bilsin.
Ünvan dəyişikliyi yalnız ikinci qərarı pozur və buna görə simptom "qoşulub, amma internet yoxdur" kimi oxunur. Bu həm də izah edir ki, adi müştəri tərəfi yoxlamaları sağlam görünür: əl sıxma tamamlanır, müştəri ünvan alır və serverin tunel ünvanına ping hətta cavab verə bilər. Saatlar digər tərəfdə yaşayan nasazlıq üçün müştəridə xərclənir, buna görə qaydalar cədvəli ilk baxılacaq yerdir.
Düzəliş etməzdən əvvəl qaydanı və sayğaclarını oxuyun
Tərcümə qaydalarını sayğaclarla birlikdə sadalayın və konfiqurasiya edilmiş mənbəni hostun həqiqətən saxladığı ünvanlarla müqayisə edin. Ölü ünvana yenidən yazılmış qayda adətən giriş yolunda trafik göstərir, çünki paketlər ona çatır və tərcümə olunur, geri yolda isə heç nə görünmür.
sudo iptables -t nat -L POSTROUTING -n -v --line-numbers
ip -4 addr show
Orada olarkən üç sahəni yoxlayın: mənbə uyğunluğundakı hovuz, qayda birini adlandırırsa çıxış interfeysi və tuneldən tunelə trafikin yenidən yazılmasının qarşısını alan istisna. Bu istisnanı düzəliş zamanı itirmək asandır və onu itirmək qonşu trafikin işlədiyi görüntüsünü yaradır, halbuki cavabları qəribə yol tutur.
Sayğaclar sıfırda qalıbsa, paketlər bu qaydaya heç vaxt çatmır və ünvan hazırkı problem deyil. Zəncirdə daha əvvəl rəqabət edən qayda axtarın; bu, kimsə orijinalı düzəltmək əvəzinə əvəzedici əlavə edəndə olur. Qayda nömrələrini bir dəqiqə əvvəl qeyd etdiyiniz çıxışla müqayisə edin. Sıra konfiqurasiyanın hissəsidir, kosmetik detall deyil.
Mənbəni dəyişdirin və ya mənbə adlandırmağı dayandırın
Hostun sabit ünvanı olduqda, başqa bir qayda əlavə etmək əvəzinə qaydanı yerində dəyişdirin. Qayda nömrəsi ilə dəyişdirmə zəncirin qalan hissəsinin asılı olduğu sıranı qoruyur.
sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.151.0.40
Ünvan dinamik verildikdə heç bir mənbə adlandırmayın və nüvənin cari mənbəni çıxış interfeysindən seçməsinə icazə verin. Bu variant növbəti köçmədən düzəliş olmadan sağ çıxır, hansı ünvanın istifadə olunduğunu gizlətmək hesabına.
sudo iptables -t nat -R POSTROUTING 1 -s 10.8.0.0/24 ! -d 10.8.0.0/24 -o eth0 -j MASQUERADE
IPv4 yönləndirməsinin idarə olunan konfiqurasiya ilə hələ də aktiv olduğunu təsdiqləyin, sonra qaydayı distributivin öz mexanizmi ilə davamlı edin. Yalnız işləyən nüvədə edilən dəyişiklik növbəti yenidən başlatma ilə geri qayıdır, adətən heç kimin dəyişikliyə bağlamadığı texniki xidmət pəncərəsində.
Əvəzləməni səhv etməyin iki yolu
Hovuzu serverin LAN ünvanı əvəzinə tunel ünvanına tərcümə etmək cavabları birbaşa tunelə qaytarır, orada isə heç vaxt istəməyən müştəriyə doğru yönləndirilirlər. Bağlantı marşrut dövrəsinə bənzəyən şəkildə dayanır, çünki elə dədir.
Köhnənin üstünə ikinci tərcümə yığmaq digər səhvdir. İlk uyğun gələn qayda qalib gəlir, buna görə köhnə giriş silinənə qədər paketləri emal etməyə davam edir və yeni qaydanın sayğacları sıfırda qalır, halbuki hamı əvəzedicini günahlandırır. Yeni bir şey əlavə etməzdən əvvəl dublikatı silin. Sonra siyahını bir daha oxuyun və hovuza dəqiq bir tərcümənin uyğun gəldiyini təsdiqləyin.
Tunel IPv6 daşıyırsa, bütün baxışı digər yığında təkrarlayın. Tərcüməsi və yönləndirilmiş prefiksi olmayan IPv6 standart marşrutu eyni dərəcədə səssizcə uğursuz olur və onu unutmaq asandır, çünki üstündəki hər şey eyni görünür.
Gələn xidmətlər əks tərcümə tələb edir
VPN müştərisində xaricdən əlçatan olmalı xidmət mənbə tərcüməsi deyil, təyinat tərcüməsi tələb edir: ictimai port içəri girməzdən əvvəl müştərinin tunel ünvanına yenidən yazılır. Sonra yönləndirmə yolu həmin trafikə icazə verən açıq qayda tələb edir.
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.9.8.2:8080
Tunelin özünü daşıyan portu heç vaxt tərcümə etməyin, çünki bu yenidən yazma xidməti əlçatan saxlayan bağlantını kəsir. Tunel portunu təyinat qaydalarından tamamilə kənarda saxlayın. Sonra hər iki tərəfdən yoxlayın: yeni qaydada sayğaclar, tunel cihazında qısa tutma və ictimai ünvanı sınamazdan əvvəl tunel içindəki ünvana bir sorğu.