Mi havis laboratorian maŝinon, kiu akceptis tunelon de malproksima loko kaj ankaŭ telefonis al provizanta reto. La elira profilo funkciis dum semajnoj. Post kiam la envenanta servilo aldoniĝis, la elira konektiĝis kaj poste ĉesis pasigi trafikon ene de sekundoj, aŭ rifuzis ekfunkcii kun eraro pri jam uzata adreso. La agordaj dosieroj ne ŝanĝiĝis; la gastigo simple akiris duan OpenVPN-procezon kun propra opinio pri pordoj kaj enkursigoj.

La fiasko ne estas hazarda, kaj ĝi ne estas aŭtentiga problemo. Du demonoj sur unu maŝino konkurencas pri la sama loka ingo kaj la sama enkursiga tabelo, kaj tiu, kiu ekfunkcias aŭ rekonektiĝas laste, kutime venkas. Scii, kiun el tiuj du kolizioj vi havas, decidas, kie rigardi unue.

Legu la simptomon malantaŭen

Komencu per kiam la tunelo mortas. Ligo-eraro ĉe ekfunkcio montras al la aŭskulta flanko: io jam posedas tiun pordon, kaj OpenVPN rifuzas ekfunkcii anstataŭ dividi ĝin. Tunelo, kiu leviĝas kaj poste silentas, montras al enkursigo, ĉar enkursigo instalita de la alia kazo povas tiri la pakaĵojn de la ekstera konekto for de ilia vojo.

Ambaŭ kazoj produktas la saman plendon de la uzanto, tial ripetaj bukloj kaj gardoscriptoj riparas nenion. Ili rekonektas la klienton en la saman konflikton. La utila unua demando estas, ĉu la procezo ankoraŭ ruliĝas kiam la trafiko haltas.

Unu ingo kaj unu aparato por kazo

Aŭskultanta servilo ligas sian pordon; elira kliento ankaŭ bezonas lokan pordon por sia enkapsuligita trafiko. Kiam ambaŭ loĝas sur la sama gastigo, la defaŭlta konduto de la kliento povas kolizii kun la pordo de la servilo. La loka pordo de la kliento povas esti fiksita, kaj ligado povas esti preterlasita kie la samtavolano ne bezonas fiksan fontan pordon:

lport 1195
nobind
dev tun1

Tiuj nombroj estas ekzemploj, ne postulo. Gravas, ke la kliento ĉesas konkurenci pri la pordo de la servilo kaj ke ĉiu kazo ricevas apartan tunelan aparaton. Du demonoj dividantaj tun0 superregas unu la alian aparatan staton eĉ kiam iliaj pordoj malsamas, do unu aparato por tunelo ne estas laŭvola.

nobind apartenas al la klienta flanko. Servilo ankoraŭ devas ligi kaj aŭskulti, do ne kopiu la linion en la servilan agordon, kaj ne malŝaltu ligadon ĉe kliento, kies samtavolano filtras laŭ fiksa fonta pordo.

Elektu unu posedanton por la defaŭlta enkursigo

Nur unu konekto povas instali defaŭltan enkursigon. Se ambaŭ profiloj alidirektas la tutan trafikon, la dua konekto silente anstataŭas la unuan, kaj la unua ŝajnas rompiĝi. Aŭ tenu la eliran tunelon disigita kaj puŝu nur la prefiksojn de la provizanto, aŭ donu al ĝi apartan enkursigan tabelon.

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

La adresoj kaj tabela numero supre estas lokokupiloj. Tuj post aldoni la regulon, konfirmu, ke la propra adreso de la VPN-servilo ankoraŭ solviĝas per la normala tabelo; tabelo, kiu kaptas la eksteran transporton, rompas la tunelon, kiun ĝi devis protekti, kaj la sekva rekonekta buklo aspektas kiel nefidinda provizanto.

Por agordo, kiu devas postvivi rekonektojn kaj restartojn, reta nomspaco estas la pli solida limo. La dua kliento ruliĝas en sia propra nomspaco kun siaj propraj interfacoj kaj enkursigoj, kaj nur la servoj, kiuj devas transiri, estas elmetitaj. La gastigo tenas unu defaŭltan enkursigon, kaj nomspaca rekonekto ne povas reverki ĝin.

Kontrolu per la tabelo, ne per la statusskribo

Kliento, kiu raportas sin konektita, pruvas nur sian kontrolkanalon. Kaptu la enkursigan staton antaŭ kaj post ĉiu konekto, poste demandu la kernon, kiun aparaton reala celo uzus:

ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194

Se la elektita aparato por la provizanta adreso ŝanĝiĝas kiam la dua tunelo ekfunkcias, vi havas la enkursigan kolizion. Se ambaŭ procezoj aperas ĉe la sama loka pordo, vi havas la ingan kolizion. Ripari la unuan sen la dua nur movas la fiaskon al la sekva rekonekto.

Skribu la pordojn, aparatojn, tabelojn kaj enkursigan posedanton en la runlibron de la gastigo. Alie la sekva persono, kiu aldonos trian tunelon, retrovos la saman kolizion, kaj la sola videbla pruvo estos konekto, kiu funkcias ĝis la demono de iu alia restartas.

Rilataj artikoloj