Adi döngə qorunması host marşrutudur: VPN serverinin ictimai ünvanına trafiki uplink vasitəsilə bayıra göndərin ki, şifrələnmiş sessiya heç vaxt öz tunelinə düşməsin. Bu, həmin serverdəki veb xidmətinə də tunel vasitəsilə çatmaq istədiyiniz ana qədər işləyir, çünki istisna təyinat ünvanına bağlıdır və təyinat ünvanı eynidir. Çıxış yolu təyinat ünvanına görə təsnifatı dayandırıb paketi hansı soketin göndərdiyinə görə təsnif etməyə başlamaqdır.

Ayırmaq istədiyiniz iki axınla başlayın

Bir axın uplink vasitəsilə çıxmalı olan şifrələnmiş OpenVPN daşımasının özüdür, əks halda tunel öz xarici bağlantısını daşıyardı. Digəri tunelin içində istədiyiniz, eyni ictimai ünvana edilən adi HTTPS sorğusudur ki, xidmətə tunel mənbəyindən çatsın. Eyni təyinat, bir çox halda eyni port nömrəsi, fərqli tələb olunan yol.

Bu icmalda 10.90.0.10 ünvanında tun1 üzərindən bir müştəri, 198.51.100.25 ictimai server ünvanı və standart marşrutu adi uplink-ə yönəlmiş toxunulmamış əsas cədvəl fərz edin. Server tərəfi də veb xidməti daxili yolda qəbul etməli və trafiki tunel mənbəyinə qaytarmalıdır; paketi ictimai ünvana göndərmək serverin dinləyicisini və ya firewall siyasətini ləğv etmir.

Bir şeyi dəyişməzdən əvvəl hostun cari qaydalarını yazın və heç kimin istifadə etmədiyi dəyərləri seçin: işarə, cədvəl nömrəsi və üç qayda prioriteti. Maşına bu bağlantıdan keçməyən geri yol saxlayın, çünki buradakı səhv yalnız brauzer vərəqini pozmur, öz uzaq girişinizi də götürür.

Zərfi daşıyan soketi işarələyin

Müştəri konfiqurasiyası şifrələnmiş çıxan paketləri üçün işarə alır və marşrutları özü quraşdırmağı dayandırır, beləliklə yolları müəyyən edən yeganə şey əvəzetmə siyasəti olur:

mark 42
route-noexec
disable-dco

Onluq 42 onaltılıq 0x2a-dır və marşrutlaşdırma qaydalarının uyğunlaşdıracağı forma məhz onaltılıq formadır. link-options arayışı mark-ı Linux-da şifrələnmiş çıxan paketlərə tətbiq olunan bir şey kimi təsvir edir, yəni məhz yolunu idarə etməli olduğunuz soket. Məlumat kanalının boşaldılmasını söndürmək bu nümunəni istifadəçi məkanı yolunda saxlayır, burada işarə davranışı təsvir olunandır.

route-noexec OpenVPN-in avtomatik marşrut əlavə etməsini və silməsini boğur. Onların yerinə heç nə quraşdırmır, buna görə bu andan etibarən marşrut sahibi tunelin ehtiyac duyduğu hər marşrutu saxlamalıdır. Dəyişiklikdən sonra şəxsi təyinat yox olarsa, bu çatışmayan əvəzetmə siyasətidir, işarədə qüsur deyil.

Bunu edərkən 198.51.100.25 üçün əsas cədvəldə host marşrutu saxlamayın. Belə marşrut dizaynın daraltmağa çalışdığı istisnanı yenidən gətirir və aşağıdakı siyasətlərdən hər hansı biri soruşulmadan əvvəl HTTPS axını üçün qalib gələcək.

Qalan hər şeyi tunel cədvəlinə göndərin

Tunel interfeysi mövcud olub ünvanını saxladıqda siyasət belə görünür:

ip -4 route add default dev tun1 src 10.90.0.10 table 47100
ip -4 rule add priority 20000 lookup main suppress_prefixlength 0
ip -4 rule add priority 20001 not fwmark 0x2a lookup 47100
ip -4 rule add priority 20002 not fwmark 0x2a unreachable

Birinci qayda hostun xüsusi marşrutlarını görünən saxlayır, o cümlədən təsdiqlənmiş hər hansı yerli şəbəkə, eyni zamanda əsas cədvəlin standart marşrutunu bu axtarış üçün görünməz edir. Bu fərq vacibdir: standartı boğmaq cədvəli görməməzliyə vurmaqla eyni deyil və hələ də ehtiyac duyduğunuz yerli istisnalar məhz bunun sayəsində qalır. Həmin istisnaları bir-bir oxuyun, nəticənin universal təcili dayandırma açarı olduğunu fərz etməyin.

