Pam mae ail dwnnel VPN yn torri'r un cyntaf?
Mae ail gleient VPN yn gosod dau hanner-llwybr diofyn ac mae'r twnnel cyntaf yn mynd yn dywyll: darllenwch pa lwybr sy'n ennill, yna gwahanwch yn ôl proffil, tabl neu namespace.
Gosod ail gleient VPN i gyrraedd un rhwydwaith cwsmer yw'r ffordd arferol y mae hyn yn dechrau, ac mae'r twnnel cyntaf yn mynd yn dywyll tra bod y ddau gleient yn adrodd llwyddiant. Gosododd pob cleient lwybr diofyn, roedd yr ail yn fwy penodol, ac mae'r cnewyllyn bellach yn ei ddilyn ar gyfer popeth ac eithrio cysylltiad allanol y twnnel cyntaf ei hun. Ni chwympodd dim ac nid oes proffil yn anghywir. Disodlodd un llwybr un arall, a'r ateb yw penderfynu pa dwnnel ddylai berchenogi'r llwybr diofyn.
Y symptom: mae'r ail gleient yn ennill yn dawel
OpenVPN: nid yw'r opsiwn redirect-gateway def1 yn ailysgrifennu 0.0.0.0/0. Mae'n ychwanegu 0.0.0.0/1 a 128.0.0.0/1: gyda'i gilydd maent yn cwmpasu pob cyfeiriad IPv4, ac mae pob rhagddodiad yn curo llwybr diofyn plaen ar hyd. Mae'r llwybr diofyn gwreiddiol yn aros yn y tabl ac yn peidio â chael ei ddefnyddio ar gyfer traffig cyffredin, ac mae llwybr gwesteiwr i weinydd VPN yn cadw'r twnnel rhag dal ei becynnau allanol ei hun. Mae'r ddau gleient yn gwneud hyn, a'r ail yn syml yn gosod ei bâr yn hwyrach.
Dyna pam mae'r twnnel cyntaf yn edrych yn farw yn hytrach nag wedi'i ddatgysylltu. Mae ei ryngwyneb i fyny, mae ei sianel reoli'n fyw, ac nid oes traffig cymhwysiad yn ei gyrraedd mwyach. Mae'r gŵyn wrthwyneb yn olrhain i'r un push coll: mae ffôn sy'n cysylltu ond yn anfon dim yn siarad fel arfer â gweinydd na hysbysebodd redirect-gateway erioed, felly mae'r ddyfais yn cadw ei llwybr diofyn ei hun ac yn cyrraedd y pwll yn unig.
Cymerwch snapshot llwybrau cyn ac ar ôl i'r ail gleient gysylltu. Y ddau hanner-llwybr sy'n ymddangos yn y tabl yw'r newid cyfan, ac maent yn esbonio'r ddwy gŵyn. Nid oes angen i ddim arall yn y tabl symud er mwyn i'r symptom ymddangos. Dyna hefyd pam mae tynnu'r ail gleient yn adfer y cyntaf ar unwaith.
Darllenwch pa dwnnel sy'n ennill mewn gwirionedd
Peidiwch â chasglu'r enillydd o'r drefn y dechreuodd y cleientiaid ynddi nac o'r eicon yn yr hambwrdd. Gofynnwch i'r cnewyllyn pa lwybr y byddai'n ei ddefnyddio ar gyfer cyrchfan y tu allan i'r ddwy rwydwaith breifat, a darllenwch y rhyngwyneb sy'n dychwelyd.
ip route show
ip route get 198.51.100.24
route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.24
Y ddau gyntaf yw ateb Linux a'r ddau olaf yw cyfwerth Windows. Rhedwch nhw tra bo'r ddau dwnnel i fyny, yna datgysylltwch un a'u rhedeg eto. Y gwahaniaeth rhwng y ddau allbwn yw'r ffaith sydd ei hangen arnoch cyn dewis ateb, ac mae'n cymryd llai o amser na darllen log y naill gleient na'r llall.
Cofnodwch y canlyniad, gan gynnwys enw'r rhyngwyneb a'r rhagddodiad a fatchodd. Mae tocyn sy'n dweud bod yr ail VPN wedi torri'r cyntaf yn ddisgrifiad o'r symptom, nid yn ddatganiad llwybro y gall unrhyw un weithredu arno. Mae'r chwiliad yn ei droi'n ffaith y gall y peiriannydd nesaf ei hatgynhyrchu mewn un gorchymyn.
Windows: atal un proffil rhag berchenogi'r llwybr diofyn
Mae Windows yn cadw proffiliau wedi'u storio, ac mae'r cleient adeiledig yn gadael i un ddibynnu ar y llall fel bod y cyntaf yn codi'n awtomatig pan fydd yr ail yn deialu. Mae'r proffil a gysylltodd fwyaf diweddar yn tueddu i gadw'r llwybr diofyn, felly'r perchennog ymarferol yw'r deial olaf yn hytrach na'r cyntaf. Rhowch lwybrau push eu hunain i bob proffil a throwch split tunneling ymlaen ar gyfer yr un na ddylai berchenogi'r llwybr diofyn.
Set-VpnConnection -Name "Contoso" -SplitTunneling $true
rasdial Contoso
Mae split tunneling yn newid hynny: dim ond y rhagddodiaid a wthiwyd gan y gweinydd sy'n glanio yn y tabl, sy'n gadael y llwybr diofyn gyda'r twnnel cyntaf. Mae'r dyluniad yn dal i fethu os yw'r ddau weinydd yn gwthio llwybr diofyn, oherwydd yna'r cysylltiad olaf sy'n ennill ac nid oes unrhyw osodiad ar ochr y cleient yn newid hynny. Trwsiwch y push ar ochr y gweinydd neu dderbyniwch un perchennog.
Mae proffiliau a ysgogir gan ap yn nodwedd wahanol sy'n werth ei gwybod: gall proffil Windows ddechrau pan fydd gweithredadwy enwebedig yn cychwyn, gyda hidlyddion traffig yn penderfynu beth y mae'n ei gario. Mae hyn yn osodiad proffil yn hytrach na rheol mur tân, ac mae'n datrys problem wahanol i wrthdaro'r llwybr diofyn.
Linux: cadwch yr ail dwnnel allan o'r prif dabl
Mae rhedeg dau enghraifft openvpn --config ar un peiriant yn rhoi'r ddau gleient yn yr un tabl, ac mae tri opsiwn yn eu gwahanu gyda mwy o ynysu. Yr ysgafnaf yw atal yr ail gleient rhag golygu'r tabl o gwbl, gan ddefnyddio route-nopull gyda llwybrau penodol, neu sgript route-up sy'n gosod dim ond yr hyn a fwriadwch. Yna mae'r ail dwnnel yn cario'r union ragddodiaid a enwir gennych a dim byd arall. Yna byddwch chi'n penderfynu pa ragddodiaid sy'n mynd i ble yn hytrach na darganfod hynny wedyn.
Llwybro polisi yw'r opsiwn canol. Mae rheol yn dethol tabl ar wahân ar gyfer un cyfeiriad ffynhonnell neu farc mur tân, ac mae'r tabl hwnnw'n cario llwybrau'r ail dwnnel. Hidlo llwybr gwrthdro yw'r trap yma, oherwydd mae ateb sy'n cyrraedd ar ryngwyneb gwahanol i'r un y byddai'r tabl yn ei ddewis yn cael ei ollwng, felly gwiriwch osodiad rp_filter cyn dod i'r casgliad bod y twnnel wedi torri.
ip rule add from 10.44.7.0/24 table 100
ip route add default dev tun1 table 100
sysctl net.ipv4.conf.all.rp_filter
Namespaces rhwydwaith yw'r opsiwn trymaf a'r glanaf. Cychwynnwch yr ail gleient y tu mewn i ip netns, rhowch bâr veth iddo, a mynd i mewn i'r namespace hwnnw i'w ddefnyddio. Mae ymyrraeth yn diflannu oherwydd bod gan bob namespace ei dabli ei hun yn hytrach na rhannu un, sy'n werth y gosodiad ychwanegol pan fo'r ddau dwnnel i fod i aros i fyny am wythnosau.
Fesul cymhwysiad, a chadwyno fel problem ar wahân
Weithiau dim ond un rhaglen ddylai ddefnyddio'r ail dwnnel. Ar Linux, mae llwybro polisi yn ôl defnyddiwr, cgroup neu borth yn cyrraedd y canlyniad hwnnw, a gellir pinio un cyrchfan i ryngwyneb heb gyffwrdd â'r llwybr diofyn o gwbl. Nid yw cymhwysiad sy'n pinio ei soced i un rhyngwyneb byth yn ymgynghori â'r tabl llwybro, felly gall lansiwr barhau i ddefnyddio'r addasydd ffisegol nes bod cyfeiriad yn cael ei ddewis yn ei osodiadau ei hun.
Mae cadwyno'n wahanol weithrediad i redeg dau dwnnel ochr yn ochr. Mae cadwyno A dros B yn golygu bod yn rhaid i gyfeiriad y gweinydd mewnol fod yn gyrraeddadwy o fewn y twnnel allanol. Ni ddylai'r cleient allanol chwaith gymryd pecynnau amgryptiedig y cleient mewnol yn gollwng. Un cleient mewn peiriant rhithwir yw'r fersiwn llym ond dibynadwy; mae'r ddau ar un gwesteiwr yn gofyn am y gwaith llwybro uchod ynghyd â llwybr allanol tuag at y gweinydd mewnol nad yw byth yn mynd i mewn i'r twnnel mewnol.
Ysgrifennwch berchennog y llwybr diofyn, y rhestr rhagddodiaid y mae pob twnnel yn ei chario, a'r llwybr DNS. Mae'r tri ffaith hynny'n troi'r digwyddiad nesaf yn chwiliad yn hytrach nag yn ymchwiliad.