eth0:0 etiketdir, cihaz deyil: SNAT uyğunluğunu düzəldin
Sıfır sayğac qaydanın mövcud ola bilməyən interfeysi adlandırdığını bildirir. Əsl cihazı oxuyun, -o uyğunluğunu düzəldin, sonra tərcümə olunan ünvanı qəsdən seçin.
Bir VPN müştəri hovuzuna öz ictimai ünvanını verməli olan NAT qaydası sıfır paketdə dayanır, halbuki həmin hovuz səhv mənbə altında çıxmağa davam edir. Qayda adətən ünvanda yox, interfeysdə səhv edir. -o eth0:0 mövcud olmayan cihaza istinad edir, çünki eth0:0 bir ünvana əlavə edilmiş etiketdir, həmin ünvanın cihazı isə eth0. Sayğacları izləmək bunu təsdiqləməyin ən sürətli yoludur və düzəliş araşdırmanın təklif etdiyindən kiçikdir.
Yadronun cihazı necə adlandırdığını yoxlayın
Heç nəyi dəyişməzdən əvvəl iki görünüşü ayrı-ayrılıqda oxuyun:
ip link show
ip address show dev eth0
ip route get 203.0.113.20
Keçid siyahısı interfeysləri göstərir. Ünvan siyahısı da etiketi daşıyan ikinci bir IPv4 ünvanı göstərə bilər: eth0:0, və o ünvanın cihazı hələ də eth0. iproute2 ünvan təlimatı etiketə ünvanın adı kimi yanaşır, ikinci keçid kimi yox, və bütün problemin dayandığı fərq elə budur.
Tarix qarışıqlığı izah edir. Köhnə ifconfig eth0:0 sintaksisi həqiqətən yeni interfeys kimi görünürdü və o dövrün skriptləri hələ də birinə istinad edir. Müasir sistemdə ləqəb ünvan üzərində etiketdir və marşrutlaşdırma və ya netfilter yolunda heç nə ona ayrı çıxış nöqtəsi kimi baxmır.
Qaydanın həqiqətən nəyə uyğunlaşdığını yoxlayın
Sayğacları yaddaşdan deyil, qaydalar siyahısı ilə birlikdə oxuyun:
iptables -t nat -L POSTROUTING -v -n --line-numbers
Uyğun trafik axarkən paket sayğacı sıfırda qalan qayda qiymətləndirilmir və çıxış interfeysi şərtinin eth0:0 adlandırması tez-tez səbəb olur. Marşrutun seçdiyi çıxış cihazı eth0, buna görə fərqli ad axtaran şərt heç vaxt doğru olmur, yadro hansı mənbə ünvanını seçsə də.
Şərti əsl cihaza dəyişin və etiketi ondan kənarda saxlayın. Həmin cihazı paylaşan iki müştəri hovuzunu ayırd etmək lazımdırsa, onları mənbə prefiksi ilə ayırın, mövcud ola bilməyən interfeys adı ilə yox. Üst-üstə düşməyən -s uyğunluqlu iki qayda oxunaqlı və sınanadır; uydurma cihazlı bir qayda heç biri deyil. Hər qaydaya hovuzun adını çəkən şərh verin, çünki altı aydan sonra prefiks təkbaşına heç kimə onun niyə orada olduğunu deməyəcək.
Cihazı seçən marşrutu yoxlayın
Postrouting NAT marşrut artıq çıxış interfeysini seçdikdən sonra işləyir, ona görə qaydadakı interfeys marşrutun seçdiyi interfeys olmalıdır. Yadrodan birbaşa ip route get ilə nümunəvi müştəri ünvanı üçün soruşun və həm cihazı, həm bildirdiyi mənbəyi oxuyun.
Cavab eth0adlandırırsa, qaydanın interfeys hissəsi həll olunub. Əgər tunel cihazı adlandırırsa, paket heç vaxt redaktə etdiyiniz qaydaya çatmır və axtarış marşrut cədvəlinə və onun prioritetlərinə keçir. Paket başqa yerə çıxdığı üçün heç vaxt uyğunlaşmayan qayda sayğac çıxışında səhv yazılmış cihazlı qayda ilə eyni görünür. Redaktə etməzdən əvvəl hansı halda olduğunuzu təsdiqləyin, çünki ikincisi mətn dəyişikliyi deyil, marşrut dəyişikliyi tələb edir.
Tərcümə olunan mənbəni qəsdən seçin
Cihaz düzgün olduqdan sonra mənbə ünvanı ayrı qərardır. Bu nümunəvi IPv4 hovuzu və yalnız nümunə ünvandır:
iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
-j SNAT --to-source 203.0.113.20
Ünvanı --to-source içinə yazmaq heç kimi onu sizə geri marşrutlaşdırmağa məcbur etmir. Yuxarı provayder və ya ünvan sahibi həmin ünvan üçün cavabları bu hosta çatdırmalıdır və ünvan istifadə etməyə səlahiyyətli olduğunuz biri olmalıdır. Əgər deyilsə, qayda uyğunlaşacaq və tərcümə edəcək, cavablar isə yenə başqa yerə gedəcək.
Mənbə ünvanını dəyişmək yuxarı kanalı dəyişməklə eyni deyil. Əsl tələb fərqli fiziki yol olduqda, marşrut siyasəti əvvəlcə həmin yolu seçməlidir; sonra SNAT mənbəni siyasətin seçdiyi cihazda yenidən yazır. eth0 cihazına daha çox etiket əlavə etmək nə marşrutu, nə də icazəni təmin etmir.
Yenicə açdığınız bağlantı ilə yoxlayın
Mövcud bağlantını təkrar istifadə etmək əvəzinə yeni müştəri bağlantısı açın. Bağlantı izləmə axın başlayanda qeyd etdiyi tərcüməni saxlayır, buna görə köhnə sessiya əvvəlki mənbə ünvanını işlətməyə davam edə və düzgün yeni qaydanı sınıq kimi göstərə bilər. Sayğacın artmasını izləyin, sonra tərcümə olunan mənbəni kabeldə və ya uzaq tərəfdə müşahidə edin.
Bir interfeysi paylaşan bir neçə hovuz üçün hər birinə açıq mənbə uyğunluğu və öz tərcümə ünvanını verin, onları firewall-un idarə olunan konfiqurasiyasında saxlayın və qiymətləndirilmə sırasını qeyd edin. Sonra nəyi yoxladığınızı yazın: ip route getəmrindən çıxan cihaz, yerini dəyişən sayğac və uzaq tərəfin gördüyü mənbə. Bu qeyd növbəti hesabatı ləqəb qarışıqlığını təkrarlamadan cavablandırır.