Një program duhet të përdorë lidhjen e zakonshme ndërsa gjithçka tjetër qëndron në tunel, dhe klienti nuk ka ndërprerës për këtë. Nuk ka as ndonjë menu të fshehur për të gjetur. Një rrugë zgjidhet nga fusha brenda paketës, dhe paketa mbart adresa e porta, jo identitetin e procesit që e krijoi, prandaj një përjashtim duhet të shprehet në një nga ato fusha. Ndiqni një paketë një herë dhe opsionet e disponueshme nuk janë më misterioze.

Pse klienti nuk mund ta ofrojë

Rrugëtimi sipas destinacionit krahason adresën e destinacionit me prefikset dhe mban përputhjen më të gjatë. Në atë çast çdo paketë duket njësoj, çfarëdo që e prodhoi. Rrugëtimi sipas politikës së burimit zgjeron krahasimin në adresën e burimit, dhe ky është grepi që përdor çdo zgjidhje praktike: ndryshoni burimin dhe një tabelë tjetër bëhet e përshtatshme.

Portat nuk ndihmojnë. Përjashtimi sipas portës do të duhej vlerësuar përpara kërkimit të destinacionit, dhe porta nuk luan asnjë rol në atë vendim. Çdo gjë që reklamohet si përjashtim i bazuar në portë në të vërtetë përjashton sipas një fushe tjetër dhe e përshkruan atë lirshëm.

Rrugëtimi i vërtetë sipas aplikacionit ekziston aty ku platforma ka shtuar mekanizmin për të, si thirrjet e filtrit në Windows ose lidhja e shërbimit VPN në Android. Një instancë desktop e OpenVPN nuk sjell asgjë nga kjo, dhe asnjë flamur konfigurimi nuk e shpik atë.

Linux: shënoni procesin, pastaj rrugëtoni shenjën

Qasja më e pastër e lidh vendimin me procesin që zotëron soketin. Përputhja owner funksionon për trafikun e gjeneruar lokalisht në zinxhirin OUTPUT, prandaj një shenjë e aplikuar atje mund të zgjedhë një tabelë të veçantë:

iptables -t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 0x1
ip rule add fwmark 0x1 table 200
ip route add 192.168.1.0/24 dev eth0 src 192.168.1.0 table 200
ip route add default via 192.168.1.1 dev eth0 table 200

Paketat nga përdoruesi 1001 pastaj konsultojnë tabelën 200 dhe dalin përmes portës së zakonshme, ndërsa tabela kryesore vazhdon t’i dërgojë të gjitha të tjerat në tunel. Përputhja owner zbatohet vetëm për paketat e gjeneruara lokalisht, që është pikërisht trafiku që ka rëndësi këtu, dhe nuk mund të klasifikojë paketat e përcjella për një host tjetër. Verifikoni me mjetet dhe jo me qëllimin: ss -tnp tregon adresën lokale dhe procesin zotërues të lidhjeve të vendosura, dhe ip route get 1.1.1.1 mark 0x1 tregon cilën tabelë zgjedh shenja.

Një hapësirë emrash rrjeti është përgjigjja më e fortë për një program të vetëmjaftueshëm, sepse çdo soket i krijuar brenda saj është i lidhur me të nga ndërtimi, prandaj proceset ndihmëse dhe lidhjet fëmijë trashëgojnë sjelljen pa u klasifikuar fare. Kostoja është hidraulike: një çift veth, një adresë në çdo skaj dhe një rrugë e paracaktuar brenda hapësirës së emrave që tregon përsëri te hosti.

ip netns add novpn
ip link add veth-host type veth peer name veth-ns
ip link set veth-ns netns novpn
ip addr add 10.200.0.1/24 dev veth-host
ip netns exec novpn ip addr add 10.200.0.2/24 dev veth-ns
ip netns exec novpn ip route add default via 10.200.0.1

Windows: destinacioni vendos ende

Windows zgjedh ndërfaqen dalëse nga destinacioni, prandaj një program që dëshiron një rrugë tjetër duhet të ndryshojë diçka që stivi konsulton përpara atij zgjedhjeje. ForceBindIP mbulon gjysmën e parë: nis një program me soketat e tij të lidhura tashmë me një adresë lokale që ju emërtoni. Vetëm kjo nuk ndryshon ndërfaqen nga e cila del paketa, sepse destinacioni vazhdon të zgjedhë rrugën. Lidhni një burim në një laptop rruga e paracaktuar e të cilit tregon në tunel dhe paketa hyn gjithsesi në tunel.

Simptomi ka një formë të lexueshme sapo ta njihni. Ai vlen për një adresë LAN që ndërfaqja e zgjedhur e arrin drejtpërdrejt dhe dështon për çdo gjë në internet rruga e së cilës tregon te tuneli. Duket gjithashtu se funksionon derisa programi t’ia dorëzojë punën një ndihmësi, sepse një ndihmësi që hap soketin e vet nuk i është thënë kurrë për lidhjen.

Zhvendosni vendimin kur një proces është njësia e gabuar

Nëse kërkesa e vërtetë është një pajisje dhe jo një program, vendoseni në SSID ose VLAN të vetin dhe lëreni ruterin të vendosë: ai burim merr rrugën normale ndërsa burimet e tjera përdorin tunelin. Një makinë portë e dedikuar është dizajni tjetër i ndershëm: mban VPN-në dhe pranon vetëm destinacionet që ruteri i dërgon. Në një VLAN politika mbulon çdo rrjedhë që pajisja hap, përfshirë proceset ndihmëse që thyen qasjen e Windows. Shkëmbimi është shtrirja: dy programe në atë pajisje nuk mund të trajtohen më ndryshe.

Të dyja janë politika burimi ose destinacioni me një shtrirje që mund ta thoni në një fjali. Asnjëra nuk është sipas aplikacionit, dhe një dizajn që e shet veten si sipas aplikacionit dështon herën e parë që programi ia delegon punën e vet një procesi të dytë.

Artikuj të ngjashëm