En program bi moral uporabljati običajno povezavo, medtem ko vse ostalo ostane v tunelu, in odjemalec za to nima stikala. Tudi skritega menija ni mogoče najti. Pot se izbere iz polj znotraj paketa, paket pa nosi naslove in vrata, ne identitete procesa, ki ga je ustvaril, zato mora biti izločitev izražena v enem od teh polj. Sledite paketu enkrat in razpoložljive možnosti prenehajo biti skrivnostne.

Zakaj odjemalec tega ne more ponuditi

Usmerjanje po cilju primerja ciljni naslov s predponami in ohrani najdaljše ujemanje. V tistem trenutku je vsak paket videti enako, karkoli ga je ustvarilo. Usmerjanje po politiki vira razširi primerjavo na naslov vira, in to je kavelj, ki ga uporablja vsaka praktična rešitev: spremenite vir in druga tabela postane primerna.

Vrata ne pomagajo. Izločitev po vratih bi bilo treba ovrednotiti pred iskanjem cilja, vrata pa v tej odločitvi ne igrajo nobene vloge. Vse, kar se oglašuje kot izločitev na podlagi vrat, v resnici izloča po drugem polju in to opisuje ohlapno.

Pravo usmerjanje po aplikacijah obstaja tam, kjer je platforma dodala mehanizem zanj, na primer klice filtrov v Windows ali povezavo storitve VPN v Androidu. Namizni primerek OpenVPN ne prinese nič od tega in nobena konfiguracijska zastavica tega ne izumi.

Linux: označite proces in nato usmerite oznako

Najčistejši pristop veže odločitev na proces, ki ima vtičnico. Ujemanje owner deluje za lokalno ustvarjen promet v verigi OUTPUT, zato lahko oznaka, uporabljena tam, izbere ločeno tabelo:

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

Paketi uporabnika 1001 se nato posvetujejo s tabelo 200 in odidejo skozi običajna vrata, medtem ko glavna tabela še naprej pošilja vse ostalo v tunel. Ujemanje owner velja le za lokalno ustvarjene pakete, kar je natanko promet, ki je tukaj pomemben, in ne more razvrstiti paketov, poslanih naprej za drugega gostitelja. Preverite z orodji in ne z namenom: ss -tnp pokaže lokalni naslov in proces lastnika vzpostavljenih povezav, ip route get 1.1.1.1 mark 0x1 pa pokaže, katero tabelo izbere oznaka.

Omrežni imenski prostor je trdnejši odgovor za samostojen program, ker je vsaka vtičnica, ustvarjena v njem, zanj vezana po konstrukciji, zato pomožni procesi in podrejene povezave podedujejo vedenje, ne da bi bili sploh razvrščeni. Cena je vodovodarsko delo: par veth, naslov na vsakem koncu in privzeta pot znotraj imenskega prostora, ki kaže nazaj na gostitelja.

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: cilj še vedno odloča

Windows izbere odhodni vmesnik glede na cilj, zato mora program, ki želi drugačno pot, spremeniti nekaj, kar skladovnica vpraša pred to izbiro. ForceBindIP pokrije prvo polovico: zažene program z vtičnicami, že vezanimi na lokalni naslov, ki ga navedete. Samo to ne spremeni vmesnika, skozi katerega paket odide, ker pot še vedno izbere cilj. Vežite vir na prenosnem računalniku, katerega privzeta pot kaže v tunel, in paket bo vseeno vstopil v tunel.

Simptom ima berljivo obliko, ko ga enkrat poznate. Velja za naslov LAN, ki ga izbrani vmesnik doseže neposredno, in ne uspe za vse na internetu, katerega pot kaže na tunel. Tudi kaže, da deluje, dokler program ne preda dela pomočniku, ker pomočniku, ki odpre svojo vtičnico, o vezavi nikoli niso povedali.

Premaknite odločitev, ko je en proces napačna enota

Če je resnična zahteva naprava in ne program, jo postavite na lastno SSID ali VLAN in pustite usmerjevalniku, da odloči: ta vir gre po običajni poti, medtem ko drugi viri uporabljajo tunel. Namenski prehodni stroj je druga poštena zasnova: drži VPN in prejema le cilje, ki mu jih pošilja usmerjevalnik. Na VLAN politika pokriva vsak tok, ki ga naprava odpre, vključno s pomožnimi procesi, ki so zlomili pristop Windows. Zamenjava je obseg: dveh programov na tej napravi ni več mogoče obravnavati različno.

Oba sta politiki vira ali cilja z obsegom, ki ga je mogoče povedati v enem stavku. Nobena ni po aplikaciji, in zasnova, ki se prodaja kot po aplikaciji, propade prvič, ko program svoje delo prenese na drugi proces.

Sorodni članki