Бир программа кадимки байланышты колдонушу керек, ал эми калганынын баары туннелде калат, жана кардарда буга которгуч жок. Жашыруун меню да табылбайт. Маршрут пакеттин ичиндеги талаалардан тандалат, ал эми пакет даректерди жана портторду алып жүрөт, аны жараткан процесстин инсандыгын эмес, ошондуктан чыгаруу ошол талаалардын биринде туюндурулушу керек. Пакетти бир жолу байкап көрүңүз, ошондо жеткиликтүү варианттар сырдуу болуудан калат.

Эмне үчүн кардар муну сунуштай албайт

Багыттоо маршруттоосу багыт дарегин префикстер менен салыштырат жана эң узун дал келүүнү сактайт. Ошол учурда ар бир пакет бирдей көрүнөт, аны эмне жаратса да. Булак саясатынын маршруттоосу салыштырууну булак дарегине чейин кеңейтет, жана бул ар бир практикалык чечим колдонгон илгич: булакты өзгөртүңүз, ошондо башка таблица ылайыктуу болот.

Порттор жардам бербейт. Порт боюнча чыгарууну багыт издөөдөн мурун баалоо керек эле, ал эми порттун бул чечимде эч кандай ролу жок. Портко негизделген чыгаруу деп жарнамалангандын баары чындыгында башка талаа боюнча чыгарат жана муну бош сүрөттөйт.

Чыныгы колдонмо боюнча маршруттоо платформа ага механизм кошкон жерде бар, мисалы Windows'тогу фильтр чакыруулары же Android'деги VPN кызматын байлоо. Иш тактасындагы OpenVPN үлгүсү булардын эч бирин алып келбейт, жана эч бир конфигурация желеги аны ойлоп таппайт.

Linux: процессти белгилеңиз, анан белгини маршруттаңыз

Эң таза ыкма чечимди сокетке ээлик кылган процесске байланыштырат. owner дал келүүсү OUTPUT тизмегинде жергиликтүү жаралган трафик үчүн иштейт, ошондуктан ал жерде колдонулган белги өзүнчө таблицаны тандай алат:

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

1001 колдонуучусунун пакеттери андан кийин 200 таблицасына кайрылат жана кадимки шлюз аркылуу чыгат, ал эми негизги таблица калганынын баарын дагы эле туннелге жөнөтөт. owner дал келүүсү жергиликтүү жаралган пакеттерге гана тиешелүү, бул дал ушул жерде маанилүү трафик, жана ал башка хостко өткөрүлүп берилген пакеттерди классификациялай албайт. Куралдар менен текшериңиз, ниет менен эмес: ss -tnp түзүлгөн байланыштардын жергиликтүү дарегин жана ээлик кылган процессин көрсөтөт, ал эми ip route get 1.1.1.1 mark 0x1 белги кайсы таблицаны тандаарын көрсөтөт.

Тармактын ат мейкиндиги өз алдынча программа үчүн бекемирээк жооп, анткени анын ичинде жаралган ар бир сокет курулушу боюнча ага байланган, ошондуктан жардамчы процесстер жана туунду байланыштар жүрүм-турумду такыр классификацияланбастан мураска алышат. Баасы — сантехника: veth жубу, ар бир учунда дарек, жана ат мейкиндигинин ичинде хостко карай багытталган демейки маршрут.

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: багыт дагы эле чечет

Windows чыгуучу интерфейсти багыттан тандайт, ошондуктан башка жолду каалаган программа стек ошол тандоодон мурун кайрылган нерсени өзгөртүшү керек. ForceBindIP биринчи жарымын камтыйт: программаны сокеттери сиз атаган жергиликтүү дарекке мурунтан байланган абалда иштетет. Жалгыз бул пакеттин кайсы интерфейстен чыгарын өзгөртпөйт, анткени маршрутты дагы эле багыт тандайт. Демейки маршруту туннелге караган ноутбукта булакты байлаңыз, пакет баары бир туннелге кирет.

Симптомдун окула турган формасы бар, аны бир жолу билип алсаңыз. Ал тандалган интерфейс түз жеткен LAN дареги үчүн орун алат жана интернеттеги маршруту туннелге караган нерселердин баары үчүн ишке ашпайт. Программа ишти жардамчыга өткөрмөйүнчө, ал иштеп жаткандай да көрүнөт, анткени өз сокетин ачкан жардамчыга байлоо тууралуу эч качан айтылган эмес.

Бир процесс туура эмес бирдик болгондо чечимди жылдырыңыз

Эгер чыныгы талап программа эмес, түзмөк болсо, аны өз SSID же VLAN'ына коюп, чечимди маршрутизаторго калтырыңыз: ошол булак кадимки жол менен жүрөт, ал эми башка булактар туннелди колдонот. Атайын шлюз машинасы — башка чынчыл долбоор: ал VPN'ди кармайт жана маршрутизатор жөнөткөн багыттарды гана кабыл алат. VLAN'да саясат түзмөк ачкан ар бир агымды камтыйт, анын ичинде Windows ыкмасын бузган жардамчы процесстерди да. Алмашуу — бул көлөм: ошол түзмөктөгү эки программаны эми башкача кароого болбойт.

Экөө тең бир сүйлөм менен айтууга боло турган көлөмү бар булак же багыт саясаттары. Эч бири колдонмо боюнча эмес, жана өзүн колдонмо боюнча деп жарнамалаган долбоор программа өз ишин экинчи процесске өткөрүп берген алгачкы жолу ишке ашпайт.

Тектеш макалалар