Split tunneling врз основа на апликација и врз основа на одредиште не се две поставки за истата работа. Едното прашува кој процес испраќа пакет; другото прашува каде оди тој пакет. Правило изградено за првото прашање тивко откажува кога сообраќајот доаѓа од помошен процес, а правило изградено за второто откажува кога име на домаќин се разрешува во адреса што никогаш не сте ја навеле. Изберете го објектот што одговара на барањето, потоа докажете го со два тест-пакети: еден што мора да го користи тунелот и еден што не смее.

Двете правила дејствуваат на различни слоеви

Правилото за апликација се применува над мрежниот слој, против идентитетот што оперативниот систем му го доделува на испраќачот. На Android тоа е UID-от зад пакетот, а VPN услугата одлучува по UID дали сообраќајот влегува во тунелот. За одредиштето ништо не се прашува, па избраната апликација може да достигне сè, а ниту една друга апликација не може да ја достигне внатрешната мрежа.

Правилото за одредиште се применува на самиот пакет. Интерфејсот на тунелот поседува множество префикси, табелата за рутирање го испраќа соодветниот сообраќај во него, а процесот што испраќа е небитен. Затоа правилото за одредиште покрива услуга, печатач или серија задача што никој не се сетил да ја наведе, и затоа не може да се изрази како токму оваа програма на платформа чиј клиент никогаш не гледа во процесот.

Правилата за апликации одговараат на мобилни клиенти и управувани агенти

Android го изложува изборот директно: VpnService.Builder.addAllowedApplication() и addDisallowedApplication() примаат имиња на пакети и го применуваат решението по UID, како што е опишано во водичот за VPN развивачи на Android. iOS има еквивалент преку VPN правила по апликација врзани за идентификатори на пакети, обично доставени преку MDM профил, а не напишани рачно.

Десктоп клиентите се слабото место. Повеќето VPN клиенти за Windows и macOS рутираат по одредиште и воопшто не нудат избирач по процес, бидејќи драјверот на тунелот гледа пакети, не процеси. Ако вашиот план зависи од тунелирање на една апликација на преносен сметач, проверете ги вистинските можности на клиентот пред да дизајнирате околу тоа; можеби избирате помеѓу список на одредишта и втор сметач.

Последица што луѓето ја пропуштаат: на тие платформи не можете да имитирате правило за апликација со рути. Додавањето рута до домаќинот на серверот на апликацијата го тунелира сообраќајот на сите кон тој сервер, вклучително прелистувачот и програмот за ажурирање.

Правилата за одредиште одговараат на списоци на подмрежи и достапност на локации

WireGuard го прави моделот експлицитен. AllowedIPs е криптоклучно рутирање: внатрешен пакет чие одредиште паѓа во списокот на партнер се шифрира кон тој партнер, а сè друго излегува нешифрирано по нормалната патека. Нема процес што треба да се именува и нема двосмисленост за тоа што е вклучено.

OpenVPN доаѓа на истото место преку турканата табела за рутирање. route-nopull го спречува серверот да диктира рути, по што клиентската route 10.20.0.0 255.255.0.0 vpn_gateway покрива точно канцеларискиот префикс. IPv6 е посебна изјава во секој од овие клиенти, а неговото заборавање е најчестиот начин на истекување околу исправно изгледачки IPv4 расцеп.

Името на домаќин не е рута. Ако профилот нуди поле за домен, третирајте го како име што клиентот го разрешува еднаш, а не како траен опсег на адреси; мрежите за испорака на содржини и балансерите на оптоварување утре ќе дадат други адреси.

Каде се кршат двата модели: помошници, заеднички услуги, разрешувачи

Помошните процеси ги кршат правилата за апликации на начин што изгледа како дефект на серверот. Програмот за ажурирање на прелистувач, известувачот за падови, услугата за синхронизација што работи како SYSTEM и WebView вграден во друг пакет се одделни идентитети, па тунелирањето на прелистувачот може да го остави вистинското барање надвор од тунелот. Обратното е исто толку збунувачко: исклучена апликација што повикува заедничка библиотека внатре во тунелиран процес сè уште го носи сообраќајот низ тунелот.

Правилата за одредиште се кршат на заеднички услуги и на имиња. Споделените папки, печатачите, внатрешниот DNS и серверот за лиценци живеат на адреси, па тунелот за една апликација му дава пристап на прелистувачот додека мапираниот диск останува мртов. Таа разлика во покриеност не е грешка во ниту еден модел, но токму таа е причината зошто тунелот за една апликација толку често дава дека VPN-от работи, а споделената папка ја нема.

Разрешувачите ги сечат двете. Ако клиентот постави внатрешни DNS сервери, но оперативниот систем користи DNS преку HTTPS кон јавен разрешувач, одговорот доаѓа однадвор од тунелот и правилото за одредиште може никогаш да не се совпадне. Проверете кој разрешувач всушност одговорил пред да заклучите дека правилото е погрешно, и потврдете на страната на клиентот дали воопшто го инсталирал разрешувачот на тунелот. Расцеп што го остава DNS надвор од тунелот изгледа совршено во табелата за рутирање и сè уште паѓа на секое внатрешно име.

Постапка: избор, примена, проверка

Почнете од барањето, не од менито. Ако целта е само оваа апликација смее да го користи тунелот, потребни ви се правила за апликации и платформа што ги поддржува. Ако целта е овие мрежи се достапни преку тунелот, потребни ви се префикси. Ако одговорот е двете, имплементирајте ги како две одделни контроли и запишете која од нив го има кој дефект.

Применете ја најтесната форма што можете да ја изразите, потоа потврдете прашувајќи ја табелата за рутирање наместо иконата за статус на клиентот:

ip route get 10.20.30.40
ip -6 route get 2001:db8:10::40
wg show wg0 allowed-ips
Get-NetRoute -DestinationPrefix 10.20.0.0/16
Find-NetRoute -RemoteIPAddress 10.20.30.40

Првите два реда го именуваат интерфејсот што би го користело вистинско одредиште; wg show ја печати конфигурираната листа на префикси; на Windows Find-NetRoute одговара на истото прашање на кое стекот ќе одговори кога пакетот ќе биде испратен. Ако интерфејсот е тунелот, правилото се совпадна.

Потоа тестирајте втор пакет што треба да биде исклучен, од друга апликација, кон истото одредиште. Запишете во тикетот верзијата на клиентот, типот на правило, листата на префикси или пакети и двата забележани резултати. Токму тие два резултати му кажуваат на следниот инженер дали политиката е погрешно конфигурирана или сообраќајот никогаш не ѝ припаѓал.

Поврзани статии