Mae dau fethiant yn edrych yn union yr un fath o eicon y hambwrdd: traffig sy'n mynd i mewn i'r tiwnel a thraffig sy'n mynd o'i amgylch yn dawel. Mae'r cleient yn dangos Connected yn y ddau achos, oherwydd dim ond bodolaeth y rhyngwyneb tiwnel y mae Connected yn ei olygu a bod y cleient wedi gosod y llwybrau a oedd ei eisiau. A ddefnyddiodd un pecyn o un rhaglen y llwybrau hynny yw cwestiwn ar wahân, a atebir mewn man arall yn y pentwr. Mae pedwar mesuriad yn setlo'r rhan fwyaf ohono — y chwiliad llwybr, y naid gyntaf, cipiad ar y addasydd corfforol ac arsylwad o'r tu allan — ac mae golwg sesiwn y gweinydd yn cwmpasu'r gweddill.

Dechreuwch gyda'r llwybr y bydd y pecyn yn ei gymryd

Y tabl llwybro yw'r penderfyniad, felly gofynnwch iddo am un cyrchfan yn lle darllen y cyfan a dyfalu. Ar Linux, mae ip route get yn enwi'r rhyngwyneb a'r cyfeiriad ffynhonnell a ddewisodd y cnewyllyn:

ip route get 203.0.113.10
ip route get 10.20.5.7

Ar Windows, mae Find-NetRoute -RemoteIPAddress 203.0.113.10 yn fwy defnyddiol na route print -4 am yr un rheswm: mae'n adrodd y llwybr a enillodd, nid pob llwybr sy'n bodoli. Darllenwch y tabl unwaith beth bynnag am ei res 0.0.0.0. Mae pâr /1 yno yn golygu bod cleient tiwnel llawn wedi ailysgrifennu'r llwybr diofyn: mae opsiwn redirect-gateway def1 OpenVPN yn gosod 0.0.0.0/1 a 128.0.0.0/1 drwy'r tiwnel, sy'n curo'r 0.0.0.0/0 presennol ar gyfatebiaeth rhagddodiad hiraf heb ddileu'r llwybr diofyn corfforol. Dyna pam y gall dau lwybr diofyn gydfodoli tra bod popeth yn dal i fynd i'r tiwnel.

Mae dau fanylyn yn gwneud y tabl yn anwireddus. Yn gyntaf, edrychwch ar y rhagddodiad a gydweddodd yn hytrach na nifer y llwybrau diofyn, oherwydd metrig rhyngwyneb neu bâr /1 sy'n penderfynu'r enillydd. Yn ail, mae cysylltiad sy'n bodoli eisoes yn cadw'r llwybr y'i sefydlwyd ag ef; ar ôl i'r tiwnel godi, gall sesiwn agored ddal i ddefnyddio'r hen lwybr nes iddi gael ei hailosod, a dyna pam mae ailgysylltu'n ymddangos fel pe bai'n trwsio problem llwybro. Mae cleient sy'n rhedeg — ps ax | grep openvpn — ond yn profi bod y broses wedi dechrau.

Olrheiniwch un enw mewnol ac un enw cyhoeddus

Mae chwiliad llwybr yn dangos bwriad; mae'r llwybr yn dangos cyflenwi. Olrheiniwch enw sy'n rhaid iddo fod yn fewnol ac enw na ddylai fod, tra ydych wedi'ch cysylltu, a chymharwch y naid gyntaf:

traceroute intranet.corp.example
traceroute 1.1.1.1

Mae'r un naid gyntaf i'r ddau yn golygu na chafodd yr enw mewnol erioed fynd i'r tiwnel ac mae'r nam uwchlaw hynny, fel arfer enw sy'n datrys i gyfeiriad cyhoeddus neu lwybr na chafodd ei osod. Mae traffig mewnol yn gadael drwy 10.8.0.1 tra bod traffig cyhoeddus yn gadael drwy 192.168.1.1 yn golygu bod tiwnelu hollt yn gwneud yn union yr hyn y'i ffurfweddwyd ar ei gyfer. Mae ôl troed sy'n cyrraedd porth VPN ac wedyn yn dychwelyd dim ond terfynau amser fel arfer yn broblem llwybr dychwelyd neu wal dân gweinydd, nid llwybr anfon coll.

