Roedd gen i flwch labordy a oedd yn derbyn twnd o safle anghysbell ac yn deialu allan i rwydwaith gwerthwr hefyd. Roedd y proffil allan wedi gweithio ers wythnosau. Ar ôl ychwanegu’r gweinydd i mewn, cysylltodd yr un allan ac yna stopio pasio traffig o fewn eiliadau, neu gwrthododd ddechrau gyda gwall cyfeiriad mewn defnydd. Nid oedd y ffeiliau ffurfweddu wedi newid; roedd y gwesteiwr yn syml wedi cael ail broses OpenVPN gyda’i barn ei hun am borthladdoedd a llwybrau.

Nid yw’r methiant yn hap ac nid yw’n broblem dilysu. Mae dau daemon ar un peiriant yn cystadlu am yr un soced lleol a’r un tabl llwybro, a’r un sy’n cychwyn neu’n ailgysylltu olaf sydd fel arfer yn ennill. Mae gwybod pa un o’r ddau wrthdrawiad hyn sydd gennych yn penderfynu ble i edrych gyntaf.

Darllenwch y symptom tuag yn ôl

Dechreuwch gyda phryd mae’r twnd yn marw. Mae gwall rhwymo wrth gychwyn yn pwyntio at yr ochr wrando: mae rhywbeth eisoes yn berchen ar y porth hwnnw, ac mae OpenVPN yn gwrthod cychwyn yn hytrach na’i rannu. Mae twnd sy’n codi ac yna’n mynd yn dawel yn pwyntio at lwybro, oherwydd gall llwybr a osodwyd gan y llall dynnu pecynnau’r cysylltiad allanol oddi ar eu llwybr.

Mae’r ddau achos yn cynhyrchu’r un gŵyn gan ddefnyddwyr, a dyna pam nad yw dolenni ailgynnig a sgriptiau gwylio yn trwsio dim. Maent yn ailgysylltu’r cleient i’r un gwrthdrawiad. Y cwestiwn cyntaf defnyddiol yw a yw’r broses yn dal i redeg pan fo’r traffig yn stopio.

Un soced ac un ddyfais fesul enghraifft

Mae gweinydd sy’n gwrando yn rhwymo ei borth; mae angen porth lleol ar gleient allan hefyd ar gyfer ei draffig amgylchedig. Pan fo’r ddau yn byw ar yr un gwesteiwr, gall ymddygiad diofyn y cleient wrthdaro â phorth y gweinydd. Gellir pinio porth lleol y cleient, a gellir hepgor rhwymo lle nad oes angen porth ffynhonnell sefydlog ar y partner:

lport 1195
nobind
dev tun1

Mae’r rhifau hynny’n enghreifftiau, nid yn ofyniad. Y peth sy’n bwysig yw bod y cleient yn stopio cystadlu am borth y gweinydd a bod pob enghraifft yn cael dyfais twnd ar wahân. Mae dau daemon yn rhannu tun0 yn trosysgrifo cyflwr dyfais ei gilydd hyd yn oed pan fo eu porthladdoedd yn wahanol, felly nid yw un ddyfais fesul twnd yn ddewisol.

Mae nobind yn perthyn i ochr y cleient. Rhaid i weinydd barhau i rwymo a gwrando, felly peidiwch â chopïo’r llinell i ffurfwedd y gweinydd, a pheidiwch ag analluogi rhwymo ar gleient y mae ei bartner yn hidlo ar borth ffynhonnell sefydlog.

Dewiswch un perchennog ar gyfer y llwybr diofyn

Dim ond un cysylltiad all osod llwybr diofyn. Os yw’r ddau broffil yn ailgyfeirio’r holl draffig, mae’r ail gysylltiad yn disodli’r cyntaf yn dawel, ac mae’r cyntaf yn ymddangos fel pe bai wedi torri. Naill ai cadwch y twnd allan ar wahân a gwthio rhagddodiaid y gwerthwr yn unig, neu rhowch dabl llwybro ar wahân iddo.

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

Mae’r cyfeiriadau a rhif y tabl uchod yn ddeiliad lle. Yn syth ar ôl ychwanegu’r rheol, cadarnhewch fod cyfeiriad y gweinydd VPN ei hun yn dal i ddatrys drwy’r tabl arferol; mae tabl sy’n dal y cludiant allanol yn torri’r twnd y bwriadwyd iddo ei amddiffyn, ac mae’r ddolen ailgysylltu sy’n dilyn yn edrych fel darparwr annibynadwy.

Ar gyfer setup sy’n rhaid goroesi ailgysylltu ac ailgychwyn, mae namespace rhwydwaith yn ffin fwy cadarn. Mae’r ail gleient yn rhedeg o fewn ei namespace ei hun gyda’i ryngwynebau a’i lwybrau, a dim ond y gwasanaethau sy’n gorfod croesi sy’n cael eu datgelu. Mae’r gwesteiwr yn cadw un llwybr diofyn, ac ni all ailgysylltiad namespace ei ailysgrifennu.

Gwiriwch gyda’r tabl, nid y llinell statws

Mae cleient sy’n adrodd ei fod wedi cysylltu yn profi ei sianel reoli yn unig. Cofnodwch gyflwr llwybro cyn ac ar ôl pob cysylltiad, yna gofynnwch i’r cnewyllyn pa ddyfais y byddai cyrchfan go iawn yn ei defnyddio:

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

Os yw’r ddyfais a ddewiswyd ar gyfer cyfeiriad y gwerthwr yn newid pan fydd yr ail dwnd yn cychwyn, mae gennych y gwrthdrawiad llwybr. Os yw’r ddwy broses yn ymddangos ar yr un porth lleol, mae gennych y gwrthdrawiad soced. Mae trwsio’r cyntaf heb yr ail yn symud y methiant i’r ailgysylltiad nesaf.

Ysgrifennwch y porthladdoedd, dyfeisiau, tablau a pherchennog y llwybr yn runbook y gwesteiwr. Fel arall, bydd y person nesaf sy’n ychwanegu trydydd twnd yn ailddarganfod yr un gwrthdrawiad, a’r unig dystiolaeth weladwy fydd cysylltiad sy’n gweithio nes i daemon rhywun arall ailgychwyn.

Erthyglau cysylltiedig