각 엔드포인트의 이름이 동일한 veth 인터페이스 쌍을 통해 두 개의 네트워크 네임스페이스를 연결합니다.

각 엔드포인트의 이름이 동일한 veth 인터페이스 쌍을 통해 두 개의 네트워크 네임스페이스를 연결합니다.

veth 인터페이스 쌍을 생성하고 각 인터페이스를 다른 네트워크 네임스페이스에 할당하는 (간단한) 명령이 있습니까?

mynamespace-1예를 들어 와 이라는 두 개의 네임스페이스가 있다고 가정해 보겠습니다 mynamespace-2. 인터페이스의 각 끝점 이름이 veth 쌍을 통해 이 두 네임스페이스를 연결하는 (간단한) 명령이 있습니까 eth0?

현재 내가 하려는 작업은 veth 쌍을 생성하고 각 인터페이스를 해당 네임스페이스로 이동한 다음 해당 네임스페이스 내에서 인터페이스 이름을 바꾸는 것입니다. 이 세 가지 명령을 하나의 명령으로 압축할 수 있는지 궁금합니다.

상황에 맞게 현재 네임스페이스 쌍을 연결하고 연결을 테스트하는 방법에 대한 예는 다음과 같습니다.

# 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

제가 제공할 수 있는 최선의 방법은 네임스페이스에서 명령을 실행하고( -n바로가기를 사용하여) 동일한 이름으로 각 엔드포인트를 생성한 다음 이동하는 것입니다.하나다음 명령으로 이를 다른 네임스페이스에 배치합니다.

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

관련 정보