Mae ICMP wedi'i hidlo yn gwneud y gwiriad hwn yn anwireddus: mae sêr ar y ddau ôl troed yn edrych fel tiwnel marw ac fel arfer wal dân yw hi. Profwch borth TCP lle gallwch — traceroute -T -p 443 ar Linux — a chofiwch nad yw'r ôl troed yn dweud pa ddatryswr a atebodd: gall enw ddatrys yn lleol a chael ei gyrraedd drwy'r tiwnel o hyd.

Cipiwch ar yr addasydd corfforol, nid ar y tiwnel

Y ddolen gorfforol yw'r unig le sy'n dangos beth mae'r rhwydwaith yn ei weld mewn gwirionedd. Gyda'r tiwnel i fyny, dylai sesiwn i'r swyddfa ymddangos fel llwyth wedi'i amgryptio wedi'i gyfeirio at y gweinydd VPN, nid fel cysylltiad i 10.20.5.7:

sudo tcpdump -ni eth0 udp port 53
sudo tcpdump -ni eth0 host 10.20.0.5

Mae'r hidlydd cyntaf yn dal datrysiad enwau sy'n gadael yn lleol, sef y gollyngiad mwyaf cyffredin a'r tawelaf — mae'r dudalen yn llwytho o hyd, dim ond bod y datryswr wedi gweld yr ymholiad. Mae'r ail yn dal traffig plaen i gyfeiriad mewnol na ddylai fodoli ond y tu mewn i'r tiwnel. Ar Windows, mae pktmon yn gwneud yr un gwaith heb yrru gyrrwr: pktmon filter add -p 53, yna pktmon start --capture --pkt-size 128, yna pktmon stop ac pktmon format pktmon.etl -o capture.txt. Mae'r fflagiau hynny'n amrywio ychydig rhwng fersiynau Windows, felly gwiriwch pktmon filter add /? cyn ymddiried yn y gystrawen.

Cipiwch ar y rhyngwyneb corfforol i ddod o hyd i ollyngiadau; mae cipiad ar y tiwnel yn cynnwys y pecynnau rydych eisoes yn credu sydd yno, ac ar weinydd mae'n cynnwys pecynnau allanol annarllenadwy a'u ffynhonnell yw'r porth. Mae cownteri beit ar unrhyw ryngwyneb yn disgrifio pecynnau, nid rhaglenni; mae priodoli traffig i broses angen monitor sy'n mapio socedi i brosesau.

Gofynnwch i wasanaeth allanol, yna gofynnwch eto fesul rhaglen

Yr unig wiriad sy'n profi'r allanfa yw ateb o'r tu allan: gwasanaeth sy'n adleisio'r cyfeiriad ffynhonnell a welodd. Rhedwch ef o gragen, lle gallwch ddewis y rhyngwyneb, a rhedwch ef ddwywaith:

sudo curl --interface tun0 https://example.net/ip
sudo curl --interface eth0 https://example.net/ip

Mae atebion gwahanol yn rhoi prawf o'r ddau lwybr ac yn ffordd i brofi rhaglen benodol: rhwymwch hi, neu rhedwch hi mewn gofod enw rhwydwaith gydag un llwybr, a gwelwch ba gyfeiriad mae'r pen pell yn ei gofnodi. Atebion union yr un fath yw'r methiant diddorol: naill ai ni chafodd y rhwymiad effaith, neu mae rhywbeth rhwng y gwesteiwr a'r pen pell yn ailysgrifennu'r cyfeiriad ffynhonnell cyn iddo gyrraedd. Ar Windows, mae curl --interface eisiau cyfeiriad yr addasydd yn hytrach na'i enw.

Mae porwr sy'n adrodd cyfeiriad y VPN yn profi'r porwr. Gall cleient post, rheolwr pecynnau, asiant copi wrth gefn neu ail broffil porwr gymryd llwybr gwahanol bob un, yn enwedig pan fo gosodiad dirprwy neu lwybr tiwnel hollt yn cwmpasu un ohonynt. Nid yw newid cyfeiriad ynddo'i hun yn brawf o ollyngiad: gall cydbwysydd llwyth ateb yn wahanol yn dibynnu ar yr allanfa a welodd, felly cymharwch y cyfeiriad ffynhonnell a gofnodwyd, nid y dudalen.

