Rakenduse päringud ei läbi ettevõtte VPN-i taga, aga brauser töötab
Üks rakendus katkeb, samal ajal kui brauser lehe laeb. Käige selles järjekorras läbi päritud puhverserver, pordipoliitika, toores TCP lähtestamised ja kasuliku koormuse suuruse piirid.
Avate sisemise portaali brauseris ja see laeb. Käivitate rakenduse, mis kutsub sama hosti, ja see ebaõnnestub, teatega, mis ei nimeta ühtegi kihti. Tunnel kannab brauserit, seega tunnel ei ole esimene kahtlusalune. Teie päringu ja teenuse vahel on neli asja ja igaüks jätab erineva jälje. See on järjekord, mida ma järgin, alustades päringust, mille rakendus tegelikult saadab, mitte VPN-kliendi seadete lehelt.
Vaadake päringut, mille rakendus tegelikult saadab
Enne kui konfiguratsiooni puutute, laske rakendusel öelda, mida see teeb. Ühe päringu salvestus selgelt väljalülitatud puhverserveriga ja lihtne porditest annavad teile kaks baasjoont, millega järgmisi samme võrrelda. Kui päring õnnestub puhverserveri väljalülitamisel, on kolm neljast kihist juba läbi.
env | grep -i proxy # Linux/macOS
netsh winhttp show proxy # Windows, machine-wide
curl -sv --noproxy '*' https://svc.internal/
nc -vz svc.internal 8080Käivitage kaks viimast sama sihtmärgi vastu ja vaadake, kus need lahknevad. Töötav brauser pluss töötav curl pluss rakendus, mis ei tööta, kitsendavad probleemi millegi juurde, mida rakendus lisab: puhverserver, transport või sõnumi suurus.
Rakendus päris puhverserveri, mida keegi ei seadistanud
Enamik HTTP-kogumeid loeb puhverserveri seadeid vaikimisi operatsioonisüsteemist. Ettevõtte VPN-klient paigaldab sageli ühe oma juurdepääsuprofiili osana, nii et päringud väljuvad puhverserveri kaudu, mida arendaja koodis kunagi ei maininud. .NET-is võtab vaikimisi töötleja seaded IE/WinHTTP-ist; Java loeb -Dhttp.proxyHost; Node-il pole sisseehitatud puhverserveri tuge, kuni teek selle lisab. Tõrge on harva puhas keeldumine, seepärast hakkavad inimesed serverit vaatama.
Test maksab ühe päringu: lülitage puhverserver ühes töötlejas selgelt välja ja võrrelge.
var handler = new HttpClientHandler { UseProxy = false };
using var client = new HttpClient(handler);Kui see õnnestub, kuulub parandus rakenduse konfiguratsiooni, mitte tunnelisse. Korrake auditit iga projekti käituskeskkonna kohta, sest igaüks loeb erinevat allikat ja katki võib olla ainult üks.
Valitud port ei ole port, mille poliitika lubab
Marsruuditud host ei ole lubatud teenus. Ettevõtte poliitika lubab tavaliselt väljuvaid veebiporte ja viskab ülejäänud kõrvale, nii et teenus pordil 8080 või 1883 on kättesaamatu, samal ajal kui 443 töötab hästi. Brauser ei tõesta siin midagi: see kasutab 443 definitsiooni järgi.
Avaldage sama teenus 443 taga ja jõudke selleni nime järgi enne, kui erandit palute. Kui erandit tõesti vaja on, piirake see ühe allikavahemiku ja ühe sihtmärgiga ning käsitlege seda teenuse definitsiooni osana, mitte kellegi isikliku möödasõiduna.
Toores TCP, mille tee lähtestab
Pikaajalised toored TCP-ühendused on kiht, mis ebaõnnestub kõige segasemalt. Tee, mis lubab veebiliiklust, võib ikkagi lähtestada või ümber kirjutada ebatavalist väljuvat TCP-d, ja klient teatab soketi veast, mida loetakse katkestusena. Sõnumi- ja sündmusteenused pakuvad tavaliselt WebSocket-transporti just sellise võrgu jaoks ja ümberlülitamine on kliendi valik, mitte tunneli muudatus.
Vahetage transporti, testige uuesti ja ärge muutke samas käivituses midagi muud. See ühe muutuja test ütleb, kas lähtestamine tuli teelt või teenusest.
Ühendused, mis sulguvad ainult suurte koormuste korral
Päring, mis õnnestub ja sureb umbes sekund hiljem, aga ainult siis, kui keha on suur, viitab kuskil keskel olevale suuruse piirile. Vahendaja, kes loeb sõnumi baite, võib ühenduse ülekande keskel maha visata ja klient teatab ajapiiri asemel ebanormaalsest sulgemisest.
Tükeldage koormus rakenduse kihis. Hoidke see MTU-tööst eraldi: tunneli paketi suuruse vähendamine aitab siis, kui tavalised TCP-sessioonid takerduvad püsiva baidiarvu juures, ja see ei tee midagi sõnumi jaoks, mida vahendaja peab liiga suureks.
Kuidas nelja ühe käiguga eristada
Kolm tähelepanekut lahendavad enamiku juhtudest. Kas tõrge juhtub kohe või ainult suure keha korral? Kas sama päring õnnestub väljalülitatud puhverserveriga? Kas tulemus muutub, kui vahetate porti või transporti? Kirjutage vastused enne järgmist muudatust üles, sest ettevõtte VPN pluss päritud puhverserver pluss rakenduse vaikeväärtus annavad teile korraga kolm tõenäolist põhjust.
Hoidke üks muutuja testi kohta ja kirjutage üles kasutatud sihtkoht. Ilma selle baasjoonega kordab järgmine inimene kõiki nelja sammu algusest.