Zahteve aplikacije spodletijo za poslovnim VPN, brskalnik pa dela
Ena aplikacija se zlomi, medtem ko brskalnik naloži stran. V tem vrstnem redu preglejte podedovani proxy, pravilo vrat, ponastavitve surovega TCP in omejitve velikosti tovora.
Odprete notranji portal v brskalniku in naloži se. Zaženete aplikacijo, ki kliče isti gostitelj, in spodleti, s sporočilom, ki ne poimenuje nobenega sloja. Tunel nosi brskalnik, zato tunel ni prvi osumljenec. Med vašo zahtevo in storitvijo stojijo štiri stvari in vsaka pusti drugačno sled. To je vrstni red, ki se ga držim, začenši pri zahtevi, ki jo aplikacija res pošlje, ne pri strani z nastavitvami odjemalca VPN.
Poglejte zahtevo, ki jo aplikacija res pošlje
Preden se dotaknete konfiguracije, pustite aplikaciji, da vam pove, kaj počne. Zajem ene zahteve z izrecno izklopljenim proxyjem in preprost preskus vrat vam dasta dve osnovni črti, s katerima se primerjajo naslednji koraki. Če zahteva uspe z izklopljenim proxyjem, ste tri od štirih plasti že opravili.
env | grep -i proxy # Linux/macOS
netsh winhttp show proxy # Windows, machine-wide
curl -sv --noproxy '*' https://svc.internal/
nc -vz svc.internal 8080Zaženite zadnja dva proti istemu cilju in glejte, kje se razideta. Delujoč brskalnik plus delujoč curl plus aplikacija, ki ne deluje, zožijo težavo na nekaj, kar aplikacija doda: proxy, prenos ali velikost sporočila.
Aplikacija je podedovala proxy, ki ga ni nihče nastavil
Večina skladov HTTP privzeto bere konfiguracijo proxyja iz operacijskega sistema. Poslovni odjemalec VPN ga pogosto namesti kot del svojega profila dostopa, zato zahteve odhajajo skozi proxy, ki ga razvijalec v kodi ni nikoli omenil. V .NET privzeti upravljalnik bere nastavitve IE/WinHTTP; Java bere -Dhttp.proxyHost; Node nima vgrajene podpore za proxy, dokler je ne doda knjižnica. Napaka je redko čista zavrnitev, zato ljudje začnejo gledati strežnik.
Preskus stane eno zahtevo: izrecno izklopite proxy na enem upravljalniku in primerjajte.
var handler = new HttpClientHandler { UseProxy = false };
using var client = new HttpClient(handler);Če to uspe, popravek sodi v konfiguracijo aplikacije, ne v tunel. Ponovite pregled za vsako izvajalno okolje v projektu, ker vsako bere drug vir in morda je pokvarjeno le eno.
Vrata, ki ste jih izbrali, niso vrata, ki jih pravilo dovoli
Usmerjen gostitelj ni dovoljena storitev. Poslovno pravilo običajno dovoli odhodna spletna vrata in zavrže ostala, zato so storitve na 8080 ali 1883 nedosegljive, medtem ko 443 deluje dobro. Brskalnik tu ničesar ne dokaže: po definiciji uporablja 443.
Objavite isto storitev za 443 in jo dosezite po imenu, preden zaprosite za izjemo. Če je izjema resnično potrebna, jo omejite na en razpon vira in en cilj ter jo obravnavajte kot del opredelitve storitve, ne kot nečiji osebni obhod.
Surovi TCP, ki ga pot ponastavi
Dolgotrajne povezave surovega TCP so plast, ki spodleti najbolj zmedeno. Pot, ki dovoli spletni promet, lahko še vedno ponastavi ali prepiše nenavaden odhodni TCP, in odjemalec sporoči napako vtičnice, ki se bere kot izpad. Storitve sporočil in dogodkov običajno priskrbijo prenos WebSocket prav za takšno omrežje, preklop pa je možnost odjemalca, ne sprememba tunela.
Zamenjajte prenos, znova preskusite in v istem zagonu ne spreminjajte ničesar drugega. Ta preskus z eno spremenljivko pove, ali je ponastavitev prišla s poti ali iz storitve.
Povezave, ki se zaprejo le pri velikih tovorih
Zahteva, ki uspe in nato umre približno sekundo pozneje, a le ko je telo veliko, kaže na omejitev velikosti nekje na sredini. Posrednik, ki šteje bajte sporočil, lahko povezavo spusti sredi prenosa, odjemalec pa sporoči nenormalno zaprtje namesto časovne omejitve.
Razdelite tovor na dele na ravni aplikacije. To imejte ločeno od dela z MTU: zmanjšanje velikosti paketa tunela pomaga, ko se običajne seje TCP ustavijo pri stalnem številu bajtov, in ne naredi ničesar za sporočilo, ki se posredniku zdi preveliko.
Kako ločiti štiri v enem prehodu
Tri opažanja razrešijo večino primerov. Ali se napaka zgodi takoj ali le pri velikem telesu? Ali ista zahteva uspe z izklopljenim proxyjem? Ali se izid spremeni, ko zamenjate vrata ali prenos? Zapišite odgovore pred naslednjo spremembo, ker poslovni VPN plus podedovani proxy plus privzeta nastavitev aplikacije dajo tri verjetne vzroke hkrati.
Držite eno spremenljivko na preskus in zapišite ciljnega gostitelja, ki ste ga uporabili. Brez te osnovne črte naslednja oseba ponovi vse štiri korake od začetka.