Conexión de dos espacios de nombres de red a través de un quinto par de interfaces donde cada punto final tiene el mismo nombre

Conexión de dos espacios de nombres de red a través de un quinto par de interfaces donde cada punto final tiene el mismo nombre

¿Existe un comando único (simple) que creará un par de interfaces quinto y asignará cada interfaz a un espacio de nombres de red diferente?

Por ejemplo, supongamos que tengo dos espacios de nombres: mynamespace-1y mynamespace-2. ¿Existe un comando único (simple) que conecte estos dos espacios de nombres a través de un quinto par donde se nombra cada punto final de la interfaz eth0?

Actualmente, lo que haría es crear el par veth, mover cada interfaz al espacio de nombres correspondiente y luego cambiar el nombre de la interfaz desde ese espacio de nombres. Me gustaría saber si estos tres comandos se pueden comprimir en un solo comando.

Para contextualizar, aquí hay un ejemplo de cómo actualmente estoy conectando un par de espacios de nombres y probando la conexión:

# Create two network namespaces
sudo ip netns add 'mynamespace-1'
sudo ip netns add 'mynamespace-2'

# Create a veth virtual-interface pair
sudo ip link add 'myns-1-eth0' type veth peer name 'myns-2-eth0'

# Assign the interfaces to the namespaces
sudo ip link set 'myns-1-eth0' netns 'mynamespace-1'
sudo ip link set 'myns-2-eth0' netns 'mynamespace-2'

# Change the names of the interfaces (I prefer to use standard interface names)
sudo ip netns exec 'mynamespace-1' ip link set 'myns-1-eth0' name 'eth0'
sudo ip netns exec 'mynamespace-2' ip link set 'myns-2-eth0' name 'eth0'

# Assign an address to each interface
sudo ip netns exec 'mynamespace-1' ip addr add 192.168.1.1/24 dev eth0
sudo ip netns exec 'mynamespace-2' ip addr add 192.168.2.1/24 dev eth0

# Bring up the interfaces (the veth interfaces the loopback interfaces)
sudo ip netns exec 'mynamespace-1' ip link set 'lo' up
sudo ip netns exec 'mynamespace-1' ip link set 'eth0' up
sudo ip netns exec 'mynamespace-2' ip link set 'lo' up
sudo ip netns exec 'mynamespace-2' ip link set 'eth0' up

# Configure routes
sudo ip netns exec 'mynamespace-1' ip route add default via 192.168.1.1 dev eth0
sudo ip netns exec 'mynamespace-2' ip route add default via 192.168.2.1 dev eth0

# Test the connection (in both directions)
sudo ip netns exec 'mynamespace-1' ping -c 1 192.168.2.1
sudo ip netns exec 'mynamespace-2' ping -c 1 192.168.1.1

Respuesta1

Lo mejor que puedo ofrecer es ejecutar el comando en un espacio de nombres (usando el -nacceso directo), crear cada punto final con el mismo nombre y moverunode ellos en un espacio de nombres diferente en ese comando:

ip -n mynamespace-1 link add eth0 type veth peer name eth0 netns mynamespace-2

Aún necesitarás hacer otras cosas como la asignación de direcciones (la -nabreviatura también puede ser útil), por lo que tendrás que escribir un guión de todos modos.

Como man ipdice, la -nopción es un atajo para ip netns exec ... ip ..., por lo que puede usar este formulario si ipno admite la -nopción.

información relacionada