Jokaisen yhteyden jälkeen kirjoitettu reitti ratkaisee hetken, ei viikkoa. macOS:ssä kestävä valinta on yleensä VPN-palvelun yhteyteen tallennettu etuliite, koska palvelu asentaa sen uudelleen joka yhteydellä ja poistaa sen, kun palvelu on alhaalla. Vaihtoehtoina ovat tilapäinen route add testaamiseen ja yhteyden hook osoitteille, jotka tunnetaan vasta neuvottelun jälkeen.

Päätä, kuuluuko reitti palvelulle vai istunnolle

Kysy, mistä etuliite riippuu. Jos se on kiinteä yksityinen verkko natiivin VPN-palvelun takana, reitti kuuluu sille palvelulle. Jos se riippuu vertaisosoitteesta, joka muuttuu joka yhteydellä, hook tai tilan ohjaama työ voi olla parempi omistaja. Jos tarkistat vain polkua seuraavat viisi minuuttia, tilapäinen reitti riittää.

Palveluun sidottu reitti on elinkaareltaan puhtain. Se ilmestyy palvelun mukana ja katoaa, kun palvelu ei ole yhteydessä, joten se ei voi elää kauemmin kuin tunneli, johon se osoittaa. Tämä ominaisuus on arvokkaampi kuin yhden rivin komennon mukavuus.

Istuntoon sidottu reitti kuuluu liitännälle, ja se numero muuttuu ilman ilmoitusta. Uudelleenyhdistäminen voi antaa tunnelille eri utun-nimen kuin edellinen istunto käytti, mikä muuttaa kovakoodatun komennon reitiksi, joka ei osoita mihinkään tai, pahempaa, toiseen tunneliin.

Lue nykyinen reitin ja palvelun tila

Aloita nimistä, joita järjestelmä todella käyttää. Verkkoasetusten palvelun nimi on alla olevien komentojen tunniste, ja nykyinen reittitaulu näyttää, mitä yhdistetty asiakas asensi. Lue molemmat, kun tunneli on päällä.

scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5

Tämä haku näyttää, minkä yhdyskäytävän ja liitännän ydin valitsisi tälle osoitteelle tällä hetkellä. Jos se valitsee jo tunnelin, etuliite on katettu ja uusi reitti olisi tarpeeton. Jos se valitsee paikallisen reitittimen, tunnelilta puuttuu se etuliite.

Pane merkille vertaisosoite, kun olet yhteydessä. Siitä tulee yhdyskäytävän arvo palveluun sidotussa reitissä, ja se on yleensä kohde, joka näytetään tunnelin oletusreitille komennossa netstat -rn.

Tallenna etuliite networksetupilla

Työkalu networksetup liittää lisäreittejä verkkopalveluun. Palvelulle nimeltä OfficeVPN ja yksityiselle etuliitteelle, joka saavutetaan tunnelin vertaisen kautta, muoto on:

sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN

Jokainen palvelun nimen jälkeinen kolmikko antaa kohteen, sen verkkomaskin ja tunnelin vertaisen yhdyskäytävänä. Yksi kutsu voi kantaa useita etuliitteitä, ja tyhjä kutsu tyhjentää tallennetun luettelon. Lukija on varmistusvaihe; jos luettelo on tyhjä, asetus ei kohdistunut palveluun, jota luulet.

Yhdyskäytävän on oltava tunnelin vertainen, ei fyysinen reititin. Reitti, joka nimeää paikallisen yhdyskäytävän, lähettää yksityisen etuliitteen fyysisen liitännän kautta, mikä on alkuperäinen vika lisäaskelin. Vanhentunut vertainen on yleisin syy siihen, että oikealta näyttävä reitti ei koskaan kuljeta liikennettä. Lue vertainen uudelleen yhdistetystä tilasta sen sijaan, että kopioit osoitteen vanhasta muistiinpanosta.

Käytä route add -komentoa vain testiin

Suora reitti on hyödyllinen todistamaan, että etuliite toimii, ennen kuin teet siitä pysyvän. Liitännän muoto välttää yhdyskäytävän haun:

sudo route -n add -net 10.20.0.0/16 -interface utun4

Reitti katoaa seuraavalla uudelleenyhdistämisellä ja riippuu liitännän numerosta, joka on olemassa tänään. Se tekee siitä diagnostiikan, ei käyttöönoton. Jos testi toimii eikä palveluun sidottu reitti toimi, vertaa ensin yhdyskäytävän arvoa; se on kenttä, joka on useimmin väärin.

Ole varovainen neuvojen kanssa, jotka korvaavat VPN:n oletusreitin ja pakottavat jaon. Asiakas, joka pakottaa täyden tunnelin, voi asentaa reitit uudelleen uudelleenyhdistämisen tai käytännön päivityksen jälkeen, joten manuaalinen muutos kumoutuu hiljaa. Muutama yksityinen etuliite on reititysongelma; kaiken internettiliikenteen pitäminen paikallisena täyden tunnelin käytäntöä vastaan on palvelinpuolen päätös.

Valitse hook vain, kun osoitteesta neuvotellaan

PPP-pohjaisille linkeille, kuten L2TP, macOS suorittaa /etc/ppp/ip-up, kun linkki on muodostettu. Skripti saa liitännän nimen sekä neuvotellut paikallisen ja etäosoitteen, joten se voi lisätä reitin, joka riippuu palvelimen antamasta vertaisesta. Juuri se on tapaus, jota kiinteä palvelun reitti ei voi ilmaista.

IKEv2 ja valmistajien asiakkaat eivät ehkä käytä tuota PPP-polkua lainkaan, mikä tarkoittaa, että skripti voi vaieta koko istunnon ajan. Kun niin käy, launchd-työ, joka kysyy scutil --nc status ja reagoi tilan muutokseen, on vastaava mekanismi pienellä viiveellä.

Käytitpä mitä tahansa hookia, tee siitä idempotentti ja anna sen poistaa vain itse luomansa reitit. Skripti, joka poistaa jokaisen tunnelin mainitsevan reitin, poistaa lopulta reitin, joka pitää VPN-palvelimen tavoitettavana, ja yhteys katkeaa heti kun se onnistuu.

Lopeta tarkistamalla yksityinen kohde, tavallinen selailu sekä uudelleenyhdistämis- tai unit sykli. Tarkastele sitten scutil --dns, koska nimien ratkaisu on erillinen käytäntö eikä toimiva reitti todista, että yksityiset nimet ratkeavat.

Aiheeseen liittyvät artikkelit