Telefonul nu poate deschide pagina: verificați adresa de ascultare
O pagină care răspunde pe localhost poate fi legată doar de loopback. Citiți adresa socketului, apoi regula de firewall și URL-ul pe care telefonul îl folosește cu adevărat.
Laptopul servește pagina pe localhost, telefonul se alătură aceleiași VPN, iar browserul de pe telefon raportează că site-ul nu poate fi accesat. Tunelul nu are încă nimic greșit, pentru că tunelul doar livrează pachete. Un server de dezvoltare legat de interfața loopback nu acceptă niciodată o conexiune adresată altcuiva, așa că primul loc de verificat este socketul de ascultare, nu VPN-ul.
Parcurgeți socketul, setarea de legare, regula de firewall și URL-ul, în această ordine.
Socketul răspunde la o întrebare mai îngustă
Un listener creat pe 127.0.0.1 acceptă trafic de la mașina însăși și refuză tot ce sosește pe altă adresă. Un listener pe adresa wildcard acceptă pe fiecare interfață locală, inclusiv pe cea a VPN-ului, ceea ce este mai larg decât au nevoie majoritatea configurațiilor de dezvoltare. Un listener legat de o singură adresă VPN anume este cea mai îngustă opțiune utilă și funcționează doar cât timp acea adresă există.
Din asta decurg două capcane de denumire. În browserul telefonului, localhost înseamnă telefonul, nu laptopul. Adresa wildcard este o valoare de legare, nu ceva de tastat într-un URL. Cine testează cu oricare dintre ele va raporta o defecțiune care nu a implicat niciodată rețeaua.
IPv6 adaugă un al treilea caz, pentru că un socket poate accepta IPv4 și IPv6 în funcție de opțiuni ușor de trecut cu vederea. Citiți familia de adrese din listă. O intrare wildcard pentru o familie nu o descrie pe cealaltă.
Citiți adresa de ascultare
Inspectați socketul înainte de a schimba configurația. Adresa locală, portul și procesul proprietar identifică împreună dacă serverul este accesibil deloc din VPN.
Get-NetTCPConnection -State Listen -LocalPort 8080 | Select-Object LocalAddress,LocalPort,OwningProcess Get-Process -Id (Get-NetTCPConnection -State Listen -LocalPort 8080).OwningProcess ipconfig | Select-String -Pattern 'IPv4' Get-NetFirewallRule -DisplayName '*8080*' | Format-Table DisplayName,Enabled,Profile,Direction,Action
O adresă locală 127.0.0.1 lămurește întrebarea: nicio modificare de firewall nu ajută, pentru că aplicația nu ascultă pe interfața VPN. Wildcard sau adresa VPN înseamnă că socketul este în regulă și că se aplică următoarea graniță.
Confirmați și procesul proprietar, deoarece un serviciu nelegat pe un port comun poate face tabelul să arate corect în timp ce serverul dorit nu a pornit niciodată. Potriviți calea executabilului, nu doar numele. Un proces vechi dintr-o rulare anterioară este un impostor frecvent.
Schimbați legarea prin aplicație
Folosiți opțiunea de adresă de ascultare documentată de framework și reporniți procesul. Dacă laptopul deține adresa privată 10.77.0.1, URL-ul telefonului devine http://10.77.0.1:8080/ și acea adresă trebuie rutată prin VPN; nimic altceva din configurație nu se schimbă.
Nu adăugați adrese arbitrare în Windows și nu modificați gateway-ul pentru a forța o legare. Acele modificări supraviețuiesc sesiunii de depanare și surprind următoarea persoană. Un server pornit înainte ca adresa VPN să existe poate și el să nu se poată lega, așa că ordinea pornirii contează pentru o interfață tranzitorie. Oferiți-i o nouă încercare sau porniți-l după tunel. O eroare de legare la boot arată exact ca o problemă de firewall a doua zi dimineață.
Pentru HTTPS, păstrați numele de host al serviciului și validarea certificatului intacte. Un avertisment de certificat pe o adresă brută este o problemă de denumire, nu un pas de ignorat prin clic, iar DNS-ul privat trebuie să fie de acord cu listenerul ales.
Deschideți o regulă, nu toată rețeaua
Odată ce socketul acceptă pe adresa VPN, firewall-ul decide dacă cererea ajunge. Limitați regula la această aplicație, acest protocol, acest port local și sursa remotă autorizată, și confirmați ce profil este activ pe adaptorul VPN.
Folosiți adresa sursă pe care Windows o vede efectiv, inclusiv orice traducere făcută de gateway, pentru că o regulă scrisă pentru adresa originală a clientului nu se va potrivi cu una tradusă.
O pagină care se încarcă și arată o eroare de aplicație este un progres: respingerea HTTP este o altă defecțiune decât lipsa conexiunii TCP, iar următoarea investigație aparține politicii de acces a aplicației, nu rețelei.
Încheiați cerând pagina de pe telefonul dorit și confirmând că un dispozitiv exclus încă nu o poate accesa. Un listener funcțional cu o regulă care admite tot nu este același rezultat.