Bütöv bir LAN-ı VPN tunelinin arxasına qoymaq asan hissəsidir; uzaq tərəfin bu müştəriləri necə gördüyünə qərar vermək isə asan deyil. Maskarad hər LAN mənbəyini şlüzün tunel ünvanına yenidən yazır, buna görə uzaq tərəf bir həmkara cavab verir. Siyasət marşrutlaşdırması orijinal ünvanları saxlayır və uzaq tərəfin onlara necə çatacağını bilməsini tələb edir. Heç biri standart deyil; seçim uzaq tərəfin kimə aid olduğundan və cihaz başına kimliyin vacib olub-olmamasından irəli gəlir.

İki dizayn fərqli şeylər vəd edir

Maskarad LAN-ı görünən tək bir hosta endirir: şlüz. Uzaq şəbəkə həmin bir ünvana cavab verir, şlüz də cavabları axını başladan müştəriyə geri tərcümə edir. Uzaq tərəfdə şəxsi prefikslərə marşrut lazım deyil, buna görə bu dizayn onları daşımaqdan imtina edən provayderə tab gətirir. Şlüz həm də hər bağlantının mənbəyi olur, beləliklə uzaq tərəf iki müştərini ayırd edə bilmir.

Siyasət marşrutlaşdırması hər müştəri ünvanını toxunulmaz saxlayır. Uzaq şəbəkə həqiqi mənbəyi görür və onu qeyd edə, hər host üçün qayda tətbiq edə və ya cavabı birbaşa həmin ünvana göndərə bilər. Bu görünürlük bütün məsələdir və bir öhdəlik gətirir: uzaq tərəfdə LAN prefiksi üçün tuneldən geri qayıdan marşrut olmalıdır. Qaydanı aktivləşdirməzdən əvvəl həmin marşrutu planlaşdır, çünki tunel hər halda qalxacaq və yalnız cavablar çatışmayacaq.

Uğursuzluq rejimləri vədlər qədər fərqlənir. Çatışmayan maskarad qaydası şəxsi mənbələrlə çıxan və heç vaxt qayıtmayan paketlər yaradır. Çatışmayan qayıdış marşrutu siyasət marşrutlaşdırmasında eyni simptomu yaradır, lakin düzəliş şlüzdə deyil, uzaq marşrutlaşdırıcıdadır.

Maskarad: uzaq tərəfdə bir həmkar

Maskarad yolunun əhəmiyyətli bir sırası var. Hər hansı NAT qaydası faydalı iş görəcəksə, ilk növbədə yönləndirmə aktivləşdirilməlidir, filtr cədvəli tranzitə hər iki istiqamətdə icazə verməlidir və yalnız bundan sonra tunel interfeysində tərcümə tətbiq olunur.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Müştərilərə hələ də şlüzə yol lazımdır. Ya şlüz onların standart marşrutlaşdırıcısıdır, ya da uzaq prefiks üçün xüsusi marşrut daşıyırlar; əgər ayrı bir marşrutlaşdırıcı standart olaraq qalırsa, həmin marşrutlaşdırıcı tunel təyinatları üçün statik marşruta ehtiyac duyur, əks halda paket şlüz onu görməzdən əvvəl yanlış hopa gedir.

DNS ayrı bir qərardır. Uzaq tərəfdəki həlledici yalnız cavabı müştəriyə geri gedə bildiyi halda cavab verir. Maskarad altında sorğu şlüzdən gəlmiş kimi görünür, beləliklə həlledicinin qayıdış yolu artıq təmin olunub; siyasət marşrutlaşdırması altında həllediciyə hər hansı digər uzaq xidmət kimi eyni geri marşrut lazımdır.

Siyasət marşrutlaşdırması: mənbəni saxla, qayıdış yolu əlavə et

Siyasət marşrutlaşdırması cədvəl və onu seçən qayda ilə başlayır. LAN interfeysindən daxil olan trafik xüsusi cədvələ göndərilir və həmin cədvəl tuneldən keçən standart marşrut daşıyır. Əsas cədvəl toxunulmaz qalır, buna görə şlüzün özünün yaratdığı trafik fərqli yolu izləyə bilər.

