Vaš razvojni poslužitelj odgovorio je prije minute, a sada kada je tunel podignut zahtjev istječe s imenom hosta koje nikada niste upisali. Dva mehanizma objašnjavaju gotovo svaki slučaj i izvana izgledaju identično. Nastavak pretrage pretvara kratko ime u korporativno, dok proxy šalje loopback promet prema hostu koji ga ne može dosegnuti. Razdvajanje to dvoje stoji jedan upit i čuva pravilo vatrozida koje ste upravo namjeravali napisati.

Kada se localhost razrješava u korporativnu zonu

Provjerite u što se ime razrješava dok je tunel podignut, zatim pokrenite isti upit s isključenim tunelom i usporedite dva odgovora. Znak je adresa u korporativnom rasponu tamo gdje ste očekivali 127.0.0.1. Zapis poput localhost.mycompany.corp pobjeđuje loopback unos čim klijent doda taj nastavak na popis pretrage, a zahtjev putuje do privatnog hosta na kojem ništa ne sluša na tom portu. Čitajte popis pretrage umjesto da nagađate, jer klijent može dodati više od jedne domene, a redoslijed odlučuje koji se kandidat isprobava prvi:

getent hosts localhost
resolvectl domain
ss -ltnp | grep 8080

Zamijenite ime hosta doslovnom adresom u aplikaciji, klijentu baze podataka ili URL-u bilježnice, pa ponovite zahtjev. Ako greška nestane, imali ste problem s imenovanjem, a tunel je bio samo okidač. Ako ostane, slušatelj ili ruta je sljedeći osumnjičeni, a ime je bilo samo lažni trag.

Proxy postavke koje hvataju loopback

Sustavni proxy koji se primijeni kad se tunel podigne prihvatit će zahtjev za 127.0.0.1 i proslijediti ga udaljenom proxyju koji nema pojma što ste mislili. Prazan popis izuzetaka pretvara lokalni zahtjev u udaljeni, a poruka o grešci to rijetko kaže. Dodajte loopback adrese na popis izuzetaka za cijelu sesiju, a ne za jednu naredbu, pa potvrdite da ih alat poštuje prije nego zaključite bilo što o mreži.

Okviri za aplikacije čitaju vlastite varijable okoline, a ponekad i vlastitu konfiguracijsku datoteku, pa izuzetak koji radi za jedan alat ne dokazuje ništa za sljedeći. Preglednici dodaju nijansu: preglednici na Chromiumu implicitno zaobilaze proxy za loopback, a token izuzetka može ukloniti to ponašanje. Provjerite stvarnu odluku proxyja umjesto da pretpostavite da je postavka operacijskog sustava cijela priča. Dvije naredbe rješavaju to za sve što se pokrene iz ljuske:

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

Adresa vezivanja odlučuje tko se može povezati

Poslužitelj pokrenut na 127.0.0.1 prihvaća veze samo s tog stroja, što je obično ispravan zadani izbor za razvoj. Poslužitelj na 0.0.0.0 odgovara na svakom sučelju, uključujući VPN adapter, što je veća izloženost nego što većina ljudi namjerava. Kada doslovna loopback adresa ne uspije, prvo provjerite vezivanje.

Pogledajte socket koji sluša i zabilježite adresu na koju je vezan, ne samo port. Ako drugo uređaj ili kontejner mora dosegnuti uslugu kroz tunel, vežite se na određeno sučelje koje će koristiti i namjerno dopustite taj port. Ako je potrebna samo vašem stroju, zadržite usko vezivanje i popravite klijenta umjesto da proširite poslužitelj. Prosljeđivanje porta ili sloj tunela može premostiti to dvoje, ali svaki dodaje komponentu kojoj će kasnije trebati vlastito otklanjanje pogrešaka.

Gdje alat za otklanjanje pogrešaka očekuje LAN

Alati za otklanjanje pogrešaka nose pretpostavke koje tunel tiho lomi. Most za otklanjanje pogrešaka na telefonu izgubi svoj uređaj kada VPN zahvati podmrežu uređaja, pa ponovno povezivanje preko LAN adrese ili kabela izbjegava sukob. Čvorište za automatizaciju preglednika istječe kada je čvorište dostupno samo kroz proxy ili kada lokalni vatrozid odbaci njegov kontrolni port. Udaljeni alat za otklanjanje može zahtijevati povišenje ovlasti i loopback adresu tamo gdje je klijent prepisao rutu.

Odredite kontrolni port i port za podatke odvojeno, jer jedan često preživi dok drugi ne. Zatim odlučite pripada li popravak konfiguraciji alata, ruti za tu podmrežu ili pravilu razdvojenog tunela. Uređivanje hosts datoteke na svakom razvojnom stroju najgore se skalira i prvo se zaboravi. Preferirajte postavku koja živi s profilom i koju može pregledati onaj tko posjeduje tunel.

Zaustavite se na prvoj fazi koja zakazuje

Prođite tri faze: razriješite ime, otvorite socket prema doslovnoj adresi, pa dopustite alatu da uspostavi vlastitu vezu. Svaka faza uklanja jedan sloj, pa prvi neuspjeh imenuje sloj koji treba popraviti, a sve nakon njega ostaje neprovjereno. Zapišite rezultat prije nego što bilo što promijenite, jer se popravak primijenjen prije mjerenja ne može razlikovati od sreće. Ako prvi pokušaj ne uspije, a ponovni radi, tunel vjerojatno nije bio spreman kada je alat startao.

Zamijenite fiksno čekanje ograničenom provjerom spremnosti koja čeka rutu i zadržite neuspjelu fazu u dnevniku kako bi sljedeća osoba vidjela gdje se zaustavilo. Alat koji se sam oporavi nije popravljen, on je sretan, a sreća presuši na tuđem stroju. Promijenite tunel posljednji i samo za fazu koja je stvarno zakazala. Taj je redoslijed ujedno i najkraći put natrag do radne gradnje, jer vas zaustavlja da ponovno gradite komponentu koja nikada nije bila uključena.

Povezani članci