VPN conectat, dar un serviciu eșuează: izolează etapa
Un handshake încheiat nu spune nimic despre nume, rută, dimensiunea pachetului sau ascultător. Parcurge patru etape și lasă primul eșec să numească defectul.
«Conectat» este cel mai puțin informativ fapt dintr-un tichet VPN. Notează că două părți au încheiat un handshake și nimic despre numele interogat, interfața prin care a plecat pachetul, dimensiunea lui sau dacă capătul îndepărtat l-a acceptat. De aceea un serviciu poate eșua în timp ce toate celelalte aplicații de pe același laptop funcționează. Parcurge etapele în ordine și prima care eșuează va numi defectul.
Începe cu numele, nu cu tunelul
Rezolvă înainte de a ruta, pentru că un răspuns prost face fiecare test ulterior fără sens. Întreabă numele la resolverul sistemului și compară răspunsul cu adresa pe care aplicația a folosit-o efectiv. Un nume privat care se întoarce ca adresă publică înseamnă că interogarea a mers la un resolver care nu are ce răspunde. Un nume care nu se rezolvă este aceeași categorie, doar mai tare.
resolvectl query host.internal
getent hosts host.internal
Browserele cu propria setare de DNS sigur eșuează aici în timp ce restul sistemului funcționează. De aceea o reclamație doar despre browser aparține mai întâi acestei etape, înainte ca cineva să atingă o rută. Compară ambele comenzi, nu una, pentru că getent urmează calea NSS, iar interogarea resolverului nu.
Întreabă nucleul ce cale a ales
Tabela de rutare este o ordine de preferință, iar calea aleasă de nucleu nu este întotdeauna cea din diagramă. Întreabă-l direct despre destinația în cauză. Răspunsul numește interfața, următorul salt și adresa sursă care va fi folosită. Un pachet poate ieși prin tunel purtând o adresă sursă pe care capătul îndepărtat o refuză, iar o intrare mai specifică din tabela fizică îl poate trimite prin interfața Wi-Fi.
ip route get 10.20.30.40
ip -brief address show
Citește câmpurile dev, via și src în această ordine, pentru că fiecare elimină o suspiciune diferită. Această etapă deține și starea instalată de client, fiindcă regulile de firewall și rutele pot rămâne după o ieșire anormală. De aceea «fără internet fără tunel» și «fără internet dacă clientul nu rulează» sunt o singură familie de defecte, nu două.
Testează dimensiunea pachetului
Un răspuns mic care se întoarce în timp ce un transfer mare se blochează indică mai întâi MTU-ul căii. O singură sondă cu bitul do-not-fragment setat, trimisă din interiorul tunelului, separă această etapă de celelalte. Crește încărcătura până când sonda eșuează și ai numărul care contează.
ping -M do -s 1400 10.20.30.40
Sonde mici care trec în timp ce o listare de director sau un upload se blochează este semnătura acestei etape. Reclamația sună ca niște credențiale sau o regulă de firewall și nu este nici una, nici alta.
Numărul este o proprietate a căii, nu a clientului, așa că o valoare care funcționează pe o conexiune de birou poate eșua pe un link mobil. Păstrează comanda sondei împreună cu tichetul, pentru că următoarea persoană are nevoie de aceeași măsurătoare. Dacă trece o încărcătură mai mică, soluția este un clamp sau un MTU de tunel mai mic, nu un cifru nou.
Testează capătul îndepărtat
Testează destinația după adresa ei, apoi uită-te ce ascultă acolo. O conexiune refuzată și o conexiune care nu răspunde niciodată sunt constatări diferite. Prima spune că ceva rulează și nu servește acel port, iar a doua spune că nimic nu s-a întors. Niciuna nu este o problemă de client implicit.
curl -sv http://10.20.30.41:8080/health
nc -vz -w 3 10.20.30.41 3389
ss -lnt 'sport = :8080'
Nimic accesibil printr-un tunel nu poate fi un serviciu care ascultă doar pe 127.0.0.1, pentru că ascultătorul nu vede niciodată pachetul. Când firewall-ul gazdei îndepărtate permite subrețeaua biroului și refuză pool-ul tunelului, rezultatul arată ca un defect al clientului și nu este. Desktop la distanță sau partajarea fișierelor care se strică în timp ce traficul web supraviețuiește ajung de obicei aici, oricum ar formula utilizatorul.
Asociază reclamația cu o singură etapă
Majoritatea rapoartelor se reduc la una din cinci forme, iar fiecare formă numește o etapă. Un singur site care funcționează doar prin tunel este un răspuns de nume sau o politică legată de adresa sursă. Actualizările eșuează fără tunel în timp ce navigarea funcționează — este o problemă de nume sau de rută pentru acel client.
Faptul că totul se oprește la pornirea unui client de furnizor este stare instalată, adică o chestiune de rută și firewall. Un serviciu inaccesibil în timp ce restul este în regulă este capătul îndepărtat. Transferurile care se blochează după câteva secunde sunt dimensiunea pachetului. Potrivește forma înainte de a rula comenzi, pentru că ea decide ce dovezi se colectează mai întâi.
Notează etapa care a produs primul eșec împreună cu ieșirea comenzii. Un tichet care spune că adresa sursă era greșită, cu linia de rută atașată, merită acțiune, în timp ce unul care raportează VPN-ul ca stricat nu.