Ayrı çıxış: usb0 üzərində VPN hovuzu, eth0 üzərində şlüz trafiki
Yönləndirilmiş VPN müştəriləri usb0 ilə çıxa bilər, şlüz isə öz eth0 standart marşrutunu saxlayır. Tam seçilmiş cədvəl qurun, sonra nasazlığı sızma yerinə bağlanmağa məcbur edin.
Müştərilər qoşulur və autentifikasiyadan keçir, sonra onların trafiki yanlış yuxarı kanalla çıxır, çünki qutudakı yeganə standart marşrut şlüzün özünə aiddir. Həmin standart marşrutu dəyişmək maşının öz yeniləmələrini və idarəetmə girişini pozardı, ona görə seçim “bütün trafik”dən daha dar olmalıdır. İşlək forma müştəri hovuzunun daxili mənbə ünvanına əsaslanan və alternativ WAN-a sahib ikinci marşrutlaşdırma cədvəlinə yönələn siyasət qaydasıdır. Ondan sonra yoxlama siyahısı qaydanın özü haqqında deyil, tamlıq və nasazlıq davranışı haqqındadır.
Mənbə ünvanının marşrutlaşdırma qərarına qədər qaldığını təsdiqləyin
Mənbə aralığına uyğun gələn siyasət qaydası yalnız paket axtarış anında həmin mənbəni daşıyanda işə düşür. Yönləndirilmiş müştəri trafiki bunu edir, bir şərtlə ki, yuxarıda heç nə onu marşrutlaşdırmadan əvvəl yenidən yazmayıb. Şlüzün özünün yaratdığı trafik bunu etmir, buna görə də şlüzün öz standart marşrutu olduğu yerdə qala bilər.
Yerli testlər məhz burada yanıldır. Şlüzdə işlədilən curl şlüzün ünvanı ilə yerli yaradılmış axındır, ona görə əsas cədvəli götürür və müştəri yoluna dair heç nə sübut etmir. Qoşulmuş müştəridən test edin və ya mənbəyi həqiqətən hovuza aid olan trafik yaradın.
Real dəyərləri yazmaqla başlayın: hovuz prefiksi, onu daşıyan tunel interfeysi, ikinci WAN-ın ünvanı və növbəti hopu, və istifadə etmək istədiyiniz cədvəl nömrəsi. Yeni qaydalar əlavə etməzdən əvvəl əvvəlki cəhdin köhnə qaydalarını təmizləyin, çünki müxtəlif prioritetlərdə təkrarlanan qaydalar təsadüfi görünən nasazlıqlar yaradır.
Tam olan seçilmiş cədvəl qurun
Cədvəl dostu olan standart marşrut deyil. İçində hər axtarışın həll olunması üçün kifayət qədər marşrut lazımdır, o cümlədən WAN alt şəbəkəsi üçün qoşulmuş marşrut ki, növbəti hop əlçatan olsun. tun1 üzərində 10.77.0.0/24 hovuzu, növbəti hopu 203.0.113.1 olan 203.0.113.20/24 WAN ünvanı və 600 cədvəli üçün:
ip -4 route replace 203.0.113.0/24 dev usb0 src 203.0.113.20 table 600
ip -4 route replace 10.77.0.0/24 dev tun1 table 600
ip -4 route replace default via 203.0.113.1 dev usb0 table 600
ip -4 rule add priority 1500 from 10.77.0.0/24 lookup 600
Qayda mövcud hər hansı hər şeyi tutan qaydadan aşağı prioritetdə dayanır, ona görə uyğun müştərilər əvvəlcə 600 cədvəlinə düşür, qalan hər şey isə əsas cədvələ keçir. ip-rule arayışı sıralı axtarış modelini və seçici sintaksisini tam təsvir edir.
Sonra cədvəlin nəyi ehtiva etmədiyini düşünün. Yalnız əsas cədvəldə marşrutu olan təyinat, məsələn eth0 vasitəsilə əlçatan idarəetmə alt şəbəkəsi, 600 cədvəlində tapılmayacaq və orada standart marşrut olduqdan sonra əsasa qayıtmayacaq. Bu yollar vacibdirsə, onları seçilmiş cədvələ açıq şəkildə əlavə edin, bu adətən VPN çıxış cədvəli üçün düzgün cavabdır.
Dinləyicinin öz trafikini siyasətdən kənarda saxlayın
OpenVPN dinləyicisinin öz xarici bağlantısı var və müştərinin ona çatdığı yuxarı kanal üzərindən daşınır. Həmin trafik gəldiyi geri yolu saxlamalıdır, serverin ictimai ünvanını və ya bütün tunel interfeysini əhatə edən geniş qayda isə onu alternativ cədvələ çəkə bilər. Qaydanı daxili hovuzla məhdudlaşdırın, başqa heç nə ilə yox.
Əks yol filtrləmə də eyni səbəbdən nəzərdən keçirilməlidir. Müştərilərə cavablar usb0 ilə çıxarkən sorğu başqa keçidlə gəlibsə, sərt rp_filter ayarı marşrutlaşdırma siyasətinin etibarlı saydığı paketləri ata bilər. Qaydanın uğursuz olduğu qənaətinə gəlməzdən əvvəl hər iki interfeysdə qüvvədə olan sysctl dəyərlərini yoxlayın.
Sıra qutudakı hər şeyə nisbətdə də vacibdir. Docker körpüləri, ikinci VPN və provayder obrazından gələn hər hansı mövcud qaydalar hamısı prioritet əlavə edir, ona görə 100 prioritetinin tək olduğunu fərz etmək yerinə tam qayda siyahısını oxuyun.
Yönləndirmə və tərcüməni marşrutla uyğunlaşdırın
Marşrutlaşdırma yuxarı kanal seçir; yönləndirməyə icazə vermir. Nüvədə IPv4 yönləndirmə aktiv olmalıdır, firewall isə müştəridən WAN-a istiqaməti və geri trafiki qəbul etməlidir. FORWARD zənciri axını atan düzgün cədvəl, çatışmayan marşrutla eyni simptomu verir, buna görə də hər ikisi eyni keçiddə yoxlanılır.
İkinci WAN şəxsi hovuzu sizə geri marşrutlaşdırmayacaqsa, mənbəni həmin çıxışda tərcümə edin. Dinamik ünvanlı interfeys üçün hovuzla və interfeyslə məhdudlaşan dar masquerade qaydası adi seçimdir:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -o usb0 -j MASQUERADE
Burada əhatə hədəfdən daha vacibdir. Hər hansı çıxış interfeysinə uyğun gələn masquerade qaydası eth0 ilə düzgün çıxan trafiki də yenidən yazacaq və bu, marşrutlaşdırma səhvlərini düzəltmək yerinə gizlədir. Tərcümə marşrutlaşdırma qərarından sonra işləyir, ona görə yanlış yuxarı kanala göndərilmiş paketi heç vaxt bərpa edə bilməz.
Yollar fərqləndikdən sonra tunel yükü də diqqət tələb edir. Müştərilər böyük TCP MSS üzərində razılaşır və alternativ WAN-ın MTU-su daha aşağıdırsa və ya içində tunel varsa, böyük seqmentlər dayanır, kiçiklər işləyir. Yönləndirmə yolunda MSS-i sıxmaq bunu fasiləli donma yerinə proqnozlaşdırıla bilən davranışa çevirir.
usb0 yox olduqda nə baş verdiyini qərarlaşdırın
Boş cədvəl nasazlıqda bağlanan vəziyyət deyil. Uyğun marşrut yox olarsa, axtarış növbəti qaydaya davam edir, əsas cədvələ çatır və eth0 standartını götürür. İkinci WAN ilə çıxmalı olan trafik sakitcə birinci ilə çıxır və siyasətlə marşrutlaşdırılan yerləşdirmə üçün bu, adətən ən az istədiyiniz nəticədir.
Bu geri dönüş qəbuledilməz olduqda, 600 cədvəlinə açıq terminal marşrut əlavə edin, məsələn blackhole standart marşrutu, ya da interfeys söndürülmüşkən hovuzu firewall-da atın. Hər iki seçim yaza biləcəyiniz qərardır; sükut deyil.
Davamlılıq son bənddir. Hər iki keçidə sahib olan kimdirsə, istər şəbəkə meneceri, istər dispetçer skripti, istərsə də bağlantı həyat dövrü, hər yenidən qoşulmada marşrutları və qaydayı dublikat əlavə etmədən yenidən yaratmalıdır. Həqiqi müştəridən bir sorğu və şlüzdən ayrı bir sorğu ilə yoxlayın, hər ikisində müşahidə olunan çıxışı təsdiqləyin, sonra ikinci WAN-ı çıxarın və dizayn etdiyiniz iki nəticədən hansının həqiqətən baş verdiyinə baxın. IPv6 öz cədvəlini, qaydasını və tərcüməsini tələb edir; yuxarıdakı IPv4 qaydası onun haqqında heç nə demir.