Skip to content
Systeem

Test een geïsoleerd netwerk met ip netns zonder de interface van de server te veranderen

Avatar illustré de Julien Macé 3 min read
Tux entre deux réseaux Linux isolés reliés par un câble virtuel
Deux espaces réseau Linux isolés reliés par une paire veth de test.

Creëer twee tijdelijke Linux-hosts die met een virtuele kabel zijn verbonden, test hun verkeer en verwijder ze vervolgens zonder de netwerkinterface van uw server te wijzigen.

U moet een route, een adres of een service testen, maar de interface die uw SSH-sessie ondersteunt is niet de plek om te improviseren. Met ip netns kan Linux gescheiden netwerkruimten op dezelfde machine creëren. Elke ruimte heeft zijn eigen interfaces, adressen en routingtabel.

De volgende methode maakt gebruik van een laboratorium-VM met een console. U gaat twee ruimtes met een veth paar verbinden, de ping tussen hen controleren en vervolgens de montage verwijderen. Dit verplaatst geen fysieke interface en raakt de productienetwerkregels niet aan.

Tux tussen twee geïsoleerde Linux-netwerken verbonden door een virtuele kabel
Twee geïsoleerde Linux-netwerkruimten verbonden door een test veth-paar.

Controleer de host voordat u het laboratorium maakt

Begin met het bekijken van de interfaces en de route die door uw machine wordt gebruikt. Houd vooral de interface in de gaten die uw SSH-toegang ondersteunt. De gids ip addr onder Linux helpt bij het doorlopen van deze gegevens vóór een netwerkwijziging.

ip -brief link
ip -brief addr
ip route
ip route get 1.1.1.1

Kies twee documentatie-adressen die nergens in uw netwerk worden gebruikt. Hier blijven 192.0.2.1/24 en 192.0.2.2/24 beperkt tot het virtuele paar. Controleer ook de al aanwezige ruimtes:

sudo ip netns list

Gebruik geen naam die door deze opdracht wordt weergegeven opnieuw. Op een externe machine zonder console zou ik deze test voor een VM houden. De opdracht is omkeerbaar, maar een doelfout of een script dat met te algemene namen wordt uitgevoerd, blijft te vermijden.

Maak twee virtuele hosts verbonden door een veth

Een veth interface werkt in paren. Een pakket dat door het ene uiteinde wordt verzonden, arriveert aan de andere kant, net als bij een korte Ethernet-kabel. De twee uiteinden zullen dan naar verschillende ruimtes gaan.

sudo ip netns add lab-a
sudo ip netns add lab-b

sudo ip link add veth-a type veth peer name veth-b
sudo ip link set veth-a netns lab-a
sudo ip link set veth-b netns lab-b

Een namespace start met zijn loopback-interface gedeactiveerd. Activeer deze, wijs de twee testadressen toe en mount vervolgens de virtuele interfaces:

sudo ip -n lab-a link set lo up
sudo ip -n lab-b link set lo up

sudo ip -n lab-a addr add 192.0.2.1/24 dev veth-a
sudo ip -n lab-b addr add 192.0.2.2/24 dev veth-b
sudo ip -n lab-a link set veth-a up
sudo ip -n lab-b link set veth-b up

Elke ip -n <naam> opdracht werkt in de gevraagde namespace. U kunt hetzelfde resultaat krijgen met ip netns exec lab-a ..., een handige manier om een DNS-client, curl of een testserver te starten zonder uw gebruikelijke shell te verlaten.

Lees de interfaces en controleer het geïsoleerde verkeer

Controleer voor de ping de werkelijke status vanaf elke kant. Deze uitvoer moet een enkele veth interface tonen met het verwachte adres, naast lo.

sudo ip -n lab-a addr show
sudo ip -n lab-b addr show
sudo ip -n lab-a route
sudo ip -n lab-b route
sudo ip netns exec lab-a ping -c 3 192.0.2.2

Een ping die antwoordt bewijst dat het paar actief is en dat de twee ruimtes het testsubnet kunnen bereiken. Het bewijst echter niet dat een firewall, DNS of een productie-applicatie werkt. Gebruik in plaats daarvan ip route op de betrokken machine om het pad van een echte host te controleren.

U kunt nu een route toevoegen, een nftables-regel testen of een kleine service in lab-b starten. Houd de omvang beperkt. Een namespace is zeer geschikt om een netwerkervaring te isoleren, maar niet om een hele cluster te repliceren.

Verwijder het laboratorium en kies de juiste isolatie

Het verwijderen van een ruimte verwijdert ook zijn interfaces en netwerkinstellingen. Controleer eerst de namen en verwijder vervolgens de twee laboratoria:

sudo ip netns list
sudo ip netns del lab-a
sudo ip netns del lab-b
sudo ip netns list

De namen lab-a en lab-b mogen niet meer verschijnen in de laatste opdracht. Als de test een switch, een echte VLAN of andere hardware moet bereiken, kies dan een VM, een container die met het beoogde netwerk is verbonden, of een testomgeving. Voor een blijvende adreswijziging op Ubuntu is de controle met netplan try geschikter.

ip netns is mijn eerste keuze om een lokaal pad te valideren voordat ik het netwerk van een server aanraak. De beperking is duidelijk: het isoleert de netwerkstack, niet de kernel, de schijf of de gedeelde diensten van de host.

De complete syntaxis van ip-netns(8) beschrijft de beschikbare subcommando’s en het gedrag van ip netns exec.

Share Facebook X WhatsApp LinkedIn Pinterest Reddit Email