OpenVPN müştərisi serveri eyni hostda işləyəndə dayanır
Bir hostda iki OpenVPN nüsxəsi eyni yerli port və marşrut cədvəli üstündə çəkişir. Portu bərkidin, cihazları ayırın və hansı cədvəlin qalib gəldiyini yoxlayın.
Uzaq saytdan tunel qəbul edən və eyni zamanda təchizatçı şəbəkəsinə zəng edən laboratoriya maşınım var idi. Xarici profil həftələrlə işləmişdi. Gələn server əlavə edildikdən sonra xarici olan qoşuldu və sonra saniyələr içində trafiki ötürməyi dayandırdı, ya da ünvan artıq istifadə olunur xətası ilə başlamaqdan imtina etdi. Konfiqurasiya faylları dəyişməmişdi; host sadəcə portlar və marşrutlar barədə öz fikri olan ikinci bir OpenVPN prosesi əldə etmişdi.
Nasazlıq təsadüfi deyil və bu, autentifikasiya problemi deyil. Bir maşında iki demon eyni yerli soket və eyni marşrut cədvəli üstündə yarışır və sonuncu başlayan və ya yenidən qoşulan adətən qalib gəlir. Bu iki toqquşmadan hansının sizdə olduğunu bilmək ilk olaraq hara baxacağınızı müəyyən edir.
Simptomu tərsinə oxuyun
Tunelin nə vaxt öldüyündən başlayın. Başlanğıcda bağlama xətası dinləmə tərəfinə işarə edir: nə isə artıq o portu tutur və OpenVPN onu paylaşmaqdansa başlamaqdan imtina edir. Qalxıb sonra səssizləşən tunel marşrutlaşdırmaya işarə edir, çünki digər nüsxənin quraşdırdığı marşrut xarici bağlantının paketlərini öz yolundan çıxara bilər.
Hər iki hal eyni istifadəçi şikayətini yaradır, buna görə də yenidən cəhd dövrələri və nəzarət skriptləri heç nəyi düzəltmir. Onlar müştərini yenə eyni toqquşmaya qoşurlar. Faydalı ilk sual trafik dayandıqda prosesin hələ də işləyib-işləmədiyidir.
Hər nüsxə üçün bir soket və bir cihaz
Dinləyən server öz portunu bağlayır; xarici müştəri də öz inkapsulyasiya olunmuş trafiki üçün yerli porta ehtiyac duyur. Hər ikisi eyni hostda yaşayanda standart müştəri davranışı serverin portu ilə toqquşa bilər. Müştərinin yerli portu bərkidilə bilər və qarşı tərəf sabit mənbə portuna ehtiyac duymadıqda bağlama atlana bilər:
lport 1195
nobind
dev tun1Bu rəqəmlər nümunədir, tələb deyil. Vacib olan müştərinin serverin portu üstündə yarışmağı dayandırması və hər nüsxənin ayrı tunel cihazı almasıdır. tun0 cihazını paylaşan iki demon, portları fərqli olsa belə, bir-birinin cihaz vəziyyətini üzərinə yazır, yəni hər tunel üçün bir cihaz məcburidir.
nobind müştəri tərəfinə aiddir. Server hələ də bağlamalı və dinləməlidir, ona görə də sətri server konfiqurasiyasına köçürməyin və qarşı tərəfi sabit mənbə portu üzrə filtr edən müştəridə bağlamanı söndürməyin.
Defolt marşrut üçün bir sahib seçin
Defolt marşrutu yalnız bir bağlantı quraşdıra bilər. Hər iki profil bütün trafiki yönləndirirsə, ikinci qoşulma birincini səssizcə əvəz edir və birinci sınmış kimi görünür. Ya xarici tuneli bölünmüş saxlayın və yalnız təchizatçı prefikslərini göndərin, ya da ona ayrı marşrut cədvəli verin.
ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2Yuxarıdakı ünvanlar və cədvəl nömrəsi yer tutuculardır. Qayda əlavə edildikdən dərhal sonra VPN serverinin öz ünvanının hələ də normal cədvəl vasitəsilə həll olunduğunu təsdiqləyin; xarici nəqliyyatı tutan cədvəl qorumaq üçün nəzərdə tutulduğu tuneli pozur və ardınca gələn yenidən qoşulma dövrəsi etibarsız provayder kimi görünür.
Yenidən qoşulmalara və yenidən başlatmalara davam etməli olan quraşdırma üçün şəbəkə adlar məkanı daha möhkəm sərhəddir. İkinci müştəri öz interfeysləri və marşrutları ilə öz adlar məkanında işləyir və yalnız keçməli olan xidmətlər açılır. Host bir defolt marşrut saxlayır və adlar məkanının yenidən qoşulması onu yenidən yaza bilməz.
Status sətri ilə deyil, cədvəllə yoxlayın
Qoşulduğunu bildirən müştəri yalnız nəzarət kanalını sübut edir. Hər qoşulmadan əvvəl və sonra marşrutlaşdırma vəziyyətini qeyd edin, sonra kerneldən real təyinatın hansı cihazdan istifadə edəcəyini soruşun:
ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194İkinci tunel başlayanda təchizatçı ünvanı üçün seçilmiş cihaz dəyişirsə, marşrut toqquşmanız var. Hər iki proses eyni yerli portda görünürsə, soket toqquşmanız var. Birincini ikincisi olmadan düzəltmək nasazlığı sadəcə növbəti yenidən qoşulmaya köçürür.
Portları, cihazları, cədvəlləri və marşrut sahibini hostun runbookuna yazın. Əks halda üçüncü tunel əlavə edən növbəti şəxs eyni toqquşmanı yenidən kəşf edəcək və yeganə görünən sübut başqasının demonu yenidən başlayana qədər işləyən bir bağlantı olacaq.