Mae gennych wasanaeth VPN wedi’i gadw yn y Gosodiadau System, ac rydych am i’r terminal ei ddechrau. Ar macOS y llwybr a gefnogir yw scutil --nc, ond dim ond ar gyfer gwasanaethau sy’n eiddo i reolwr cysylltiadau rhwydwaith y system ei hun. Nid yw’r bar dewislen yn API: mae gan gleientiaid trydydd parti eu hawtomeiddio eu hunain fel arfer, a gall proffil a wthiwyd gan wasanaeth rheoli wrthod cychwyn lleol. Dyma’r rhestr wirio rwy’n ei dilyn: darganfyddwch y gwasanaeth union, darllenwch ei gyflwr, dechreuwch ef, arhoswch i’r cyflwr newid, yna profwch fod traffig yn defnyddio’r tiwnel mewn gwirionedd. Stopiwch ar y cam cyntaf nad yw’n cytuno, oherwydd mae pob gorchymyn dilynol yn tybio bod yr un blaenorol wedi llwyddo.

Darganfyddwch y gwasanaeth cyn i chi geisio ei ddechrau

Dechreuwch gyda’r rhestr, nid enw’r proffil rydych yn ei gofio:

scutil --nc help
scutil --nc list

Mae pob llinell yn paru statws ag adnabyddwr gwasanaeth, math ac enw arddangos. Yr adnabyddwr yw’r gwerth i sgriptio yn ei erbyn, oherwydd mae enwau arddangos yn ailadrodd ac yn gallu cael eu golygu. Mae llawlyfr scutil Apple yn dogfennu’r modd cysylltu rhwydwaith, tra bod yr --nc help sydd wedi’i osod yn rhestr awdurdodol o is-orchmynion ar y Mac hwnnw; peidiwch â chymryd yn ganiataol fod baner o ganllaw hŷn yn dal i fodoli yn eich fersiwn macOS.

Mae rhestr wag yn ganlyniad, nid yn gamgymeriad. Gall gwasanaeth a grëwyd gan gleient gwerthwr neu broffil rheoli fod yn weithredol tra’n anweledig yma, neu’n weladwy gyda math na all y rheolwr brodorol ei yrru. Yn yr achos hwnnw, defnyddiwch offeryn’r gwerthwr neu ddogfennaeth y proffil. Mae creu proffil brodorol cyfochrog dim ond er mwyn cael rhywbeth i’w ddechrau yn fargen wael.

Darllenwch y cyflwr presennol a chadarnhewch y dewisydd

Holwch y gwasanaeth cyn ei ddechrau, fel y gwyddoch beth ddylai cychwyn llwyddiannus ei newid:

scutil --nc status "Office VPN"

Os yw dau wasanaeth yn rhannu enw arddangos, mae’r enw’n ansicr. Pasiwch yr adnabyddwr yn lle hynny; mae’r gorchymyn yn derbyn y naill neu’r llall, ond dim ond yr adnabyddwr sy’n sicr o ddewis un gwasanaeth. Gwiriwch fod y gair statws yn un rydych yn ei adnabod — fel arfer Connected, Disconnected, Connecting neu Disconnecting — cyn ei ddadansoddi mewn sgript. Gwiriwch hefyd a yw’r proffil yn cael ei reoli, oherwydd gall ffurfwedd glöedig dderbyn y gorchymyn a’i anwybyddu o hyd neu ofyn am gadarnhad.

Mae’r alwad cyflwr hwn yn rhad, felly defnyddiwch ef fel gwarchodwr mewn awtomeiddio: dechreuwch yn unig pan fo’r statws yn Disconnected, a pheidiwch â thrin Connecting fel methiant. Os yw’r gwasanaeth eisoes yn Connected, hepgorwch y cychwyn yn lle tarfu ar diwnel sy’n gweithio.

Dechreuwch y cysylltiad ac arhoswch i’r cyflwr setlo

Mae’r cais cychwyn yn anghydamserol. Mae’r gorchymyn yn dychwelyd pan dderbynnir y cais, nid pan fydd dilysu wedi gorffen neu lwybrau wedi’u gosod. Rhedwch ef, yna pleidleisiwch y cyflwr gyda chwrs aros cyfyngedig a chwiwch allan os yw’r gwasanaeth yn disgyn yn ôl i Disconnected:

scutil --nc start "Office VPN"
n=0
while [ "$n" -lt 30 ]; do
  state=$(scutil --nc status "Office VPN" | head -n 1)
  [ "$state" = "Connected" ] && break
  [ "$state" = "Disconnected" ] && { echo "start failed"; exit 1; }
  sleep 2
  n=$((n + 1))
done

Mae statws Connecting nad yw byth yn datrys fel arfer yn pwyntio at ddata mewngofnodi, MFA neu’r gweinydd, nid at scutil. Ni all y gorchymyn ddarparu mewngofnodi rhyngweithiol, felly bydd proffil sy’n disgwyl tocyn neu allwedd galedwedd yn eistedd yn Connecting ac yn y pen draw yn disgyn yn ôl. Darllenwch y gair statws cyn i chi ychwanegu ail-geisiadau; ni all dolen yn erbyn anogwr dilysu lwyddo.

