Bir Linux hesabını UID qaydası ilə OpenVPN-dən keçirmək
uidrange qaydası bir hesabın IPv4 soketlərini namespace olmadan mövcud tunelə yerləşdirir. DNS, IPv6 və ehtiyat yolu ayrıca qərarlaşdırın, sonra yoxlayın.
Hesab əsaslı marşrutlaşdırma, bir Linux istifadəçisinin sahib olduğu hər IPv4 soket mövcud tuneldən çıxmalı olduqda uyğundur, proqram səviyyəsində təcrid lazım olduqda isə uyğun deyil. Seçim UID-ə görə olur, yəni həmin hesabla işləyən hər şey əhatəyə düşür, unutduğunuz toplu iş də daxil olmaqla. Bu sualı bir dənə ip rule-a toxunmadan əvvəl həll edin.
Aşağıdakı nümunə UID 1500-də ayrılmış brauzer hesabını, 10.80.0.11 yerli ünvanını daşıyan tun-office tunel qurğusunu və sözügedən təyinat nöqtələrinə icazə verən VPN-i fərz edir. Demonun özü həmin UID-dən kənarda işləyir.
Mexanizmi seçən üç şərt
UID qaydasını işi görən kimlik hesab olduqda, onun bütün trafikini köçürmək məqbul olduqda və namespace tapşırığa layiq olduğundan ağır olacaqsa seçin. Şəbəkə namespace-ni iş yükünün öz interfeyslərinə, həlledicisinə və marşrut cədvəlinə ehtiyacı olduqda seçin. Proksini və ya hər proses üçün bağlamanı dəqiq bir tətbiq köçməli olduqda və sessiyanın qalanı yerli yolda qalarkən seçin. Bu üçünü yazıya almaq, təxmin ediləndən daha çoxunu səssizcə əhatə edən qaydanın qarşısını alır.
Qaçmaq lazım olan səhv, başladıcının sahibi təyin etdiyini fərz etməkdir. Başqa istifadəçinin sessiyasından URL alan brauzer UID 1500 altında soket yaratmayıb və heç bir qayda onun yaratdığı trafiki köçürməyəcək.
Cədvəl, qayda və qoruyucu
Mövcud qaydaları yoxlayıb istifadə olunmayan cədvəl və prioritet nömrələrini seçdikdən sonra quruluş qısadır: tunelin mənbə ünvanını daşıyan ayrılmış cədvəldə defolt marşrut, hesabın sorğularını həmin cədvələ göndərən qayda və ehtiyat yolu bağlayan sonlandırıcı qayda. Açıq yazılışda bu, idempotent marşrut dəyişməsidir, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, ardınca ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.
Qoruyucu ip -4 rule add priority 12101 uidrange 1500-1500 unreachable-dir və uzunluğunun təklif etdiyindən daha çox əhəmiyyət daşıyır. Onsuz, 51820 cədvəlində çatışmayan marşrut adi yuxarı kanala düşür və hesab siyasətin tutmaq istədiyi trafiki səssizcə sızdırır. Onunla, eyni nasazlıq taym-auta çevrilir, yəni ehtiyata deyil, bloklamaya.
Adi yerli ünvan qaydasını bunlardan əvvəl saxlayın və LAN və ya idarəetmə istisnalarının seçilmiş cədvəldən əvvəl olub-olmadığını şüurlu şəkildə qərarlaşdırın. Orada tapılan defolt sonradan daha konkret LAN marşrutu üçün main-ə müraciət etmir və bu, ən uzun prefiks uyğunluğunun cədvəllər arasında işlədiyini gözləyənləri təəccübləndirir. Nəzərdə tutulan istisna siyahısını dəyişiklik qeydinə, əsaslandırma hələ təzə ikən yazın.
UID marşrutlaşdırmasının kənarda qoyduğu: DNS
Həlledici demon öz yuxarı soketlərini öz UID-si altında açır, ona görə 1500 seçmək həmin sorğuları 51820 cədvəlinə köçürmür. DNS inteqrasiyası ayrı qərardır: hesabı tuneldən əlçatan həllediciyə yönəldin və ya ad həllinin hostun yolunu izlədiyini, trafikin isə izləmədiyini qəbul edin.
Yerli stub-a loopback sorğusu yuxarı sorğunun brauzerin marşrutundan istifadə etdiyinə sübut deyil, keşdən uğurlu səhifə yükləməsi də deyil.
IPv6 dizaynda öz cümləsini tələb edir
Yuxarıdakı qaydalar yalnız IPv4-ü əhatə edir. Tələb bu hesabdan birbaşa IPv6 olmayan IPv4 tuneldirsə, nəzərdən keçirilmiş sonlandırıcı qayda əlavə edin, məsələn ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, sonra əvvəlki IPv6 qaydalarını və saxlamaq istədiyiniz loopback istisnalarını yoxlayın.
Birbaşa IPv6-nı bloklamaq iki yığınlı tunelləşdirmə deyil; bu sərhəddir. Bunu tunelləşdirmə adlandırmaq siyasəti oxuyan növbəti insanı çaşdıracaq və çaşqınlıq pozulmuş IPv6 saytı barədə dəstək bileti kimi üzə çıxacaq.
Həqiqi hesabla yoxlayın, sonra həyat dövrünə sahib olun
Sorğuları müqayisə edin: ip -4 route get 198.51.100.25 uid 1500, eyni təyinat nöqtəsinə adi UID ilə. Sonra ayrılmış hesab altında icazəli sorğu göndərin və qarşı tərəfin gördüyü mənbə ünvanını yoxlayın. Üstünlük verilən mənbə ünvanı mənbə NAT deyil və başqa bir şeyi bağlayan tətbiqi üstələmir. Hər iki sorğu eyni yolu qaytarırsa, qayda sizin düşündüyünüzü etmir.
Cədvəli, qaydaları və tunel marşrutunun ömrünü bir sahibin altında saxlayın, yenidən qoşulmanı və tunel itkisini sınaqdan keçirin və siyasəti ləğv edərkən yalnız onun dəqiq qeydlərini silin. Ayrı interfeyslər və ayrı vəziyyət həqiqətən lazım olsa, namespace hələ də mövcuddur.