veth: 리눅스 가상 이더넷 인터페이스란?

veth(버추얼 이더넷 인터페이스)는?

veth는 리눅스의 버추얼 이더넷 인터페이스를 의미합니다. veth는 쌍으로 만들어지며 네트워크 네임스페이스들을 터널로서 연결하거나, 물리 디바이스와 다른 네트워크 네임스페이스의 장비를 연결하는 용도로 사용할 수 있습니다.

리눅스에서는 ip를 사용해 veth 타입의 가상 네트워크 장비를 생성할 수 있습니다. veth는 쌍으로 만들어지므로, <veth0_name><veth1_name>을 적절한 이름으로 치환해줍니다.

$ ip link add <veth0_name> type veth peer name <veth1_name>

veth0veth1 쌍으로 된 veth를 생성하는 경우 아래 명령어를 실행합니다.

$ ip link add veth0 type veth peer name veth1

veth 타입의 장비는 기본적으로 리눅스의 디폴트 네임스페이스에 속하게 되며, 활성화되지 않은 상태로 생성됩니다. veth0과 veth1은 직접 연결되어있기 때문에 활성화 상태는 항상 동시에 변경됩니다. veth0과 veth1이 추가된 구성도는 다음과 같습니다.

veth 네트워크 인터페이스가 추가된 구성도

ip link 명령어로 현재 네트워크 네임스페이스(디폴트)에 veth0과 veth1이 추가된 것을 확인할 수 있습니다. @ 다음의 내용은 이름이 아니라 연결된 목적지를 의미합니다.

$ ip -br link
...
veth1@veth0      DOWN           18:b9:5a:bb:f0:4a <BROADCAST,MULTICAST,M-DOWN>
veth0@veth1      DOWN           39:e0:cf:aa:1b:2c <BROADCAST,MULTICAST,M-DOWN>

네트워크 네임스페이스를 추가하고 veth를 사용해 네트워크 연결을 구성하는 예제는 다음 글을 참고해주세요. 아래 글에서는 네트워크 네임스페이스를 중심으로 ip 명령어와 veth 가상 장치를 실제로 어떻게 활용하는지 소개합니다.

44BITS 로고

ip로 직접 만들어보는 네트워크 네임스페이스와 브리지 네트워크 - 컨테이너 네트워크 기초 2편

🗒 기사, 2021-01-28 - 네트워크 네임스페이스는 프로세스 간의 네트워크를 격리해주는 매우 강력한 도구입니다. 리눅스에서는 ip를 사용해 네트워크를 조회하는 것 뿐만 아니라 네트워크 네임스페이스를 제어하는 용도로도 사용됩니다. 이 글에서는 네트워크 네임스페이스 사용법과 함께 veth(가상 인터페이스)와 가상 브리지로 직접 컨테이너 네트워크 환경을 구축해봅니다.

더 자세한 내용은 리눅스 매뉴얼을 참고해주세요.