Зашто ваше правило split tunnel више не одговара услузи
Правило фиксира префикс, а услуга се преселила. Прочитајте одредиште које апликација заиста користи, па поправите механизам уместо да проширујете изузетак.
Split tuneliranje обично отказује на један од два начина. Или саобраћај који би требало да буде унутар тунела га обилази, или саобраћај који би требало да остане напољу бива увучен унутра. Отказ због застарелог правила је први случај и више збуњује, јер се правило спроводи тачно онако како је написано. Променило се одредиште: услуга сада одговара на адреси коју правило никада није именовало, а у тунелу ништа није погрешно.
Шта правило фиксира и шта DNS враћа
Правило split tuneliranja је статична тврдња о одредиштима, обично изражена као префикс, рута или листа адреса. Оцењује се према одредишту пакета у тренутку слања. Назив хоста је упит који враћа скуп адреса са животним веком и кешом, а одговор се може разликовати по 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 tuneliranja има две намере, а поправка би требало да сачува обе. Заштићена услуга мора да прође кроз тунел, а искључене категорије морају да наставе да га заобилазе. Тестирајте свежу везу ка поправљеном одредишту, затим тестирајте нешто што би требало да остане напољу.
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 случајно игнорисао сопствену конфигурацију.