[CKA] Linux 네트워크 네임스페이스

네트워크 네임스페이스를 만들고 veth와 Linux bridge로 격리된 네트워크를 연결하는 과정을 정리합니다.

네트워크 네임스페이스는 인터페이스, 라우팅 테이블, ARP 테이블을 호스트와 분리합니다. 컨테이너는 이 격리된 네트워크 공간을 사용하며, 호스트는 필요에 따라 네임스페이스 사이를 연결합니다.

생성과 확인

ip netns add red
ip netns add blue
ip netns
ip netns exec red ip link
ip -n red link

새 네임스페이스에는 기본적으로 loopback 인터페이스가 있지만 활성화가 필요할 수 있습니다.

ip -n red link set lo up

veth로 두 공간 연결

veth 쌍은 양 끝이 연결된 가상 케이블처럼 동작합니다. 한쪽을 각 네임스페이스로 옮기고 IP 주소를 부여하면 두 공간이 직접 통신할 수 있습니다.

ip link add veth-red type veth peer name veth-blue
ip link set veth-red netns red
ip link set veth-blue netns blue
ip -n red addr add 192.168.15.1/24 dev veth-red
ip -n blue addr add 192.168.15.2/24 dev veth-blue
ip -n red link set veth-red up
ip -n blue link set veth-blue up

여러 네임스페이스를 연결할 때는 Linux bridge를 가상 스위치로 사용할 수 있습니다. 각 네임스페이스와 브리지 사이에 veth 쌍을 하나씩 만들고 호스트 쪽 끝을 브리지에 연결합니다. 외부 네트워크까지 연결하려면 기본 경로, 호스트의 IP 포워딩, 필요에 따른 NAT 설정도 함께 고려해야 합니다.