Prova l’encaminament VPN en espais de noms sense tocar les rutes de l’amfitrió
Tres rols simulats, tres contextos aïllats i un veth per enllaç. Compareu un laboratori d’espais de noms amb un laboratori de rutes de l’amfitrió abans de tocar l’amfitrió.
Dos laboratoris poden modelar la mateixa topologia VPN i fallar de maneres completament diferents: un viu en espais de noms de xarxa, l’altre en les rutes pròpies de l’amfitrió. La versió amb espais de noms manté cada interfície, ruta i sòcol en un context que podeu esborrar, mentre que la versió amb amfitrió arrenca més de pressa i deixa estat darrere. Aquest estat romanent és la raó per la qual el segon laboratori és difícil de repetir un mes després. Compareu primer la neteja, perquè decideix si podeu executar l’experiment dues vegades.
Dues maneres de construir el mateix laboratori, i quan guanya cadascuna
En un laboratori de rutes de l’amfitrió afegiu una interfície de túnel i rutes a la màquina on treballeu, de manera que l’experiment comparteix destí amb la vostra shell, el vostre gestor de paquets i qualsevol altra connexió. En un laboratori d’espais de noms, cada rol obté la seva pròpia pila d’interfícies, adreces, rutes i sòcols, i esborrar l’espai de noms ho elimina tot. Cap dels dos models no és més correcte, perquè responen preguntes diferents. Trieu espais de noms quan el tema sigui l’encaminament i el reenviament, i un laboratori d’amfitrió quan el tema sigui com s’integra un client d’escriptori.
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
Barrejar els dos és l’error habitual: un laboratori d’espais de noms provat contra un client només d’amfitrió no demostra res sobre cap de les dues disposicions. Decidiu quina pregunta feu abans de crear el primer enllaç.
Un context per rol, connectat a propòsit
Creeu un espai de noms per rol i moveu cada extrem de cada parell veth al context que el posseeix. Les quatre primeres ordres són prou per veure la forma:
ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns clientDoneu al laboratori rangs que no se superposin amb res de l’amfitrió, i anoteu abans de començar quin espai de noms posseeix quina adreça. Un laboratori que funcioni necessita dos camins separats: un d’exterior perquè el punt final VPN arribi al seu parell, i un camí de retorn per al recurs que es protegeix. Modela-los com dues decisions, perquè un laboratori que només construeix la meitat de sortida passa una prova d’estreta de mans i falla una prova d’aplicació.
El rol de reenviament és on els laboratoris es tornen interessants
Un rol ha de reenviar, cosa que significa habilitar el reenviament dins d’aquell espai de noms i afegir la regla que el disseny necessita. L’estat de reenviament és per espai de noms, així que la configuració de l’amfitrió és irrellevant per al laboratori i la configuració del laboratori no es filtra cap enfora, com descriu la documentació sobre espais de noms de xarxa. WireGuard documenta que una interfície i el seu sòcol exterior poden viure en espais de noms diferents, cosa que és un truc útil i una manera excel·lent de confondre-us. No assumiu que moure una interfície mou cada part de la connexió de la mateixa manera.
Comproveu el comptador de reenviament després d’un paquet de prova, perquè una regla que mai va coincidir i una regla que va descartar es veuen idèntiques a la taula de rutes. Només els comptadors les separen.
Registreu una línia base i després trenqueu una ruta
Comenceu registrant què existeix, amb el context escrit al costat de cada línia. Llegiu els espais de noms, després la ruta que prendria una destinació de prova dins d’un d’ells, després els comptadors de l’enllaç que la transporta:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gLa tercera ordre és la que la gent s’estalvia, i és on viu l’evidència: els comptadors de descarts i errors us diuen si un paquet va arribar al rol de reenviament. Captureu les mateixes tres vistes després d’un canvi, i que el diff sigui l’evidència en lloc de la vostra memòria. Després trenqueu exactament una cosa, sigui esborrant una ruta o afegint una regla de denegació al camí de reenviament, i confirmeu el símptoma que havíeu previst: una estreta de mans completada sense resposta, o un fracàs de resolució en lloc d’un temps d’espera esgotat. Un laboratori que només demostra èxit ensenya molt poc.
La neteja és el que fa repetible la propera execució
Mantingueu la neteja limitada als recursos que heu nomenat, perquè un reinici general del tallafocs o l’eliminació d’una ruta de l’amfitrió no és reproducibilitat, és un segon incident. Deseu la topologia, les ordres exactes i les observacions que esperàveu, perquè la propera execució reprodueixi la mateixa fallada en lloc d’endevinar quin context tenia l’estat anterior. Sense aquest registre, el laboratori és una història i no un procediment.
Utilitzeu credencials generades localment per al laboratori i manteniu els comptes de producció fora dels exemples compartits. Després esborreu cada espai de noms i confirmeu que la vista de l’amfitrió no ha canviat, que és tota la raó per triar aquest model. Un laboratori que no podeu eliminar netament és un canvi a l’amfitrió amb passos extra.