Paketlər OpenVPN marşrutunu izləyə və yenə də IPsec siyasəti tərəfindən tutula bilər və bu birləşmə düzgün bucaqdan başqa hər bucaqdan marşrut xətası kimi görünür. Linux marşrutu həll edir və sonra ayrı təhlükəsizlik siyasəti verilənlər bazasına müraciət edir, buna görə daha konkret təyinat marşrutu uyğun XFRM siyasətini sıxışdırmır. Görünən simptom hostdan çıxan və heç vaxt çatmayan trafikdir, halbuki hər iki tunel özünü sağlam elan edir. Bunu üç variant həll edir və hansını seçdiyiniz həmin prefiksi iki yoldan hansının daşımasından asılıdır.

İki qərar, bir yox

Marşrut seçimi dar bir suala cavab verir: hansı növbəti hop və mənbə ünvanı bu paketi daşımalıdır. Təhlükəsizlik siyasəti verilənlər bazası başqa suala cavab verir: bu paket IPsec qoruması tələb edirmi və hansı seçicilər altında. Hər ikisi eyni paket üçün işləyir və birincini təmin etmək ikinci barədə heç nə demir. Buna görə metrikanın dəyişdirilməsi və ya statik marşrutun əlavə edilməsi simptomu toxunulmaz qoya bilər.

Geniş IPsec seçicisi adi səbəbdir. 172.16.0.0/12-ni qoruyan siyasət 172.20.8.0/24-ü də əhatə edir, halbuki administrator ora OpenVPN tuneli ilə çatmaq istəyə bilər. Niyyət yalnız marşrut cədvəlində mövcuddur və siyasət verilənlər bazası bundan heç vaxt xəbər tutmayıb.

Bunu iki metrika arasında yarış deyil, iki konfiqurasiya edilmiş qoruma yolu arasında ziddiyyət kimi qəbul edin. Düzəliş yanlış əhatə dairəsi ilə konfiqurasiya edilmiş komponentdə olmalıdır.

Kernelin həqiqətən seçdiyi marşrutu oxuyun

Kernelin etdiyi axtarışla başlayın, mənbə ünvanı və onu başqa cədvələ yönəldə biləcək hər hansı siyasət qaydası daxil olmaqla. Əsas cədvəldəki marşrut, əvvəlki qayda başqa cədvəl seçirsə, heç vaxt nəzərdən keçirilməyə bilər və ən uzun prefiks uyğunluğu yalnız qaydanın seçdiyi cədvəl daxilində tətbiq olunur.

ip rule show
ip route show table all
ip route get 172.20.8.20 from 10.44.7.15

Son əmr əsas olanıdır, çünki seçilmiş marşrutu kernelin istifadə edəcəyi mənbə ünvanı ilə birlikdə çap edir. Bu çıxışı IPsec siyasətinin uyğunlaşdırdığı seçici ilə müqayisə edin. Marşrut OpenVPN interfeysinə işarə edirsə və siyasət hələ də eyni cütə uyğun gəlirsə, ziddiyyəti təxmin etmədən təkrar yaratmısınız.

Dampı biletə çatmazdan əvvəl əlaqəsiz ünvanlardan təmiz saxlayın. İstehsal hostundan alınan marşrut cədvəli daxili topologiya daşıyır və yalnız suala cavab verən sətirlər yapışdırmağa dəyər.

Tətbiq olunan siyasəti də oxuyun

Siyasət siyahısı istiqaməti, seçiciləri və uyğun paketlə nə olacağını müəyyən edən şablonu göstərir. Əvvəlcə giden istiqaməti, sonra qayıdış trafiki üçün gələn tərəfi oxuyun, çünki birtərəfli istisna başlayan və heç vaxt tamamlanmayan bağlantı yaradır.

ip -s xfrm policy
swanctl --list-sas

Siyahıdakı seçiciləri bağlantının razılaşdırdığı prefikslərlə müqayisə edin. strongSwan-ın marşrut quraşdırmasını söndürmək həmin siyasətləri silmir və metrikanın dəyişdirilməsi siyasətin hansı mənbə-təyinat cütünü qoruduğunu dəyişmir. Bu iki saxta düzəlişi erkən istisna etməyə dəyər, çünki insanlar ilk növbədə onları sınayır.

Siyahıda gözlədiyiniz prefiks üçün siyasət yoxdursa, problem başqa yerdədir və marşrut cədvəli çox güman ki doğru deyir. Əgər prefiksi əhatə edən daha geniş siyasət varsa, tutulmağı tapmısınız.

Hər iki yol qanuni olduqda üç variant

IPsec seçicisini daraltmaq, geniş prefiks tələb deyil, rahatlıq olduqda ən təmiz variantdır. Uzaq trafik seçicisini həqiqətən IPsec arxasında olan alt şəbəkələrə qədər azaltmaq ziddiyyəti bütün hostlar üçün birdən aradan qaldırır və yeni komponent deyil, açar yeniləməsi bahasına başa gəlir.

Geniş seçici qalmalı olduqda keçid istisnası cərrahi variantdır. strongSwan, uşağı pass rejimindən istifadə edən ayrı bağlantını dəstəkləyir və bu, kernelə uyğun trafikin IPsec tərəfindən emal edilməməli olduğunu bildirir. Loopback uzaq ünvanı həmin bağlantının gələn peerlər üçün seçilməsinin qarşısını alır və seçicilər hər şeyi deyil, real icazəli cütü təsvir etməlidir.

connections {
    openvpn-exception {
        remote_addrs = 127.0.0.1
        children {
            openvpn-exception {
                local_ts = 10.44.7.0/24
                remote_ts = 172.20.8.0/24
                mode = pass
                start_action = trap
            }
        }
    }
}

strongSwan konfiqurasiya nümunələri bu siyasət növünü və loopback peer konvensiyasını sənədləşdirir. Üçüncü variant isə XFRM interfeysləri ilə marşruta əsaslanan dizayn, hansı ki siyasəti qlobal seçici yerinə adlı interfeysdən yönləndirilən trafikə bağlayır. Bu, incə düzəliş deyil, miqrasiyadır və trafik yenə də razılaşdırılmış seçiciləri təmin etməlidir.

OptionUse it whenCost
Narrow the selectorThe broad prefix was convenienceA rekey and a policy review
Passthrough childThe broad selector must stayOne exception per intended pair
XFRM interfacePolicy should follow routingA design migration

İstisnanı qalanı zəiflətmədən sübut edin

Dəyişikliyi yüklədikdən sonra istisnanı və qorunmalı qalan adi təyinatı sınayın. Hər iki istiqaməti yoxlayın, sonra OpenVPN tunelini endirin və istisna edilən trafikə nə olduğunu təsdiqləyin. Tunel söndükdə həmin prefiksi səssizcə açıq göndərən istisna, insident zamanı kəşf etməli deyil, qəsdən verməli olduğunuz siyasət qərarıdır.

Hansı prefiksin hansı yolu və niyə istifadə etdiyini qeyd edin. Əks halda geniş seçici görən növbəti mühəndis eyni araşdırmanı yenidən açacaq və cavab heç kimin oxumadığı commit mesajında qalacaq.

Əlaqəli məqalələr