İşarələnməmiş trafik sonra tunel cədvəlinə düşür, tunel mənbəyini götürür və VPN vasitəsilə çıxır. İşarələnmiş trafik növbəti iki qaydadakı fwmark testində uğursuz olur və siyahının aşağısındakı adi əsas axtarışa davam edir, uplink standartının hələ də olduğu yer. Son unreachable qaydası tunel marşrutu olmadıqda işarələnməmiş axının səssizcə uplink-ə geri düşməsinə mane olan şeydir. Seçici əvvəldən axıra qədər işarədir və təyinat ünvanı heç vaxt qərara daxil olmur.

Bu qorumanı bağlantı kəsilmələri arasında yerində saxlayın və onu siyasətin qalanı ilə birlikdə quraşdırın, əl ilə deyil. İnterfeyslə birlikdə yox olan qayda siyasət deyil, təsadüfdür. Tunel düşəndə siyasəti silmək nasazlıq rejimini “bloklanmış”dan “sızıb”a dəyişir və sonradan vaxtı bitən köhnəlmiş tunel marşrutu yanlış interfeysdən çıxan trafikdən qat-qat asan izah edilən problemdir.

Qayıdış yolu eyni işarəni görsün

Çıxan işarələr mexanizmin yalnız yarısıdır və bu, əksər təkrar yaratmaların buraxdığı hissədir. Şifrələnmiş sessiyaya cavablar uplink vasitəsilə gəlir və mənbənin gəldiyi yolla geri marşrutlaşdırılıb-marşrutlaşdırılmayacağını soruşan qayıdış yolu yoxlamasına tabedir. Kömək olmadan bu axtarış sizin işarələnməmiş tunel siyasətinizi tətbiq edir və paketin yanlış interfeysdə olduğu qənaətinə gəlir.

Düzəliş firewall sahibinə aiddir: işarəni çıxan bağlantıda saxlayın, onu uyğun gələn paketlərdə bərpa edin və müvafiq yol üçün mənbə tərəfindən təsdiqlənmiş işarə emalını aktivləşdirin. OpenVPN-in soket işarəsi qoyması bu üç şeyin heç birini etmir və yalnız müştəri seçimlərini sadalayan resept natamamdır. Bu inteqrasiyanı yazılı şəkildə tələb edin, çünki o, dizaynın ən az görünən hissəsidir və yenidən qurmada itirilməsi ən asan olan hissədir.

Boş qayıdış yolu yoxlaması da əvəzedici deyil. Boş rejim mənbə üçün hər hansı marşrutun mövcud olmasını tələb edir və əlavə etdiyiniz unreachable qoruması işarələnməmiş axtarışlar üçün birini qəsdən çıxarır. Bu dizayna güvənməzdən əvvəl bağlantı işarəsinin inteqrasiyasını tamamlayıb nəzərdən keçirin və host filtrlərini ayrı məsələ kimi qəbul edin: işarə marşrutlaşdırma siqnalıdır, icazə deyil. İnteqrasiya yoxdursa, simptom qurulan və cavablar gəlməyə başlayan kimi səssizləşən sessiyadır.

Bunu iki marşrut axtarışı ilə sübut edin

Nüvənin iki kontekst üçün nə qərar verdiyini müqayisə edin və çıxış statusu yerinə dev və src sahələrini oxuyun:

ip -4 route get 198.51.100.25
ip -4 route get 198.51.100.25 mark 0x2a

Birinci axtarış tunel mənbəyi ilə tun1-ə, ikincisi uplink-ə həll olunmalıdır. Bunlar sintetik axtarışlardır, ona görə siyasəti sübut edirlər, işləyən prosesi deyil: işləyən müştərinin faktiki daşıma yolunu ayrıca təsdiqləyin, sonra sertifikat yoxlaması açıq halda real HTTPS sorğusu edin.

Tamamlandı elan etməzdən əvvəl dizaynın nəyi əhatə etmədiyini yazın. DNS, IPv6 və qaydaların həyat dövrü hər biri öz qərarını tələb edir və bu IPv4 marşrutlaşdırma nümunəsidir, tam məxfilik konfiqurasiyası deyil. Onun dəyəri seçicidir: zərf uplink istisnasını alır və eyni ünvandakı adi xidmət bunu miras almamalıdır.

Əlaqəli məqalələr