Váš vývojový server odpovedal pred minútou, a teraz, keď je tunel hore, požiadavka vyprší s názvom hostiteľa, ktorý ste nikdy nenapísali. Dva mechanizmy vysvetľujú takmer každý prípad a zvonku vyzerajú rovnako. Prípona vyhľadávania premení krátke meno na firemné, zatiaľ čo proxy posiela loopback prevádzku na hostiteľa, ktorý ju nedokáže dosiahnuť. Rozlíšenie týchto dvoch stojí jeden dotaz a ušetrí pravidlo firewallu, ktoré ste sa chystali napísať.

Keď sa localhost preloží do firemnej zóny

Skontrolujte, na čo sa meno preloží, kým je tunel hore, potom spustite ten istý dotaz s tunelom dole a porovnajte obe odpovede. Prezradí to adresa vo firemnom rozsahu tam, kde ste čakali 127.0.0.1. Záznam ako localhost.mycompany.corp preváži nad loopback položkou, hneď ako klient pridá túto príponu do zoznamu vyhľadávania, a požiadavka putuje na súkromného hostiteľa, kde na tom porte nič nepočúva. Čítajte zoznam vyhľadávania, namiesto aby ste hádali, pretože klient môže pridať viac než jednu doménu a poradie rozhoduje, ktorý kandidát sa skúša prvý:

getent hosts localhost
resolvectl domain
ss -ltnp | grep 8080

Nahraďte názov hostiteľa doslovnou adresou v aplikácii, v databázovom klientovi alebo v URL poznámkového bloku a potom požiadavku zopakujte. Ak zlyhanie zmizne, mali ste problém s pomenovaním a tunel bol len spúšťač. Ak pretrvá, ďalším podozrivým je počúvajúci proces alebo trasa a meno bola falošná stopa.

Nastavenia proxy, ktoré zachytia loopback

Systémová proxy uplatnená pri zapnutí tunela prijme požiadavku na 127.0.0.1 a odovzdá ju vzdialenej proxy, ktorá netuší, čo ste mysleli. Prázdny zoznam výnimiek premení miestnu požiadavku na vzdialenú a chybová správa to málokedy povie. Pridajte loopback adresy do zoznamu výnimiek pre celú reláciu, nie pre jediný príkaz, a potom potvrďte, že to nástroj rešpektuje, skôr než čokoľvek uzavriete o sieti.

Aplikačné rámce čítajú vlastné premenné prostredia a niekedy aj vlastný konfiguračný súbor, takže výnimka, ktorá funguje pre jeden nástroj, nič nedokazuje pre ďalší. Prehliadače pridávajú drobnosť: prehliadače založené na Chromiu obchádzajú proxy pre loopback implicitne a token výnimky môže toto správanie odobrať. Skontrolujte skutočné rozhodnutie proxy, namiesto aby ste predpokladali, že nastavenie operačného systému je celý príbeh. Dva príkazy to vyriešia pre čokoľvek spustené z shellu:

curl --noproxy '*' http://127.0.0.1:8080/health
NO_PROXY=localhost,127.0.0.1,::1 your-tool

Adresa bind rozhoduje, kto sa môže pripojiť

Server spustený na 127.0.0.1 prijíma pripojenia len z toho stroja, čo je zvyčajne správne predvolené nastavenie pre vývoj. Server na 0.0.0.0 odpovedá na každom rozhraní vrátane adaptéra VPN, čo je väčšia expozícia, než väčšina ľudí zamýšľa. Keď doslovná loopback adresa nefunguje, skontrolujte najprv bind.

Pozrite sa na počúvajúci socket a všimnite si adresu, na ktorú je naviazaný, nielen port. Ak sa má iné zariadenie alebo kontajner dostať k službe cez tunel, naviažte sa na konkrétne rozhranie, ktoré použije, a ten port vedome povoľte. Ak ho potrebuje len váš stroj, ponechajte úzky bind a opravte klienta, namiesto aby ste rozširovali server. Presmerovanie portu alebo vrstva tunelov môže oboje spojiť, ale každá pridáva komponent, ktorý bude neskôr potrebovať vlastné ladenie.

Kde ladiaci nástroj očakáva LAN

Ladiace nástroje nesú predpoklady, ktoré tunel ticho rozbije. Most pre ladenie telefónu stratí zariadenie, keď VPN zachytí podsieť zariadenia, takže opätovné pripojenie cez LAN adresu alebo kábel sa konfliktu vyhne. Centrum pre automatizáciu prehliadača vyprší, keď je centrum dostupné len cez proxy, alebo keď miestny firewall zahodí jeho riadiaci port. Vzdialený debugger môže vyžadovať eleváciu a loopback adresu tam, kde klient prepísal trasu.

Určte riadiaci port a dátový port oddelene, pretože jeden často prežije, kým druhý nie. Potom rozhodnite, či oprava patrí do konfigurácie nástroja, do trasy pre tú podsieť, alebo do pravidla rozdeleného tunela. Úprava súboru hosts na každom vývojárskom stroji škáluje najhoršie a zabudne sa prvá. Dajte prednosť nastaveniu, ktoré žije s profilom a môže ho skontrolovať ten, komu tunel patrí.

Zastavte sa pri prvej etape, ktorá zlyhá

Prejdite tromi etapami: preložte meno, otvorte socket na doslovnú adresu a potom nechajte nástroj vytvoriť vlastné pripojenie. Každá etapa odstráni jednu vrstvu, takže prvé zlyhanie pomenuje vrstvu na opravu a všetko po nej zostane netestované. Napíšte výsledok, skôr než čokoľvek zmeníte, pretože opravu použitú pred meraním nemožno odlíšiť od šťastia. Ak prvý pokus zlyhá a opakovanie funguje, tunel pravdepodobne nebol pripravený, keď nástroj štartoval.

Nahraďte pevné čakanie obmedzenou kontrolou pripravenosti, ktorá čaká na trasu, a ponechajte zlyhávajúcu etapu v logu, aby ďalší človek videl, kde sa to zastavilo. Nástroj, ktorý sa sám zotaví, nie je opravený, má šťastie, a šťastie sa minie na cudzom stroji. Tunel meňte naposledy a len pre etapu, ktorá skutočne zlyhala. Toto poradie je aj najkratšia cesta späť k funkčnému zostaveniu, pretože vás zastaví pred prestavbou komponentu, ktorý nikdy nebol zapojený.

Súvisiace články