Dispositivo de red virtual de Linux --- use el par Veth para conectarse al puente de puente de Linux

Como se muestra en la figura a continuación, en el artículo anterior Dispositivo de red virtual de Linux: explicación detallada del par Veth , presentamos cómo conectar dos espacios de nombres a través del par Veth.
inserte la descripción de la imagen aquí
Pero en la configuración habitual, en términos generales, habrá muchos espacios de nombres en un host físico. Si desea usar un par veth para conectarse directamente, cada dos espacios de nombres que necesitan comunicarse entre sí necesitan un par de conexiones de pares veth, que estar conectado en telaraña. Similar a la solución para conectar múltiples hosts en la red física (conmutador + cable de red para formar una conexión en estrella), usaremos el puente de Linux + par veth para construir una red de conexión en estrella para resolver el problema de comunicación multipunto (como se muestra en la figura que se muestra a continuación). Como se muestra a continuación, crearemos un puente br0 en el host Linux y agregaremos la tarjeta de red enp2s0 del host a este puente como un puerto del puente.Otro host Linux se conecta al host a través de enp2s0, y luego ns0 a través de veth0 - vethbr0 está conectado a br0, ns1 está conectado a br0 a través de veth1-vethbr1.

inserte la descripción de la imagen aquí

Antes de comenzar a conectar los espacios de nombres, podemos consultar el artículo Introducción a Linux Bridge, Primeros pasos y configuración para crear un puente de Linux en el host físico.

1. Podemos usar el siguiente comando para crear un par veth: veth0----veth1

Cree cinco pares de dispositivos Ethernet virtuales de veth0—vethbr0, veth1—vethbr1, veth2—vethbr2, veth3—vethbr3 y veth4—vethbr4.

sudo ip link add veth0 type veth peer name vethbr0
sudo ip link add veth1 type veth peer name vethbr1
sudo ip link add veth2 type veth peer name vethbr2
sudo ip link add veth3 type veth peer name vethbr3
sudo ip link add veth4 type veth peer name vethbr4

2. Después de crear cinco espacios de nombres, puede usar el siguiente comando para mover un extremo del par de dispositivos veth al espacio de nombres de espacios de nombres y habilitar veth

Cree cinco espacios de nombres denominados ns0, ns1, ns2, ns3 y ns4 y configure veth0 como la tarjeta de red de ns0, configure veth1 como la tarjeta de red de ns1, y así sucesivamente.

sudo ip netns add ns0
sudo ip netns add ns1
sudo ip netns add ns2
sudo ip netns add ns3
sudo ip netns add ns4
sudo ip link set veth0 netns ns0
sudo ip link set veth1 netns ns1
sudo ip link set veth2 netns ns2
sudo ip link set veth3 netns ns3
sudo ip link set veth4 netns ns4
sudo ip netns exec ns0 ip link set veth0 up
sudo ip netns exec ns1 ip link set veth1 up
sudo ip netns exec ns2 ip link set veth2 up
sudo ip netns exec ns3 ip link set veth3 up
sudo ip netns exec ns4 ip link set veth4 up

2. Conecte el otro extremo del par de dispositivos veth al puente de linux, conecte todos los espacios de nombres al puente de puente de Linux y habilite veth

sudo ip link set vethbr0 up
sudo ip link set vethbr1 up
sudo ip link set vethbr2 up
sudo ip link set vethbr3 up
sudo ip link set vethbr4 up
sudo brctl addif br0 vethbr0
sudo brctl addif br0 vethbr1
sudo brctl addif br0 vethbr2
sudo brctl addif br0 vethbr3
sudo brctl addif br0 vethbr4

3. Ver el veth en los cinco espacios de nombres

Use la forma de ip netns exec ns0 + el comando a ejecutar para ejecutar el comando especificado en ns0. Lo siguiente es ejecutar el comando ip link show para ver el estado del enlace de red en ns0.

sudo ip netns exec ns0 ip link show
sudo ip netns exec ns1 ip link show
sudo ip netns exec ns2 ip link show
sudo ip netns exec ns3 ip link show
sudo ip netns exec ns4 ip link show

4. Configure la red en los cinco espacios de nombres

Use la forma de ip netns exec ns0 + el comando a ejecutar para ejecutar el comando especificado en ns0. Lo siguiente es ejecutar el comando ip addr add para configurar la dirección IP para veth0 en ns0. Al mismo tiempo, opere ns1 en consecuencia. Una vez completada la configuración, las rutas predeterminadas se generarán automáticamente en ns0 y ns1.

sudo ip netns exec ns0 ip addr add 192.168.0.2/24 dev veth0
sudo ip netns exec ns1 ip addr add 192.168.0.3/24 dev veth1
sudo ip netns exec ns2 ip addr add 192.168.0.4/24 dev veth2
sudo ip netns exec ns3 ip addr add 192.168.0.5/24 dev veth3
sudo ip netns exec ns4 ip addr add 192.168.0.6/24 dev veth4

5. Ver las direcciones IP y las rutas de ns0 y ns1

Podemos ver que la dirección IP de la tarjeta de red veth0 en ns0 es 192.168.0.2, la dirección IP de la tarjeta de red veth1 en ns1 es 192.168.0.3 y las rutas predeterminadas se generan en los espacios de nombres ns0 y ns1.

sudo ip netns exec ns0 ip addr show
sudo ip netns exec ns1 ip addr show
sudo ip netns exec ns2 ip addr show
sudo ip netns exec ns3 ip addr show
sudo ip netns exec ns4 ip addr show
sudo ip netns exec ns0 ip route show
sudo ip netns exec ns1 ip route show
sudo ip netns exec ns2 ip route show
sudo ip netns exec ns3 ip route show
sudo ip netns exec ns4 ip route show

6. Verifique la conectividad de red entre ns3 y ns4

Use la forma de ip netns exec ns3 + el comando a ejecutar para ejecutar el comando especificado en ns3. Lo siguiente es ejecutar el comando ping para verificar la conectividad de la red ip entre ns3 y ns4.

xxx@xx-PC:~$ sudo ip netns exec ns3 ping 192.168.0.6
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.030 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.050 ms

7. Verifique la conectividad de red entre ns3 y hosts físicos externos

Use la forma de ip netns exec ns3 + el comando a ejecutar para ejecutar el comando especificado en ns3. Lo siguiente es ejecutar el comando ping para verificar la conectividad de la red ip entre ns3 y el host externo 192.168.3.1 conectado al tarjeta de red enps20.

  • Agregue la ruta predeterminada primero
sudo ip netns exec ns3 ip route add default dev veth3
  • Verifique la configuración de enrutamiento de ns3, se puede ver que el mensaje enviado a 192.168.3.1 se enviará a través de la interfaz veth3
xxx@xx-PC:~$ sudo ip netns exec ns3 ip route show
default dev veth3 scope link 
192.168.0.0/24 dev veth3 proto kernel scope link src 192.168.0.5 
  • Verifique la conectividad:
    después de configurar la ruta a 192.168.0.5 (ns3) en el host conectado al puente br0 a través de enp2s0, usamos el siguiente comando para iniciar una prueba de ping en ns3.
xxx@xx-PC:~$ sudo ip netns exec ns3 ping 192.168.3.1
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=2.22 ms
64 bytes from 192.168.3.1: icmp_seq=2 ttl=64 time=2.33 ms
64 bytes from 192.168.3.1: icmp_seq=3 ttl=64 time=2.01 ms

Supongo que te gusta

Origin blog.csdn.net/meihualing/article/details/131156232
Recomendado
Clasificación