各エンドポイントが同じ名前を持つ veth インターフェースペアを介して 2 つのネットワーク名前空間を接続する

各エンドポイントが同じ名前を持つ veth インターフェースペアを介して 2 つのネットワーク名前空間を接続する

veth インターフェイス ペアを作成し、各インターフェイスを異なるネットワーク名前空間に割り当てる単一の (単純な) コマンドはありますか?

たとえば、mynamespace-1とという 2 つの名前空間があるとしますmynamespace-2。インターフェースの各エンドポイントが という名前の veth ペアを介してこれら 2 つの名前空間を接続する単一の (単純な) コマンドはありますかeth0?

現在、私が行っていることは、veth ペアを作成し、各インターフェイスを対応する名前空間に移動してから、その名前空間内からインターフェイスの名前を変更することです。これらの 3 つのコマンドを 1 つのコマンドに圧縮できるかどうかを知りたいです。

コンテキストとして、現在 2 つの名前空間を接続して接続をテストしている方法の例を次に示します。

# 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

答え1

私が提案できる最善の方法は、コマンドを1つの名前空間で実行し(-nショートカットを使用)、各エンドポイントを同じ名前で作成し、1つこのコマンドでそれらを別の名前空間に移動します。

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

アドレスの割り当てなどの他の作業も行う必要があるため (-n省略形も役立つ場合があります)、いずれにしてもスクリプトを作成する必要があります。

で説明されているようにman ip-nオプションは のショートカットなので、 が オプションをサポートしていないip netns exec ... ip ...場合はこのフォームを使用できます。ip-n

関連情報