Twee VPN-kliënte op een rekenaar: wat bots en wat werk
Twee kliënte baklei oor die standaardroete, die naamoplosser en filterbestuurders. Teken aan wie die uitgang beheer, en skei dan die tweede tonnel met 'n VM of 'n netns.
Jou tweede kliënt maak verbinding, die eerste een se hulpbronne hou op om op te los, en die tiket sê die werk-VPN het die persoonlike een gebreek. Niks is gebreek in die sin van 'n fout nie: albei kliënte het gedoen waarvoor hulle ontwerp is, en die masjien het net een roetetabel. Die botsing gaan oor vier hulpbronne wat elke kliënt as sy eie beskou. Werk hulle in volgorde deur, en die oplossing word gewoonlik 'n ontwerpkeuse eerder as 'n herstel.
Stap 1: vind watter kliënt die uitgang besit
Lees die huidige uitgangsbesluit voordat jy enigiets verander. Die roete-opsoek vir 'n openbare adres vertel jou watter koppelvlak en volgende hop 'n pakkie nou sou gebruik, en dit is die antwoord op wie gewen het. Vergelyk dit met die koppelvlakname wat die kliënte geskep het, wat gewoonlik die produk- of protokolnaam dra. As die opsoek na die tonnel wys wat jy nie verwag het nie, het jy die botsing reeds gevind.
ip route get 1.1.1.1
ip route show default
route print
Sommige kliënte vervang glad nie die standaardroete nie; hulle voeg twee helftes by, een vir die onderste helfte van die adresruimte en een vir die boonste helfte, wat saam alles dek. Dit laat die oorspronklike standaardroete sigbaar en laat 'n handmatige herstel korrek lyk terwyl verkeer steeds deur die tonnel vertrek. Lees die metriek en die voorvoegsellengte, nie net die teenwoordigheid van 'n standaardinskrywing nie.
Stop as albei kliënte dieselfde voorvoegsel met dieselfde metriek opeis. Die kern kies een, en die ander sal as verbind vertoon terwyl dit niks dra nie.
Stap 2: kontroleer die naamoplosser en die oorvleuelende voorvoegsels
DNS is die tweede botsing, en dit lewer 'n kenmerkende simptoom: name misluk terwyl adresse werk. Elke kliënt stuur sy eie naamoplosser deur, en die laaste skrywer wen vir die navrae wat volg. Vra die naamoplosserdiens wat dit per skakel gebruik eerder as om die kliënt se instellingsblad te lees.
resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example
Vergelyk dan die private voorvoegsels wat die twee netwerke gebruik. As albei kante uit dieselfde reeks toeken, sal geen kliëntekant-reëling dit regstel nie, want die masjien kan nie onderskei watter 10.0.0.0/8-bestemming aan watter tonnel behoort nie. Een kant moet hernommer of vertaal word, en dit is 'n gesprek met die netwerkeienaars eerder as 'n konfigurasieverandering. Oorvleueling is die een botsing waar die eerlike antwoord is dat die ontwerp moet verander.
Stop hier as die voorvoegsels oorvleuel. Alles later in hierdie kontrolelys aanvaar dat hulle dit nie doen nie.
Stap 3: kies 'n skeidingspatroon wat hou
Die betroubare patrone vermy dit om twee kliënte teen dieselfde roetetabel te laat loop. Een kliënt met 'n split-tonnel-beleid wat albei private netwerke bereik is die eenvoudigste, mits die bestemmings nie oorvleuel nie en die beleideienaar instem. 'n Virtuele masjien of 'n netwerk-naamruimte is die volgende stap op, want elkeen kry sy eie tabel en sy eie naamoplosser.
sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/
'n Naamruimte gee dieselfde skeiding as 'n virtuele masjien sonder die tweede bedryfstelsel, maar dit het ruwe kante: die tonneltoestel moet daarin geskuif word, en die toepassing moet binne-in dit begin word. 'n Aparte fisiese toestel is dikwels die minste verrassende opsie vir 'n persoonlike VPN langs 'n bestuurde werkkliënt. Om een tonnel binne 'n ander te stapel is nie 'n skeidingspatroon nie; die binneste eindpunt moet deur die buitenste tonnel bereikbaar bly, en die reëling voeg MTU- en vertragingsprobleme boonop by.
Kies een patroon en skryf neer waarom. Om 'n naamruimte vir een toepassing met 'n split-tonnel vir die res te meng, herskep die oorspronklike botsing in 'n vorm wat moeiliker is om te ontfout.
Stap 4: verifieer albei netwerke vanuit dieselfde sessie
Toets een hulpbron op elke private netwerk vanuit die omgewing waar die toepassing werklik loop, nie vanuit jou dop as die app binne 'n naamruimte loop nie. Kontroleer die uitgangskoppelvlak, die opgeloste adres en die antwoordkode saam, want 'n sukses in een van die drie kan 'n mislukking in die ander verberg. Herhaal ná 'n herlaai, want die volgorde waarin kliënte begin, bepaal wie wen. Daardie volgorde is die deel wat mense vergeet om aan te teken.
curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40
Teken die kliëntweergawes, die koppelvlakke, die naamoplosser se toestand en die voorvoegsels vir elke netwerk aan. Wanneer 'n kliënt opdateer en sy roetegedrag verander, is daardie rekord die verskil tussen 'n vyf-minuut-herstel en 'n herbou. Die volgende persoon sal nie jou geheue deel van watter tonnel eerste opgekom het nie.
Die kontrolelys is voltooi wanneer jy die koppelvlak kan noem wat die standaardroete besit, die naamoplosser wat elke naam gebruik, die patroon wat die tweede tonnel skei, en die resultaat van een versoek per netwerk ná 'n herlaai. Enigiets minder is 'n konfigurasie wat vandag toevallig werk.