Site-ul se încarcă de pe un laptop din aceeași rețea și expiră din orice alt loc, iar gazda rulează și un client VPN pentru propriul trafic de ieșire. Această combinație produce o defecțiune specifică: conexiunea de intrare sosește, răspunsul pleacă pe calea greșită, iar clientul din exterior nu vede niciodată un răspuns. Ambele jumătăți apar în aceeași captură de pachete, așa că ordinea evenimentelor este partea care merită citită.

O regulă de rutare bazată pe sursă remediază adesea simptomul. De obicei exceptă și mai mult trafic decât site-ul care a motivat-o, iar aceasta este partea care merită înțeleasă înainte de a salva regula.

Simptomul: răspunde local și nu din exterior

În interiorul rețelei răspunsul nu trebuie să traverseze tunelul, așa că pagina se încarcă și serviciul pare sănătos. Din exterior, cererea ajunge la gazdă și răspunsul este rutat în VPN, unde capătul îndepărtat nu are niciun motiv să îl accepte. Browserul vede un timeout în loc de un refuz, ceea ce este semnătura unei căi cu sens unic și nu a unui port închis.

Confirmă forma înainte de a schimba rutarea: ascultătorul este activ, cererea locală reușește, iar cererea externă nu produce niciun răspuns. Aceste trei observații împreună indică calea de întoarcere și nu configurația serverului web. O asimetrie atât de curată este mai utilă decât orice linie de jurnal, pentru că elimină ascultătorul înainte să citești măcar un mesaj de eroare.

Ține deschisă o cale de administrare independentă cât timp lucrezi. O regulă care îți rupe propria sesiune SSH transformă o corectare de zece minute într-o vizită fizică.

Ce potrivește de fapt un selector de sursă

În rutarea de politici din Linux, o regulă precum from 192.168.50.2 potrivește pachetele a căror sursă este acea adresă. Nu codează faptul că pachetul continuă o conversație care a intrat prin routerul de acasă și nu știe ce proces l-a creat. Adresa din acel exemplu este ilustrativă; înlocuiește-o cu adresa pe care gazda ta o folosește cu adevărat. Tratează linia ca pe o afirmație despre adrese și nimic mai mult.

Dacă tabelul selectat oferă o rută implicită obișnuită, fiecare pachet care poartă acea sursă poate lua aceeași excepție. Un alt serviciu legat de aceeași adresă o moștenește, iar o aplicație care se leagă deliberat de acea adresă o moștenește și ea. Referința regulilor de politică listează sursa, destinația, protocolul, portul, marca și prioritatea ca selectori separați, ceea ce reamintește că sursa singură este cel mai grosolan disponibil.

Prioritatea decide rezultatul. Căutările rulează în ordine și primul tabel care produce un rezultat poate încheia căutarea, așa că o regulă plasată prea devreme poate ascunde o rută mai specifică pe care un tabel ulterior ar fi oferit-o. Citește întreaga listă ordonată în loc de singura linie pe care ai adăugat-o. O regulă care nu potrivește niciodată nu costă nimic, în timp ce una care potrivește prea devreme schimbă în tăcere tot ce se află în spatele ei.

Verifică calea de întoarcere și traficul pe care nu l-ai intenționat

Citește regulile și tabelele, apoi întreabă nucleul ce rută ar lua o anumită pereche de sursă și destinație. Testarea de pe gazda însăși nu este același lucru cu testarea din exterior, așa că fă ambele.

ip rule show
ip route show table 100
ip route get 203.0.113.44 from 192.168.50.2
ss -ltnp '( sport = :443 )'

Apoi acceptă o conexiune externă nouă și, separat, o cerere care trebuie să iasă în continuare prin VPN. Dacă a doua iese acum direct, excepția este mai largă decât problema pe care o rezolvai, iar testul care contează este cel pe care nu intenționai să îl schimbi.

O verificare a adresei publice într-un browser raportează doar cererile pe care le-a făcut acel browser. Nu spune nimic despre răspunsurile serverului web, despre alegerea sursei de către o altă aplicație locală sau despre ce se întâmplă cu traficul de administrare după următoarea reconectare VPN.

Decide cât de îngustă poate fi excepția

Două proiecte sunt defendabile și trebuie alese deliberat. Dacă gazda există pentru a publica acest serviciu și traficul ei de ieșire nu este important, o adresă locală dedicată cu o politică doar pentru WAN este o soluție rezonabilă cu condiția să accepți întregul domeniu. Dacă doar anumite conexiuni de intrare trebuie să fie eligibile, selecția adresei este prea grosolană și în fața ei trebuie să stea un proiect conștient de conexiuni.

Notează contractul pe care te bazezi: maparea publică, adresa gazdei căreia îi este livrată cererea și calea pe care răspunsul ar trebui să o ia. Un serviciu de intrare publicat printr-un furnizor VPN este un contract diferit de unul publicat printr-un router de acasă, iar o excepție copiată dintr-un exemplu este adesea greșită pentru celălalt.

Păstrează politica în componenta care deține rutarea în loc să lipești o comandă într-un fișier de pornire. Ordinea regulilor, curățarea după o schimbare de rețea și reluarea după o repornire trebuie toate să supraviețuiască, iar un fișier de pornire netestat eșuează de obicei exact în momentul în care nu te uiți. Încheie cu rezultatul de acceptare pe care îl poți apăra: un site publicat restaurat și un flux nelegat neschimbat.

Articole similare