De ce o rută locală bate ruta implicită a VPN-ului
O subrețea conectată și o rută implicită largă prin tunel sunt tipuri diferite de rută. Citește alegerea kernelului și apoi corectează o suprapunere fără a îngrămădi rute de gazdă.
Imprimanta de pe birou continuă să funcționeze după ce tunelul se ridică, în timp ce un server din celălalt birou se rezolvă în tăcere către ceva local. Ambele comportamente vin din aceeași regulă: câștigă ruta cea mai specifică, iar un prefix conectat direct este cât se poate de specific. De obicei acesta este designul dorit, și tot așa un interval privat duplicat fură o adresă de la distanță. Citind mai întâi alegerea kernelului, o defecțiune misterioasă devine o comparație de prefixe.
Un prefix conectat este mai specific decât o rută implicită
Un tunel instalează de obicei o rută implicită sau un set de prefixe, în timp ce o interfață locală poartă un prefix conectat plus o rută către întreaga rețea LAN. Între ele decide potrivirea celui mai lung prefix, așa că o destinație din interiorul prefixului LAN nu ajunge niciodată în tunel. De aceea o imprimantă, pagina de administrare a unui router și un NAS local rămân accesibile cât timp VPN-ul este pornit. De aceea și o resursă de la distanță dintr-un interval suprapus ajunge la mașina greșită.
Spațiul de adrese private nu este unic, iar faptul că două locații aleg același prefix este destul de comun pentru a fi planificat. Când intervalele se suprapun, răspunsul local sosește repede și pare autoritar, așa că defecțiunea este ușor de citit greșit ca problemă de autentificare. Destinația a răspuns, doar că nu cea la care te gândeai.
Citește alegerea pe care ar face-o kernelul
Întreabă kernelul ce rută ar folosi pentru destinația exactă în loc să citești tabelul de sus. Apoi caută reguli de politică ce ar putea alege alt tabel. Două comenzi răspund la ambele întrebări în câteva secunde.
ip route get 10.20.30.41
ip route show table all | grep -E '10\.|default'
ip rule show
Prima ieșire numește interfața, următorul salt și adresa sursă pe care kernelul le-ar folosi, iar acesta este răspunsul care contează. O valoare dev care indică podul local înseamnă că pachetul nu intră niciodată în tunel, orice ar afirma panoul de stare al clientului VPN. Lista filtrată de tabele arată dacă alt tabel conține același prefix, iar lista de reguli arată ordinea în care aceste tabele sunt consultate. O regulă de politică poate trimite un prefix printr-un tabel anume chiar și când tabelul principal nu este de acord, deci acea ordine face parte din răspuns.
Accesul local este o permisiune separată
A avea o rută nu este același lucru cu a avea permisiunea de a o folosi. Majoritatea clienților pot bloca comunicația în rețeaua locală cât timp tunelul este ridicat, iar această setare este o decizie de politică, nu un artefact de rutare. Când un serviciu apropiat de încredere face parte din design, activează opțiunea de acces local acceptată în loc să inventezi rute. Când dispozitivul este pe un Wi-Fi public, lasă opțiunea stinsă.
Cele două straturi eșuează diferit. O cale locală blocată produce un timeout chiar dacă ruta există, în timp ce o rută suprapusă produce un răspuns de la gazda greșită. A le distinge costă o interogare și economisește o după-amiază de modificări de firewall, iar aranjamentul de redirecționare este descris în notele strongSwan despre redirecționare.
Corectează o suprapunere fără a îngrămădi rute de gazdă
O rută de gazdă pentru o adresă pare să corecteze o suprapunere și eșuează în momentul în care este nevoie de o a doua adresă din același interval. După douăzeci dintre ele, nimeni nu poate spune care prefix este autoritar. Soluțiile durabile sunt o schimbare de adresare, o topologie documentată care evită intervalul duplicat sau o traducere la un capăt. Fiecare costă timp de planificare o dată, în loc de întreținere pentru totdeauna.
Dacă o rută de gazdă temporară este într-adevăr necesară, notează alături motivul, proprietarul și data, ca să poată fi eliminată mai târziu. Apoi testează adresa și serviciul exacte plus o destinație publică, pentru că o schimbare de acces local care exclude în tăcere aplicații nelegate din tunel este mai rea decât defectul inițial. Ține prefixul local și prefixul de la distanță scrise separat; acest obicei împiedică un ping local funcțional să circule ca dovadă că biroul de la distanță este accesibil.