Cum verificați dacă un tunel VPN din Linux este într-adevăr activ
Steagurile interfeței, căutările de rută, tabelul 220 și marcajele de timp ale strângerii de mână răspund la întrebări diferite. Condiționați fiecare pas al scriptului de testul care îi dovedește premisa.
Cron repornește la fiecare zece minute un VPN perfect sănătos, iar aceeași sarcină lasă unul mort să ruleze o săptămână. Ambele eșecuri vin din tratarea lui «activ» ca un singur fapt, când el este cel puțin patru. Un dispozitiv poate fi activat administrativ, rutat corect, complet criptat și totuși să nu transporte nimic util. Separați mai întâi observațiile, și verificarea aproape se scrie singură.
Steagurile legăturii descriu dispozitivul, nu calea
Verificarea pe care toți o copiază caută o adresă hardware formată doar din zerouri. Trucul acesta separă o interfață reală de un substituent la unele drivere și nu dovedește nimic la restul, pentru că un dispozitiv tun nu are niciun MAC de raportat. ip -brief link show tun0 oferă în schimb steaguri: UP înseamnă că un administrator a activat dispozitivul, iar LOWER_UP înseamnă că driverul consideră legătura utilizabilă. Citite împreună, spun că dispozitivul există și nu este oprit administrativ. Niciunul dintre ele nu spune că pachetul are unde să meargă.
OpenVPN își creează dispozitivul tun înainte ca rutele să fie instalate, așa că steagurile pot părea perfecte în timp ce nimic nu este rutat. Tratați-le ca pe o condiție prealabilă, niciodată ca răspunsul.
Întrebați încotro ar merge un pachet
Căutarea de rută răspunde la întrebarea la care steagurile nu pot. ip route get 10.8.0.1 from 10.8.0.2 numește interfața, adresa sursă și tabelul pe care l-ar folosi nucleul, iar acesta este exact lucrul față de care trebuie verificat un tunel divizat. Fără adresa sursă întrebați altceva, iar cu rutare pe politici răspunsul poate diferi în funcție de sursă. Acesta este cel mai ieftin test cinstit, pentru că interoghează aceleași reguli pe care le va folosi traficul dvs.
Pentru WireGuard, adăugați strângerea de mână. wg show afișează un marcaj de timp al ultimei strângeri de mână pentru fiecare partener, iar un marcaj care a încetat să mai avanseze înseamnă că partenerul a dispărut, orice ar spune steagurile interfeței. O interfață configurată fără strângere de mână recentă este unul dintre cele mai frecvente pozitive false în monitorizarea făcută acasă.
Tabelul 220 spune povestea IPsec
strongSwan instalează rute pentru selectorii negociați în tabelul 220 când instalarea rutelor este activată. ip route list table 220 deci separă negociatul de rutat: un tabel gol lângă o conexiune încărcată înseamnă că SA-urile IKE și CHILD au urcat în timp ce niciun trafic nu este direcționat către ele. Verificați ip xfrm state alături, pentru că listează asocierile de securitate instalate și punctele lor finale.
O politică capcană este cazul la care trebuie să fiți atent. Așteaptă trafic interesant în loc să îl ruteze, așa că tabelul rămâne gol până când ceva declanșează tunelul.
Starea managerului și starea demonului sunt liste diferite
NetworkManager listează doar conexiunile pe care le deține. nmcli -t -f NAME,TYPE connection show --active nu returnează nimic pentru un tunel pornit direct de wg-quick sau de un demon OpenVPN.
Această distincție contează când un script trebuie să decidă pe care dintre cei doi manageri să îl întrebe. Alegeți-l pe cel care deține cu adevărat tunelul pe acest gazdă și ignorați tăcerea celuilalt. Dacă există amândoi, decideți care este autoritar și dezactivați-l pe al doilea, pentru că doi manageri care rescriu rute pe o singură interfață produc defecțiuni pe care nimeni nu le poate reproduce. O intrare lipsă este informație despre manager, nu despre tunel.
Condiționați pasul următor de testul de care are nevoie
Sondarea unui port UDP nu dovedește nimic despre pregătire, pentru că UDP nu are strângere de mână și nc -u reușește imediat ce pachetul pleacă. Sondați ce consumă de fapt pasul următor: o conexiune TCP la portul redirecționat, o cerere către un gazdă din interiorul tunelului, un nume care se rezolvă doar acolo. Limitați așteptarea cu un timp limită și un număr de încercări, și eșuați zgomotos când se epuizează.
Cârligele bat sondarea când clientul le oferă. --up și --down scripturile OpenVPN rulează după ce interfața își schimbă starea, ceea ce elimină complet cursa, dar rulează cu privilegiile pe care demonul le-a păstrat. Dacă OpenVPN a coborât la un cont fără privilegii prin user și group, cârligul rulează ca acel cont. Repornirea unui serviciu de sistem necesită atunci sudo pentru a permite exact acea comandă. Încredințați reîncercarea managerului de servicii în locul unei bucle cron: o politică de repornire limitată cu o limită de porniri scoate la iveală un tunel rupt, în timp ce o buclă nelimitată îl ascunde la nesfârșit.