개요

본 내용은 Ubuntu 22.04.2 LTS를 기준으로 설명된다.

 

Host 머신에 리눅스 컨테이너(LXC)를 생성(lxc-create 명령어를 통해)하게 되면, 해당 컨테이너와 다이렉트로 연결되는 가상화 인터페이스도 동시에 생성되게 된다.

 

즉, 아래 그림과 같은 형태로 LXC와 가상화 인터페이스 한쌍 그리고 Bridge가 생성된다. 

 

 

이때, LXC에서 생성된 veth은 고정된 인터페이스 이름(ex. eth0)을 할당받게 되지만 Host 머신에 생성된 veth은 랜덤한 인터페이스 이름으로 할당된다.

 

아래는 그러한 예를 캡처한 것이다.

lxcbr0은 브릿지 인터페이스이고, vethxTSR9Y가 LXC와 연결되어 있는 가상화 인터페이스이다.

 

해당 인터페이스의 이름이 LXC가 한번 생성될 때 고정되면 좋겠지만, 이 이름은 매번 LXC가 껏다 켜질때 변경되게 된다.

LXC의 인터페이스를 통해 여러가지 작업을 하는 필자는 이것이 너무나도 불편하였다..

 

그래서 특정 LXC와 다이렉트로 연결되는 가상화 인터페이스의 이름이 매번 달라지는 이슈를 해결하고자, 이것을 고정할 수 있는 방법에 대해서 찾아보게 되었고 그것을 달성한 과정을 본 페이지에서 설명한다.

매우 쉽다.

 

LXC와 연결된 Host의 네트워크 인터페이스 이름 변경

LXC를 생성하게 되면, /var/lib/lxc/ 디렉터리 아래에 본인이 생성한 컨테이너에 대한 디렉터리가 존재할 것이다.

해당 디렉터리가 LXC의 root 디렉터리가 된다.

추가로 /etc/lxc/default.conf는 LXC를 생성할 때 Default로 적용할 수 있는 Config 파일이다.

 

예를 들어, LXC를 생성할 때 컨테이너 이름을 lxc_1로 설정하였다면 /var/lib/lxc/lxc_1 경로에 컨테이너의 Config 파일과 Rootfs이 존재하게 된다.

 

여기서 Config 파일을 수정하게 되면, 특정 LXC와 다이렉트로 연결된 Host 머신에 있는 가상화 인터페이스의 이름을 수정해줄 수 있게된다.

 

인터페이스 이름을 수정하기 위해 Config 파일을 에디터로 접근해준다.

$ sudo vi /var/lib/lxc/[lxc_name]/config

 

파일 내용에 lxc.net.0.veth.pair를 추가하여 해당 변수에 자신이 원하는 인터페이스 이름을 할당해주면 끝이난다.

예를 들어, 아래 캡처본과 같이 해주면 된다.

 

파일을 수정한 뒤 LXC를 껏다 켜주면, 아래와 같이 LXC와 연결되어 있는 Host 머신의 가상화 인터페이스의 이름이 변경되어 있는 것을 확인할 수 있을 것이다.

 

간략하게 스크립트로 만들어주면, 다음 LXC를 생성할 때에는 더 편리하게 적용할 수 있을 것 같다.

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기