Split тунелирањето обично не успева на еден од два начина. Или сообраќајот што треба да биде внатре во тунелот го обиколува, или сообраќајот што треба да остане надвор се вовлекува внатре. Неуспехот од застарено правило е првиот вид, и тој збунува повеќе, бидејќи правилото се спроведува точно како што е напишано. Она што се смени е дестинацијата: услугата сега одговара на адреса што правилото никогаш не ја именуваше, а во тунелот ништо не е погрешно.

Што фиксира правилото и што враќа DNS

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

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

Три начини на кои се крши совпаѓањето

Очигледниот случај е преселена услуга: операторот ѝ даде нова адреса, DNS следеше, а исклучокот не. Вториот е фамилија адреси што правилото никогаш не ја покри, што се случува кога име почнува да враќа AAAA записи што исклучок само за IPv4 ги игнорира. Третиот е разлика во resolver: внатрешен и јавен поглед може да вратат различни адреси за истото име, па адресата што ја користи вашата апликација не е онаа со која тестиравте.

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

Прочитајте ја дестинацијата што апликацијата навистина ја користи

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

getent ahosts api.example.com
dig +short api.example.com A
dig +short api.example.com AAAA
ss -tnp | grep -F api
ip route get 203.0.113.40

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

Поправете го механизмот, не симптомот

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

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

Не го проширувајте исклучокот на голема соседна мрежа само за да ја фатите секоја адреса што сте ја виделе при краток тест. Тоа не е поправка; тоа е трајна промена на безбедносната граница и тивко ќе им дозволи на неповрзани услуги да го заобиколат тунелот додека постои правилото.

Проверете ги двете половини од намерата

Дизајнот на split tunnel има две намери, а поправката треба да ги сочува и двете. Заштитената услуга мора да помине низ тунелот, а исклучените категории мора да продолжат да го заобиколуваат. Тестирајте свежа врска со поправената дестинација, потоа тестирајте нешто што треба да остане надвор.

curl -sv --max-time 5 https://api.example.com/ -o /dev/null 2>&1 | grep -E 'Trying|Connected to'
curl -sS --max-time 5 https://public.example/ -o /dev/null -w '%{http_code}\n'

Запишете ја новата адреса, избраниот механизам и датумот. Токму таа забелешка го спречува следниот човек да заклучи дека VPN-от случајно ја игнорирал сопствената конфигурација.

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