Conectando dois namespaces de rede por meio de um par de interfaces onde cada endpoint tem o mesmo nome

Conectando dois namespaces de rede por meio de um par de interfaces onde cada endpoint tem o mesmo nome

Existe um único comando (simples) que criará um par de interfaces veth e atribuirá cada interface a um namespace de rede diferente?

Por exemplo, suponha que eu tenha dois namespaces: mynamespace-1e mynamespace-2. Existe um comando único (simples) que conectará esses dois namespaces por meio de um par veth onde cada terminal da interface é nomeado eth0?

Atualmente, o que eu faria é criar o par veth, mover cada interface para o namespace correspondente e, em seguida, renomear a interface dentro desse namespace. Gostaria de saber se esses três comandos podem ser compactados em um único comando.

Para contextualizar, aqui está um exemplo de como estou conectando atualmente um par de namespaces e testando a conexão:

# 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

Responder1

O melhor que posso oferecer é executar o comando em um namespace (usando o -natalho), criar cada endpoint com o mesmo nome e moverumdeles em um namespace diferente nesse comando:

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

Você ainda precisará fazer outras coisas, como atribuição de endereço (a -nabreviatura também pode ser útil), então, de qualquer maneira, você terá que escrever um script.

Como man ipdiz, a -nopção é um atalho para ip netns exec ... ip ..., então você pode usar este formulário se ipnão suportar a -nopção.

informação relacionada