Defnyddiwch olwg y gweinydd i gadarnhau'r cymar

Mae'r gweinydd yn ateb cwestiwn gwahanol: a yw cymar wedi'i gysylltu, faint mae wedi'i gario ac a ailddechreuodd y sesiwn. Mae cymar sy'n fyw ar y gweinydd tra bod cownteri'r cleient prin yn symud yn golygu nad yw traffig y rhaglen yn mynd i'r tiwnel, beth bynnag a ddywedodd tabl y cleient. Mae cymar sy'n symud llawer o ddata i ddefnyddiwr sy'n dweud nad yw dim yn gweithio yn ymchwiliad gwahanol.

Mae dau drap yma. Mae tiwnel wedi'i fasgio yn gwneud i bob llif ymddangos fel pe bai'n dod o'r porth, felly mae logiau a chyfrifyddu fesul cleient yn syrthio i un cyfeiriad. Ac mae cleient yn cael ei drin fel gwesteiwr lleol, felly atebir cwestiwn ynghylch rhywun yn copïo ffeiliau drwy'r VPN gan draffig rhannu ffeiliau ar y gweinydd neu gan archwilio'r gwesteiwr ar y gweinydd — mae gwylio'r tiwnel yn rhoi penau a chyfaint, nid enwau ffeiliau.

Gwahaniaethwch benderfyniad dylunio oddi wrth ollyngiad

Nid yw popeth y tu allan i'r tiwnel yn ollyngiad. Mae traffig dolen-leol a darlledu yn aros yn lleol yn ôl y cynllun, mae argraffydd a ganfyddir drwy multicast yn dal i gyhoeddi ar y LAN, ac mae'n rhaid i DHCP adael yn lleol. Mae rhaglen sydd wedi'i rhwymo i ryngwyneb penodol yn osgoi'r tabl llwybro yn fwriadol, a dim ond rheol wal dân, gofod enw neu lwybr polisi sy'n newid hynny.

Mae IPv6 yn haeddu llinell ei hun yn y rhestr wirio. Mae tiwnel sy'n cario IPv4 yn unig yn gadael ail lwybr defnyddiadwy i westeiwr deu-stac, a bydd cyrchfan deu-stac yn ei ffafrio — gan gynnwys DNS, os yw'r datryswr yn gyrraeddadwy dros IPv6. Analluogwch IPv6 ar yr addasydd neu cadarnhewch fod y tiwnel yn ei gario cyn trin canlyniad IPv4 fel un cyflawn.

Pan fo'r gwiriadau'n anghytuno, yr anghytundeb fel arfer sy'n enwi'r nam:

What you seeWhat it meansNext step
The route picks tun0 but the capture shows cleartext to 10.20.5.7Something bypassed the table: a bound app, a policy route or a session older than the tunnelReset the flow, check the app bind, check the ip rule list
The route picks eth0 for an internal nameThe name resolves to a public address, or the route was never installedCompare the resolved address with the routes the server pushes
The capture shows DNS to the LAN resolverResolver leak: data is tunneled, lookups are notPoint the resolver inside, or push it from the server
All four checks agree and one app still failsPath selection is fine; suspect MTU, a per-app proxy or the far endTest the same destination from a known-good client

Trefn sy'n gweithio: cadwch y tabl llwybro cyn ac ar ôl cysylltu, olrheiniwch un enw mewnol ac un cyhoeddus, cipiwch DNS ar yr addasydd corfforol, adleisiwch gyfeiriad yr allanfa o'r gragen ar gyfer y rhaglen benodol, yna darllenwch y gweinydd am gyfaint. Os yw'r pedwar cyntaf yn cytuno, mae'r tiwnel yn cario'r hyn yr ydych yn ei feddwl ac mae'r broblem sy'n weddill uwchlaw hynny. Os yw dau ohonynt yn anghytuno, y pâr sy'n anghytuno yw'r nam, nid yr eicon.

Erthyglau cysylltiedig