Klienti OpenVPN ngec kur serveri i tij ekzekutohet në të njëjtin host
Dy instanca OpenVPN në një host luftojnë për të njëjtin port lokal dhe të njëjtën tabelë rrugëtimi. Fiksoni portin, ndani pajisjet dhe kontrolloni cila tabelë fiton.
Kisha një makinë laboratori që pranonte një tunel nga një vend i largët dhe gjithashtu thirrte në një rrjet furnizuesi. Profili i daljes kishte punuar për javë. Pasi u shtua serveri i hyrjes, ai i daljes u lidh dhe më pas ndaloi së kaluari trafikun brenda sekondash, ose refuzoi të nisej me një gabim se adresa është tashmë në përdorim. Skedarët e konfigurimit nuk kishin ndryshuar; hosti thjesht kishte marrë një proces të dytë OpenVPN me mendimin e vet për portet dhe rrugët.
Dështimi nuk është i rastësishëm dhe nuk është problem vërtetimi. Dy demonë në një makinë konkurrojnë për të njëjtin socket lokal dhe për të njëjtën tabelë rrugëtimi, dhe ai që niset ose rilidhet i fundit zakonisht fiton. Të dish se cila nga këto dy përplasje është e jotja përcakton ku të shikosh së pari.
Lexoni simptomën mbrapsht
Filloni me kur vdes tuneli. Një gabim lidhjeje në nisje tregon anën e dëgjimit: diçka tashmë e zotëron atë port, dhe OpenVPN refuzon të niset në vend që ta ndajë atë. Një tunel që ngrihet dhe pastaj hesht tregon rrugëtimin, sepse një rrugë e instaluar nga instanca tjetër mund t'i tërheqë paketat e lidhjes së jashtme nga rruga e tyre.
Të dyja rastet prodhojnë të njëjtin ankesë të përdoruesit, prandaj sythet e ripërpjekjes dhe skriptet e mbikëqyrjes nuk rregullojnë asgjë. Ato e rilidhin klientin në të njëjtin konflikt. Pyetja e parë e dobishme është nëse procesi është ende duke u ekzekutuar kur trafiku ndalon.
Një socket dhe një pajisje për instancë
Një server që dëgjon lidh portin e tij; një klient i daljes gjithashtu ka nevojë për një port lokal për trafikun e tij të inkapsuluar. Kur të dy jetojnë në të njëjtin host, sjellja e parazgjedhur e klientit mund të përplaset me portin e serverit. Porti lokal i klientit mund të fiksohet, dhe lidhja mund të anashkalohet aty ku pala tjetër nuk ka nevojë për një port burimor fiks:
lport 1195
nobind
dev tun1Ato numra janë shembuj, jo kërkesë. Ajo që ka rëndësi është që klienti të ndalojë konkurrimin për portin e serverit dhe çdo instancë të marrë një pajisje tuneli të veçantë. Dy demonë që ndajnë tun0 mbishkruajnë gjendjen e pajisjes së njëri-tjetrit edhe kur portet e tyre ndryshojnë, prandaj një pajisje për tunel nuk është opsionale.
nobind i përket anës së klientit. Një server duhet ende të lidhë dhe të dëgjojë, prandaj mos e kopjoni rreshtin në konfigurimin e serverit, dhe mos e çaktivizoni lidhjen në një klient, pala e të cilit filtron në një port burimor fiks.
Zgjidhni një pronar për rrugën e parazgjedhur
Vetëm një lidhje mund të instalojë një rrugë të parazgjedhur. Nëse të dy profilet ridrejtojnë të gjithë trafikun, lidhja e dytë zëvendëson në heshtje të parën, dhe e para duket e thyer. Ose mbani tunelin e daljes të ndarë dhe shtyni vetëm prefikset e furnizuesit, ose jepini një tabelë rrugëtimi të veçantë.
ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2Adresat dhe numri i tabelës më sipër janë mbajtës vendi. Menjëherë pas shtimit të rregullit, konfirmoni që adresa e vetë serverit VPN ende zgjidhet përmes tabelës normale; një tabelë që kap transportin e jashtëm thyen tunelin që duhej të mbronte, dhe sythi i rilidhjes që vijon duket si një ofrues jo i besueshëm.
Për një konfigurim që duhet t'i mbijetojë rilidhjeve dhe rinisjeve, një hapësirë emrash rrjeti është kufiri më i fortë. Klienti i dytë ekzekutohet brenda hapësirës së tij të emrave me ndërfaqet dhe rrugët e tij, dhe ekspozohen vetëm shërbimet që duhet të kalojnë kufirin. Hosti mban një rrugë të parazgjedhur, dhe një rilidhje e hapësirës së emrave nuk mund ta rishkruajë atë.
Verifikoni me tabelën, jo me rreshtin e statusit
Një klient që raporton se është lidhur vërteton vetëm kanalin e tij të kontrollit. Kapni gjendjen e rrugëtimit para dhe pas çdo lidhjeje, pastaj pyesni kernelin se cilën pajisje do të përdorte një destinacion real:
ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194Nëse pajisja e zgjedhur për adresën e furnizuesit ndryshon kur niset tuneli i dytë, keni përplasjen e rrugëve. Nëse të dy proceset shfaqen në të njëjtin port lokal, keni përplasjen e socket-eve. Rregullimi i të parës pa të dytën thjesht e zhvendos dështimin në rilidhjen tjetër.
Shkruani portet, pajisjet, tabelat dhe pronarin e rrugës në runbook-un e hostit. Përndryshe personi tjetër që shton një tunel të tretë do të rizbulojë të njëjtin përplasje, dhe prova e vetme e dukshme do të jetë një lidhje që funksionon derisa të riniset demoni i dikujt tjetër.