Trecerea IPsec pe un router de acasă: ce face de fapt
Comutatorul lasă un protocol să treacă prin traducerea adreselor; nu înregistrează routerul ca client. Capturați schimbul, citiți asocierile, apoi decideți.
Comutatoarele de trecere ale routerului sunt concesii de redirecționare pentru un dispozitiv aflat în spatele lor, nu servicii VPN. Nu înregistrează routerul ca client, nu păstrează acreditări și nu împing fiecare aparat din casă printr-o ieșire de la distanță. Ceea ce fac este să modeleze modul în care un protocol traversează traducerea adreselor și filtrele. Odată ce acest lucru este clar, comutatorul devine ușor de testat și ușor de lăsat oprit.
Ce face de fapt routerul
Routerul stă între un client și un partener IPsec și redirecționează pachete pe care nu a fost niciodată proiectat să le înțeleagă. Producătorii implementează funcția în cel puțin trei moduri: un ajutor de protocol care urmărește sau rescrie starea, o excepție de filtru care oprește aruncarea ESP, sau un mod de compatibilitate destinat clienților mai vechi. Eticheta din interfața web spune rareori care dintre cele trei o aveți. Doar notele firmware-ului sau o captură de pachete vor spune asta.
Un ajutor poate înrăutăți și situația. Asistența scrisă pentru un flux mai vechi interferează uneori cu un client care gestionează deja corect traducerea. Când un client modern funcționează cu opțiunea oprită, lăsarea ei oprită este configurația mai bună.
Trecerea nu îi dă niciodată routerului cheile partenerilor. El vede în continuare adresele și porturile exterioare și aplică în continuare propria politică de redirecționare asupra lor.
NAT și NAT-T decid calea
IPsec nu a fost construit ca să supraviețuiască traducerii adreselor, așa că standardele au adăugat un înveliș. NAT traversal încapsulează ESP în interiorul UDP, permițând unui tabel NAT obișnuit să transporte fluxul, iar negocierea agreează acea comutare în timpul IKE (RFC 3948). IKE însuși folosește UDP 500, în timp ce calea încapsulată folosește de obicei UDP 4500.
De aceea o regulă de firewall care permite doar protocolul 50 nu este suficientă pe o cale tradusă. Blocarea 4500 strică cazul pentru care există învelișul, iar blocarea 500 oprește negocierea înainte de a se forma vreun tunel. Ambele direcții contează, pentru că un router cu stare permite de obicei răspunsul abia după ce a văzut cererea. A ajunge la un port nu este același lucru cu a termina autentificarea, nici cu a redirecționa trafic protejat.
Aranjamentele mai vechi diferă suficient încât un ghid scris pentru ele poate induce în eroare. Când un client oferă ambele moduri, testați-l pe cel documentat de partenerul dvs., nu pe cel cu mai multe rezultate de căutare.
Găsiți etapa care eșuează
Împărțiți problema în negociere, autentificare, protecția copilului și redirecționare internă, apoi strângeți dovezi pentru o singură etapă o dată. O repornire care schimbă temporar rezultatul dovedește doar că a fost implicată o stare oarecare.
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list
Captura arată dacă schimbul ajunge la partener și dacă răspunsurile se întorc, ceea ce separă o problemă de filtrare de una de acreditări. Lista de stări arată asocierile de securitate stabilite, așa că o listă goală după o încercare indică negocierea, nu rutarea. Lista de politici arată ce selectoare sunt instalate, și acolo este exclusă o destinație din afara subrețelei. Citiți ambele ieșiri xfrm înainte de a atinge routerul, pentru că descriu ce crede gazda și nu ce permite routerul.
Dacă pachetele pleacă și nimic nu se întoarce, mutați captura pe partea WAN a routerului. Compararea celor două capturi localizează eliminarea fără ghicit.
Opriți ce nu vă trebuie
Un singur laptop funcțional nu dovedește că routerul deservește mai mulți clienți simultan. Fiecare client își creează propria stare de traducere și propria negociere, iar unii ajutoare urmăresc un singur flux. Testați numărul de sesiuni simultane de care aveți nevoie cu adevărat, din rețelele pe care le folosiți cu adevărat. Dacă al doilea client eșuează în timp ce primul merge bine, aceasta este descoperirea, nu un tunel instabil.
Lăsați opțiunea activată doar când o captură arată că este necesară. Notați versiunea firmware-ului lângă rezultat, pentru că aceste comportamente se schimbă între versiuni. Scopul este un tunel de client pe care l-ați verificat, nu un comutator activat cu speranță.