VPN для асобных праграм ці split tunnel? Што можа вырашыць маршрут на Mac
Маршрут выбірае пункты прызначэння, а не працэсы. Параўнайце split tunneling па пункце прызначэння з кіраваным VPN-профілем для праграм і з лакальным проксі як трэцім шляхам.
Дзве праграмы адкрываюць злучэнні да аднаго і таго ж офіснага сервера, і толькі адна з іх павінна выкарыстоўваць тунель. Маршрут не можа выказаць гэтае жаданне, бо табліцы маршрутызацыі заснаваныя на пунктах прызначэння і не маюць паняцця пра тое, які працэс адкрыў сокет. Тое, што людзі просяць, і тое, што ім трэба, часта розныя рэчы. Аддзяліце адно ад другога, перш чым змяняць любую канфігурацыю.
Селектар — гэта пункт прызначэння, ніколі працэс
Кожнае рашэнне пра маршрутызацыю пачынаецца з адраса прызначэння і заканчваецца інтэрфейсам. Ядро ніколі не пытае, якая праграма адправіла пакет, і ў macOS pf таксама не маршрутызуе па працэсе, таму правіла фіервола не можа адправіць адну праграму іншым шляхам. Таму адзін і той жа сервер, незалежна ад таго, ці звяртаецца да яго браўзер ці інструмент справаздачнасці, выкарыстоўвае адзін шлях для абодвух. Аддзяленне на ўзроўні праграм таму павінна паходзіць з чагосьці іншага, чым маршрут: VPN-плагіна, які валодае сокетам, проксі, які пераймае злучэнне ад імя праграмы, або асобнага сеткавага стэка. Нішто з гэтага не з'яўляецца змяненнем маршрутызацыі.
Дзве праграмы, якія размаўляюць з адным адрасам, — самы чысты тэст дызайну. Калі адказ паміж імі не можа адрознівацца, дызайн заснаваны на пункце прызначэння, як бы ён ні называўся.
Што звычайны split tunnel сапраўды дае
Split tunnel усталёўвае маршруты для прыватных прэфіксаў і пакідае ўсё астатняе на фізічным шляху. Звычайна гэта і мае на ўвазе запыт: дабрацца да офіснага сервера праз тунель, пакінуць публічнае агляданне прамым. Гэта проста, кожны звычайны кліент гэта падтрымлівае, і гэта забяспечваецца тым жа механізмам, што і любы іншы маршрут. Праверце канкрэтны пункт прызначэння з дапамогай route -n get, а не чытайце маршрут па змаўчанні, бо split tunnel часта пакідае маршрут па змаўчанні некранутым.
Ручное рэдагаванне маршруту па змаўчанні не з'яўляецца пераходам на што-небудзь. Яно змагаецца з уласным аднаўленнем маршрутаў кліента і ў кліентах, якія ўсталёўваюць палітыку абароны, можа пакінуць машыну ў стане, якога не чакаеце ні вы, ні кліент. Замест гэтага наладзьце split tunnel у падтрымліваемых наладах кліента.
Што патрабуе VPN для асобных праграм у macOS
Сапраўдны VPN для асобных праграм у macOS — гэта функцыя Network Extension, якой кіруе профіль канфігурацыі. Кіраваная нагрузка суадносіць выбраныя праграмы з канфігурацыяй VPN, і сістэма затым накіроўвае трафік гэтых праграм адпаведна. Гэта кіраванае разгортванне, што азначае MDM, падпісаны профіль і адміністратара, які валодае абодвума.
Ручная ўсталёўка кліента не стварае гэта суадносіны, а звычайная панэль налад не робіць праграмы паасобку выбіральнымі. Пастаўшчык можа прадставіць уласныя правілы праграм, і яны ідуць за яго дакументацыяй, а не за агульным правілам.
Тры шляхі да аддзялення па праграмах без MDM
Там, дзе кіраванне недаступнае, проксі — гэта практычны адказ. Наладзьце ўласную канфігурацыю проксі праграмы або выкарыстайце файл PAC, які выбірае па пункце прызначэння і пратаколе толькі для гэтай праграмы.
Лакальны проксі завяршае злучэнне і аднаўляе яго праз тунель, таму праграме ніколі не патрэбны маршрут. Другі варыянт — асобны сеткавы стэк: віртуальная машына або кантэйнер з уласным маршрутам па змаўчанні, да якога праграма дабіраецца праз лакальны адрас. Трэці — прыняць маршрутызацыю па пункце прызначэння і адмовіцца ад патрабавання, што сумленна, калі абедзве праграмы могуць выкарыстоўваць тунель. Усе тры можна праверыць, і ніводны з іх не робіць выгляд, што маршрут ведае працэсы.
Апішыце запыт так, каб адказ быў адназначным
Апішыце працоўны працэс, а не механізм: якой праграме якая паслуга патрэбна, ці трэба трымаць іншую праграму далей ад той жа паслугі і што павінна адбывацца, пакуль тунель не працуе. Гэтыя тры адказы выбіраюць дызайн. Яны таксама кажуць адміністратару, ці запыт з'яўляецца змяненнем маршрутызацыі або праектам разгортвання.
Яўна ўключыце выпадак выключанай праграмы. Кліент, які спыняе праграму, калі яе абаронены шлях недаступны, паводзіць сябе інакш, чым той, які дазваляе ёй вярнуцца на фізічны інтэрфейс, і карыстальнікі адразу заўважаюць гэтую розніцу. Назавіце чаканне ў тыкеце. Затым праверце на рэальнай машыне, бо той жа прадукт у macOS часта паводзіць сябе інакш, чым у Windows, а яго дакументацыя для macOS — адзіная надзейная крыніца пра тое, што робяць яго налады.