ip rule add iif eth1 table vpn
ip route add default dev tun0 table vpn

Sonra uzaq tərəf LAN prefiksini tuneldən geri marşrutlaşdırmalıdır. Bu, bu şlüzdə deyil, uzaq marşrutlaşdırıcıda olan bir konfiqurasiyadır. Şlüz həm də əsas cədvəlin gözlədiyindən fərqli interfeysdə gələn cavabları qəbul etməlidir; sərt rejim həmin paketləri atdıqda boşaldılmış tərs yol filtrləməsi (rp_filter 2-yə qoyulub) adi düzəlişdir.

İki tunel aktiv olduqda hər axını daxil olduqda işarələ və işarənin cədvəli seçməsinə icazə ver. Yalnız giriş interfeysinə baxan qayda hər iki tunelin trafikini eyni cədvələ göndərir, beləliklə ikinci tunel birincinin axınlarını oğurlayır. Həmin işarəni yenidən qoşulmadan uzun yaşayan bağlantı ilə yoxla, qarışıq siyasət məhz o zaman üzə çıxır.

Sahibliyə və uzaq tərəfin nə qeyd etdiyinə görə qərar ver

Tunel provayderdə bitirsə, maskaraddan istifadə et. O operator şəxsi LAN diapazonlarını marşrutlaşdırmayacaq və şlüzünün arxasındakı ayrı-ayrı müştəriləri fərqləndirməyə heç bir səbəbi yoxdur. Tək görünən həmkar onun siyasətinin dəstəklədiyi yeganə modeldir, ona görə də ona bunu ver və tərcüməni öz kənarında saxla. Provayder bir həmkar görür, bu da onun siyasətinin gözlədiyi şeydir və müştərilərin həmin tək kimliyi miras alır.

Hər iki tərəf sənindirsə və uzaq xidmətlər mənbə ünvanlarına əsaslanırsa, siyasət marşrutlaşdırması əlavə marşrutuna layiqdir. Onda firewall qaydaları, istifadəçi başına giriş və audit qeydləri müştəriləri ayırd edə bilər. Uzaq tərəfə yalnız çatımlılıq lazımdırsa, maskarad daha sadədir və bir sinif qayıdış-marşrut səhvini aradan qaldırır.

Hibrid dizaynlar normaldır: öz şəbəkənin içində siyasət marşrutlaşdırması, provayder kənarında maskarad. Vacib olan hansı hopun tərcümə etdiyini və hansının marşrutlaşdırdığını yazmaqdır, çünki bir müştəri üçün təsadüfən əlavə edilən NAT qaydası eyni zəncirdəki hər müştərinin mənbəyini gizlədir.

Bir müştəridən, sonra ikinci müştəridən yoxla

Testi trafik başlayan yerdə apar. Hostun istifadə etdiyi marşruta bax, paketin tunel interfeysində görünməsini izlə və tərcümə üçün conntrack-i yoxla. Bu ardıcıllıq paketin sadəcə bir yerə çatdığını deyil, nəzərdə tutulan yolu getdiyini sübut edir.

Testi yenidən qoşulmadan sonra təkrarla. İnterfeysi adlandıran maskarad qaydası yeni tunel ünvanına tab gətirir; köhnə ünvanı adlandıran qayda isə gətirmir. Sonra ikinci LAN hostunu yoxla, çünki bir maşında işləyən dizayn çox vaxt şlüz siyasətindən deyil, həmin maşının öz marşrutundan asılı olur.

Seçilmiş modeli, tərcümə edilmiş və ya saxlanılmış mənbəyi və qayıdış marşrutunun sahibini şlüz qeydlərinə yaz. Əks halda müştəri və ya tunel əlavə edəcək növbəti şəxs təxmin edəcək və təxmin işləyən LAN-dan VPN-ə quruluşun qismən bir quruluşa çevrilməsi belə olur.

Əlaqəli məqalələr