Ik hie in laboratoariummasine dy't in tunnel fan in fiere lokaasje akseptearre en ek nei in leveransiersnetwurk skille. It útgongprofyl hie wiken wurke. Nei't de yngongserver tafoege wie, ferbûn de útgong en stoppe doe binnen sekonden mei it trochjaan fan ferkear, of wegere te starten mei in flater dat it adres al yn gebrûk is. De konfiguraasjebestannen wiene net feroare; de host hie gewoan in twadde OpenVPN-proses krigen mei syn eigen miening oer poarten en rûtes.

De flater is net tafallich, en it is gjin autentikaasjeprobleem. Twa daemons op ien masine konkurrearje om deselde lokale socket en deselde rûtetabel, en wa't it lêst start of opnij ferbynt, wint meast. Witte hokker fan dy twa botsingen jo hawwe, bepaalt wêr't jo earst sjogge.

Lês it symptoom efterstfoar

Begjin by wannear't de tunnel stjert. In bindflater by it starten wiist nei de harkkant: eat hat dy poarte al, en OpenVPN wegeret te starten ynstee fan it te dielen. In tunnel dy't omheech komt en dan stil wurdt, wiist nei rûtering, want in rûte dy't troch it oare eksimplaar ynstalleare is, kin de pakketten fan 'e bûtenferbining fan har paad ôflûke.

Beide gefallen leverje deselde brûkersklacht op, dêrom losse werpogingslussen en watchdog-skripts neat op. Se ferbine de klant wer yn itselde konflikt. De nuttige earste fraach is oft it proses noch rint as it ferkear stopt.

Ien socket en ien apparaat per eksimplaar

In harkende server bynt syn poarte; in útgongklant hat ek in lokale poarte nedich foar syn ynkapsulearre ferkear. As beide op deselde host libje, kin it standertgedrach fan 'e klant botsing meitsje mei de poarte fan 'e server. De lokale poarte fan 'e klant kin fêstset wurde, en it bynsjen kin oerslein wurde wêr't de partner gjin fêste boarnepoarte nedich hat:

lport 1195
nobind
dev tun1

Dy sifers binne foarbylden, gjin eask. Wat fan belang is, is dat de klant ophâldt om om 'e poarte fan 'e server te konkurrearjen en dat elk eksimplaar in apart tunnelapparaat krijt. Twa daemons dy't tun0 diele, oerskriuwe elkoars apparaatstatus sels as har poarten ferskille, dus ien apparaat per tunnel is net opsjoneel.

nobind heart by de klantkant. In server moat noch altyd bynzje en harkje, dus kopiearje de rigel net yn 'e serverkonfiguraasje, en skeakel it bynzjen net út op in klant waans partner op in fêste boarnepoarte filteret.

Kies ien eigner foar de standertrûte

Allinnich ien ferbining kin in standertrûte ynstallearje. As beide profilen al it ferkear omliede, ferfangt de twadde ferbining stilwei de earste, en de earste liket te brekken. Hâld de útgongtunnel splitst en stjoer allinnich de leveransiersprefiks, of jou him in aparte rûtetabel.

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

De adressen en it tabelnûmer hjirboppe binne plakhâlders. Befêstigje fuortendaliks nei it tafoegjen fan 'e regel dat it adres fan 'e VPN-server sels noch troch de normale tabel oplost wurdt; in tabel dy't it bûtenferfier fangt, brekt de tunnel dy't er beskermje moast, en de werferbiningslus dy't folget liket op in ûnbetroubere leveransier.

Foar in opset dy't werferbiningen en werstarts oerlibje moat, is in netwurknammeromte de steviger grins. De twadde klant rint yn syn eigen nammeromte mei syn eigen interfaces en rûtes, en allinnich de tsjinsten dy't oerstekke moatte, wurde bleatsteld. De host hâldt ien standertrûte, en in nammeromte-werferbining kin dy net oerskriuwe.

Kontrolearje mei de tabel, net mei de statusrigel

In klant dy't rapportearret dat er ferbûn is, bewiist allinnich syn kontrôlekanaal. Fêstlizze de rûteringstatus foar en nei elke ferbining, freegje dan de kernel hokker apparaat in echte bestimming brûke soe:

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

As it keazen apparaat foar it leveransieradres feroaret as de twadde tunnel start, hawwe jo de rûtebotsing. As beide prosessen op deselde lokale poarte ferskine, hawwe jo de socketbotsing. It earste reparearje sûnder it twadde ferpleatst de flater gewoan nei de folgjende werferbining.

Skriuw de poarten, apparaten, tabellen en rûte-eigner yn 'e runbook fan 'e host. Oars sil de folgjende persoan dy't in tredde tunnel tafoeget deselde botsing wer ûntdekke, en it iennichste sichtbere bewiis sil in ferbining wêze dy't wurket oant immen oars syn daemon werstart.

Relatearre artikelen