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 tun1

Ato 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.2

Adresat 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 1194

Në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.

Artikuj të ngjashëm