Bir Linux şlüzündə iki OpenVPN klienti: siyasəti bölün
Hər iki tunel qalxa bilər, halbuki hər klient yalnız birini istifadə edir. Mənbəyə görə qərar verin, hər qrupa öz cədvəlini verin, sonra seçilmiş cihazda icazə verin və çevirin.
İki OpenVPN demonu eyni anda uğurlu tunel bildirə bilər, halbuki şlüz bütün klientləri eyni tuneldən göndərir. Hansı tunelin istifadə olunacağına əl sıxışmada heç nə qərar vermir; bunu nüvə qərar verir, paket-paket, siyasət qaydalarını və hər qaydanın adlandırdığı cədvəli gəzərək. Buna bu cür baxdıqda konfiqurasiya OpenVPN seçimlərindən çıxıb iki sahibi olan marşrutlaşdırma matrisinə çevrilir.
Nüvə qərar verir, demon deyil
Yönləndirilən paket LAN interfeysinə gəlir və marşrutlaşdırma kodu qaydalar siyahısını prioritet sırası ilə qiymətləndirir. Seçicisi uyğun gələn ilk qayda bir cədvəl adlandırır və həmin cədvəlin marşrutları çıxış cihazını seçir. Cədvəldə uyğun marşrut yoxdursa, axtarış növbəti qaydaya keçir və yarımçıq qurulumun ucadan deyil, səssizcə uğursuz olmasının səbəbi məhz bu detaldır.
Tunel prosesinin bu gəzintidə sözü yoxdur. O, interfeys yaradır və marşrutlar quraşdıra bilər, amma müəyyən bir klientin paketinin həmin interfeysə düşüb-düşməyəsi tamamilə göndərildiyi cədvəldən asılıdır. Buna görə eyni idxal edilmiş marşrutlara malik iki tunel rəqabət aparır və son yazan hamı üçün qalib gəlir. Elə buna görə qurulum konfiqurasiya fayllarında balanslı görünə bilər, amma yenə də bütün klientləri bir demon vasitəsilə göndərir.
Hər nüsxəyə öz resurs dəstini verin
Adlardan başlayın, çünki təkrar istifadə olunan adlar iki nüsxənin təsadüfən vəziyyəti paylaşmasının yoludur. Ayrı tunel cihazları, ayrı konfiqurasiya faylları, ayrı etimadnamələr və ayrı xidmət vahidləri təyin edin. Hər nüsxənin xarici son nöqtəsini və tunel ünvanını siyasət matrisi ilə eyni cədvəldə qeyd edin ki, sonrakı dəyişikliyin baxacağı bir yer olsun.
dev tun-office
route-nopull
pull-filter ignore "redirect-gateway"
dev tun-lab
route-nopull
route-nopull serverin itələdiyi marşrutları yerli cədvəldən kənarda saxlayır, siyasət cədvəllərinin açıq olması lazım olduqda istədiyiniz də budur. Müəyyən bir serverin həm də redirect-gateway seçimi itələyib-itələmədiyini və klient versiyanızın filtr formasını dəstəkləyib-dəstəkləmədiyini təxmin etmək əvəzinə təlimatla yoxlamağa dəyər.
Matrisi yazın: mənbə, cədvəl, cihaz
Hər klient qrupu üçün mənbə ünvanına görə cədvəl seçən bir qayda əlavə edin, sonra nəzərdə tutulan yolu həmin cədvələ qoyun:
ip rule add from 10.8.1.0/24 lookup 100 priority 1000
ip rule add from 10.9.1.0/24 lookup 200 priority 1000
ip route add default dev tun-office table 100
ip route add default dev tun-lab table 200
Cədvələ qrupun malik olmalı olduğu təyinat marşrutları, üstəgəl şlüzü istifadə edilə bilən saxlayan yerli və ya idarəetmə istisnaları lazımdır. Yalnız defolt saxlayan cədvəl həmin qrup üçün tam tunel siyasətidir, bu tamamilə düzgün ola bilər, amma bu, buraxılış deyil, qərar olmalıdır.
Tunelin öz nəqliyyatı klient qrupuna daxil deyil
Hər demonun şifrələnmiş paketləri şlüzün özündə yaranır və xarici həmkarın ünvanına gedir. Yalnız klient mənbə prefiksinə uyğun gələn qayda o paketlərə toxunmur, elə buna görə mənbə ilə məhdudlaşan qaydalar hər şeyə uyğun gələn qaydalardan daha təhlükəsizdir. Seçicisi olmayan qayda tunelin öz nəqliyyatını tuta və onu tuneldən geri göndərə bilər, sonra isə bağlantı provayder problemi kimi görünən şəkildə uğursuz olur.
Yerli idarəetmə sessiyasını və alt qat yolunu siyasət cədvəllərindən açıq şəkildə kənarda saxlayın. Bu istisnaları matrisin yanında yazın; onlar dizaynın bir hissəsidir, hadisə zamanı yenidən kəşf ediləcək bir müvəqqəti həll deyil.
Yolun seçilməsi ona icazə vermir
Yönləndirmə icazəsi yolda sonradan verilən ikinci qərardır. İkinci tuneldən çıxan paketləri qəbul edən firewall qaydası marşrutlaşdırma kodunun onu seçməsinə səbəb olmur və düzgün cədvəl yönləndirmə icazəsi vermir. Hər ikisi olmalıdır və yalnız birini sübut edən test sizi digəri barədə yanıldacaq. Bir qrup işləyib digəri işləmədikdə, cədvəlləri yenidən yazmaq əvəzinə bu iki addımı ayrı-ayrı yoxlayın.
Mənbə çevrilməsi üçüncü qərardır və mənbə qrupu ilə onu həqiqətən daşıyan tunel cihazı ilə məhdudlaşdırılmalıdır. Postrouting zəncirini boşaltmaq əvəzinə iki nüsxə üçün ayrı zəncir əlavə edin, çünki əlaqəsiz xidmətlər orada qeydlərə sahib ola bilər və boşaltma onları səssizcə silər.
Bir tunel düşəndə nə olur
Uğursuzluq davranışını əvvəlcədən qərar verin. Bir tunel cədvəli marşrutunu itirdikdə axtarış növbəti qaydaya düşür və qrupun trafiki heç bir xəta olmadan digər tuneldən və ya adi yuxarı kanaldan davam edir. Bu qəbuledilməzdirsə, daha aşağı prioritet nömrəsində həmin mənbə üçün əlçatmaz nəticə qaytaran sonlandırıcı qayda əlavə edin ki, itki udulmaq əvəzinə görünsün.
Hər mənbə qrupundan təzə sorğu göndərin və dörd faktı qeyd edin: seçilən cədvəl, çıxış cihazı, çevrilmiş mənbə və cavabın eyni yoldan qayıdıb-qayıtmadığı. Sonra bir tuneli söndürün və təkrarlayın. İnterfeys siyahısında iki TUN cihazının olması hər iki demonun başladığını sübut edir; müəyyən bir klientin hansını istifadə etdiyi barədə heç nə demir. Bir tunelin yox olduğu ikinci qaçış, ehtiyat qaydanızın nəzərdə tutduğunuzu edib-etmədiyini göstərən qaçışdır.