Peidiwch â thrin statws gadael y plisgyn fel parodrwydd. Y signal defnyddiol yw’r llinyn cyflwr, wedi’i ddilyn gan dystiolaeth bod y tiwnel yn cario traffig. Gall gorchymyn cychwyn sy’n dychwelyd yn dawel eich gadael o hyd gyda chysylltiad nad yw byth yn dilysu.

Profwch fod y tiwnel yn cario traffig, nid yn unig ei fod yn dweud Connected

Mae Connected yn disgrifio’r cysylltiad, nid y penderfyniad llwybro. Mae gwasanaethau PPP ac IKEv2 brodorol yn creu rhyngwyneb ppp neu utun ac yn gosod llwybrau, tra bod tiwnel hollt yn gadael y llwybr diofyn yn unig o fwriad. Archwiliwch y rhyngwynebau a’r ddwy deulu cyfeiriad:

ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns

Darganfyddwch y rhyngwyneb a grëwyd gan y gwasanaeth yn lle dyfalu rhif, yna gofynnwch i’r tabl llwybro pa ryngwyneb y mae cyrchfan benodol yn ei ddefnyddio: route -n get 10.0.0.10, gan roi gwesteiwr mewnol yn ei le. Os yw’n adrodd y rhyngwyneb ffisegol, mae’r tiwnel i fyny ond nid yw’n cario’r ffrwd honno. Gwiriwch lwybrau tiwnel hollt, trefn y datryswr, ac unrhyw reol mur gwarchod lleol sy’n caniatáu rhyngwyneb y tiwnel ond nid y broses.

Datrys enwau yw’r negydd ffug arferol. Gall enwau mewnol ddatrys trwy’r datryswr anghywir tra bod y tiwnel yn berffaith iach, sy’n edrych fel nam VPN ac nad yw. Mae scutil --dns yn dangos y drefn y bydd macOS yn ei defnyddio; ar ôl newid datryswr, fflwsiwch y storfa gyda dscacheutil -flushcache a sudo killall -HUP mDNSResponder.

Cadwch ddata mewngofnodi a braint allan o’r llinell orchymyn

Peidiwch byth â rhoi cyfrinair, allwedd a rannwyd ymlaen llaw na thocyn yn y dadleuon. Mae dadleuon yn weladwy mewn rhestrau prosesau ac yn glanio yn hanes y plisgyn, a gall trawsgrifiad cymorth wedi’i gopïo eu gollwng. Mae trin data mewngofnodi’r proffil ei hun — boed yn eitem Keychain, yn anogwr system neu’n llif dilysu’r cleient — yn lle ar gyfer cyfrinachau.

Nid yw rhedeg y gorchymyn gyda sudo yn gwneud mewngofnodi rhyngweithiol yn ddiarwyliad. Mae’n newid y defnyddiwr effeithiol, nid argaeledd anogwr GUI, tocyn caledwedd na’r allweddgad mewngofnodi. Gall LaunchAgent ddechrau gwasanaeth ar ôl i’r defnyddiwr fewngofnodi a’r allweddgad gael ei ddatgloi; fel arfer ni all LaunchDaemon gyrraedd y darnau hynny o sesiwn y defnyddiwr. Os yw sefydliad yn rheoli’r gwasanaeth, mae ei reolau cylch bywyd yn ennill dros unrhyw sgript leol.

Ataliwch y gwasanaeth a gwiriwch iddo aros wedi’i atal

Ataliwch gyda’r un dewisydd a ddefnyddiwyd gennych i ddechrau, yna darllenwch y cyflwr yn ôl yn lle tybio bod y tiwnel wedi diflannu:

scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"

Mae ataliad sy’n dychwelyd i Disconnected yn gadael un peth i’w wirio o hyd: a yw’r proffil wedi’i osod i gysylltu ar alw, a allai ei ddod yn ôl heb eich sgript. Os oes gan gleient arall lwybrau ar yr un Mac, gall y llwybrau hynny oroesi ataliad brodorol. Ail-wiriwch y llwybr cyn i chi gasglu bod y peiriant oddi ar y VPN.

Ar gyfer troellwr rydych yn ei redeg â llaw, cadwch y drefn yn sefydlog: rhestr, statws, cychwyn, pleidleisio, prawf llwybr, atal, gwirio. Peidiwch â dadansoddi’r enw cyfeillgar allan o allbwn rhydd ei ffurf pan fo’r adnabyddwr ar gael, a pheidiwch â thrin gadael y gorchymyn cychwyn fel parodrwydd. Mae’r rheolwr cysylltiadau yn adrodd cyflwr; eich prawf yw’r cyflwr ynghyd â llwybr sy’n pwyntio at y tiwnel.

Erthyglau cysylltiedig