Kāpēc jūsu split tunnel noteikums pārstāja atbilst pakalpojumam
Noteikums fiksē prefiksu, un pakalpojums ir pārcēlies. Izlasiet galamērķi, ko lietotne patiešām izmanto, un pēc tam labojiet mehānismu, nevis paplašiniet izņēmumu.
Split tunneling parasti neizdodas vienā no diviem veidiem. Vai nu trafiks, kam jābūt tuneļa iekšpusē, to apiet, vai arī trafiks, kam jāpaliek ārpusē, tiek ievilkts iekšā. Novecojuša noteikuma kļūda ir pirmais gadījums, un tā ir mulsinošākā, jo noteikums tiek izpildīts tieši tā, kā tas ir uzrakstīts. Tas, kas mainījās, ir galamērķis: pakalpojums tagad atbild uz adresi, kuru noteikums nekad nav nosaukts, un tunelī nekas nav nepareizi.
Ko noteikums fiksē un ko DNS atgriež
Split tunnel noteikums ir statisks apgalvojums par galamērķiem, parasti izteikts kā prefikss, maršruts vai adrešu saraksts. Tas tiek novērtēts pret paketes galamērķi sūtīšanas brīdī. Resursdatora nosaukums ir meklējums, kas atgriež adrešu kopu ar dzīves laiku un kešatmiņu, un atbilde var atšķirties atkarībā no resolver, vaicājuma veida un minūtes.
Šie divi objekti nekad savā starpā nesarunājas. Noteikums turpina atbilst piešķirtajam prefiksam, pakalpojums turpina mainīt izsniegto adresi, un plaisa starp tiem klusi pieaug. Tāpēc simptoms parādās pēc pakalpojumu sniedzēja migrācijas vai sertifikāta atjaunošanas, nevis pēc konfigurācijas maiņas. Neviens nelaboja tuneli, tāpēc neviens neskatās uz tuneli, un diagnostika nosliecas uz lietotni, nevis uz politiku.
Trīs veidi, kā atbilstība salūzt
Acīmredzamais gadījums ir pārcelts pakalpojums: operators tam piešķīra jaunu adresi, DNS sekoja, bet izņēmums ne. Otrais ir adrešu saime, kuru noteikums nekad nav aptvēris, kas notiek, kad nosaukums sāk atgriezt AAAA ierakstus, kurus izņēmums tikai IPv4 gadījumā ignorē. Trešais ir resolver atšķirība: iekšējais un publiskais skats var atgriezt dažādas adreses vienam un tam pašam nosaukumam, tāpēc adrese, ko izmanto jūsu lietotne, nav tā, ar kuru jūs testējāt.
Kešota savienojums ir ceturtais variants, un to ir viegli palaist garām. Lietotne joprojām var sazināties ar adresi, kuru tā atrisināja pirms stundas, kas nozīmē, ka jūsu svaigais meklējums un tās atvērtais socket nesakrīt par to, kur pakalpojums atrodas.
Izlasiet galamērķi, ko lietotne patiešām izmanto
Jautājiet operētājsistēmai un socket tabulai, nevis pārlūkprogrammas cilnei. Meklējums atbild, uz ko nosaukums tiek atrisināts tieši tagad, un socket tabula parāda adresi, ar kuru process ir savienots, un tā var būt vecāka. Palaidiet abus pirms teorijas veidošanas, jo atšķirība starp tiem aptuveni pusē gadījumu ir pati atbilde.
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
Pēc tam salīdziniet ar to, ko noteikums aptver. Ja pašreizējā adrese atrodas ārpus izņēmuma un pieprasījums joprojām neizdodas, jūs esat atradis cēloni, neaizskarot tuneļa konfigurāciju. Ja lietotne ir savienota ar adresi, kas atbilst noteikumam, un pieprasījums joprojām neizdodas, problēma ir aiz tuneļa, un šī ir nepareizā izmeklēšana.
Labojiet mehānismu, nevis simptomu
Ja produkts atbalsta uzturētu uz domēniem balstītu vadību, izmantojiet to un ievērojiet tā dokumentēto atsvaidzināšanas un darbības jomas uzvedību. Tas aizstāj statisku minējumu ar uzturētu atbildi, par cenu paļauties uz to, ka funkcija darbojas, kā dokumentēts.
Ja dizains balstās uz statisku sarakstu, piešķiriet tam īpašnieku un atjaunināšanas plānu. Plānā jānorāda, kā adrese tiek atklāta, kas apstiprina izmaiņas un cik ātri saraksts tiek gaidīts, lai sekotu pakalpojumu sniedzēja migrācijai. Saraksts bez īpašnieka ir nākotnes pārtraukums ar zināmu cēloni.
Nepaplašiniet izņēmumu uz lielu kaimiņu tīklu tikai tāpēc, lai noķertu katru adresi, ko redzējāt īsā testā. Tas nav labojums; tas ir pastāvīgas izmaiņas drošības robežā, un tas klusi ļaus nesaistītiem pakalpojumiem apiet tuneli, kamēr vien noteikums pastāv.
Pārbaudiet abas nodoma puses
Split tunnel dizainam ir divi nodomi, un labojumam vajadzētu saglabāt abus. Aizsargātajam pakalpojumam jāiet caur tuneli, un izslēgtajām kategorijām jāturpina to apiet. Pārbaudiet jaunu savienojumu ar salaboto galamērķi, pēc tam pārbaudiet kaut ko tādu, kam jāpaliek ārpusē.
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'
Pierakstiet jauno adresi, izvēlēto mehānismu un datumu. Tieši šis pieraksts neļauj nākamajam cilvēkam secināt, ka VPN nejauši ignorēja savu konfigurāciju.