Zakaj vaše pravilo split tunnel ni več ustrezalo storitvi
Pravilo določi predpono, storitev pa se je preselila. Preberite cilj, ki ga aplikacija resnično uporablja, in nato popravite mehanizem, namesto da bi razširili izjemo.
Split tunneling običajno odpove na enega od dveh načinov. Ali promet, ki bi moral biti znotraj predora, se ga izogne, ali promet, ki bi moral ostati zunaj, se potegne noter. Napaka zaradi zastarelega pravila je prva vrsta in je bolj zavajajoča, ker se pravilo izvaja točno tako, kot je zapisano. Spremenil se je cilj: storitev zdaj odgovarja na naslovu, ki ga pravilo nikoli ni imenovalo, in v predoru ni nič narobe.
Kaj pravilo določi in kaj DNS vrne
Pravilo split tunnel je statična trditev o ciljih, običajno izražena kot predpona, pot ali seznam naslovov. Ocenjuje se glede na cilj paketa ob pošiljanju. Ime gostitelja je poizvedba, ki vrne nabor naslovov z življenjsko dobo in predpomnilnikom, odgovor pa se lahko razlikuje glede na resolver, vrsto poizvedbe in minuto.
Ta dva objekta se nikoli ne pogajata drug z drugim. Pravilo se še naprej ujema s predpono, ki jo je dobilo, storitev še naprej spreminja naslov, ki ga izdaja, in vrzel med njima tiho raste. Zato se simptom pojavi po selitvi ponudnika ali obnovitvi potrdila in ne po spremembi konfiguracije. Nihče ni urejal predora, zato nihče ne gleda predora, in diagnostika drsi k aplikaciji namesto k politiki.
Trije načini, kako se ujemanje zlomi
Očiten primer je preseljena storitev: operater ji je dal nov naslov, DNS je sledil, izjema pa ne. Drugi je družina naslovov, ki je pravilo nikoli ni pokrilo, kar se zgodi, ko ime začne vračati zapise AAAA, ki jih izjema le za IPv4 ignorira. Tretji je razlika v resolverju: notranji in javni pogled lahko za isto ime vrneta različne naslove, zato naslov, ki ga uporablja vaša aplikacija, ni tisti, s katerim ste testirali.
Predpomnjena povezava je četrta različica in jo je lahko spregledati. Aplikacija morda še vedno govori z naslovom, ki ga je razrešila pred uro, kar pomeni, da se vaša sveža poizvedba in njena odprta socket ne strinjata o tem, kje storitev živi.
Preberite cilj, ki ga aplikacija resnično uporablja
Vprašajte operacijski sistem in tabelo socketov, ne zavihtka brskalnika. Poizvedba odgovori, v kaj se ime zdaj razreši, tabela socketov pa pokaže naslov, s katerim je proces povezan, in ta je lahko starejši. Zaženite oboje, preden oblikujete teorijo, ker je razlika med njima v približno polovici primerov sama odgovor.
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
Nato primerjajte s tem, kar pokriva pravilo. Če trenutni naslov pade zunaj izjeme in zahteva še vedno ne uspe, ste našli vzrok, ne da bi se dotaknili konfiguracije predora. Če je aplikacija povezana z naslovom, ki ustreza pravilu, in zahteva še vedno ne uspe, je težava nekje za predorom in to je napačna preiskava.
Popravite mehanizem, ne simptoma
Če izdelek podpira vzdrževano usmerjanje na podlagi domen, ga uporabite in sledite njegovemu dokumentiranemu vedenju pri osvežitvi in obsegu. To nadomesti statično ugibanje z vzdrževanim odgovorom, za ceno odvisnosti od tega, da funkcija deluje, kot je dokumentirano.
Če se zasnova opira na statični seznam, mu dajte lastnika in načrt posodabljanja. Načrt mora povedati, kako se naslov odkrije, kdo odobri spremembo in kako hitro naj bi seznam sledil selitvi ponudnika. Seznam brez lastnika je prihodnja prekinitev z znanim vzrokom.
Izjeme ne širite na veliko sosednjo omrežje samo zato, da bi ujeli vsak naslov, ki ste ga videli med kratkim testom. To ni popravilo; to je trajna sprememba varnostne meje in tiho bo pustilo nepovezanim storitvam, da obidejo predor, dokler pravilo obstaja.
Preverite obe polovici namena
Zasnova split tunnel ima dva namena in popravilo bi morala ohraniti oba. Zaščitena storitev mora iti skozi predor, izključene kategorije pa morajo še naprej hoditi okoli njega. Preizkusite svežo povezavo do popravljenega cilja, nato preizkusite nekaj, kar bi moralo ostati zunaj.
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'
Zapišite novi naslov, izbrani mehanizem in datum. Prav ta zapis prepreči naslednji osebi, da bi sklepala, da je VPN naključno ignoriral lastno konfiguracijo.