Proxmox는 두 대 이상의 서버에 설치하고 클러스터를 구성할 수 있다. 클러스터를 구성하면 두 대의 Proxmox 호스트에서 가상머신들이 함께 사용 가능한 가상의 네트워크를 생성할 수 있다. 그 때 사용할 수 있는 L2 레이어의 가상 네트워크 기술이 바로 VXLAN이다. 즉 두 대의 Proxmox 호스트에 생성하는 가상 서버들을 물리 서버의 IP 대역에 곧바로 연결하는 브릿지(Bridge) 구성이 아닌 다른 IP 대역을 사용하는 가상 네트워크(SDN)에 연결할 수 있는 것이다.
Proxmox 클러스터
아래 그림은 필자의 테스트 환경이다. PC 두 대에 Proxmox를 설치하였고 집의 홈 네트워크 주소 중 하나인 192.168.219.109/24와 192.168.219.199/24 IP 를 부여했다. 그리고 두 대의 PC에 랜카드(이더넷)를 하나 더 추가 설치하고 두 PC를 직접 연결하고 10.0.0.199/24와 10.0.0.109/24 IP를 할당했다.

즉 Proxmox 콘솔에 로그인하면 호스트마다 두 개의 물리 랜카드가 다음과 같이 보인다.

192.168.219.199/24는 홈 네트워크와 인터넷에 연결할 수 있는 IP다. 그리고 10.0.0.199/24는 두 번째 Proxmox 호스트와 직결된 클러스터 네트워크다.
호스트와 게스트 서버의 네트워크를 분리해야 하는 이유
두 대 이상의 물리적인 서버에 Proxmox와 같은 가상화 시스템을 구성하면서 두 서버에 생성한 많은 수의 가상 시스템들을 하나의 네트워크로 구성하는 가장 쉬운 방법은 생성한 가상 서버들을 물리적인 서버와 동일한 네트워크의 IP를 사용하도록 브릿지(Bridge) 모드로 네트워크를 구성하는 방법이다. 하지만 이런 방법은 보안 관점에서 권장되지 않는다.
즉 물리적인 호스트 서버와 호스트 서버에 생성한 게스트 가상서버의 네트워크를 분리하지 않을 경우 서비스 네트워크가 호스트 네트워크와 동일하기 때문에 서비스가 실행중인 게스트 가상머신이 침해당할 경우 동일한 네트워크에 위치한 게스트는 물론 게스트와 연결된 다른 호스트는 물론 내부망 전체가 위험에 처할 수 있기 때문이다.
이런 위험을 감소 또는 제거하기 위해서는 호스트와 게스트의 네트워크를 분리하고 접근을 통제해야 한다. 이때 사용할 수 있는 네트워크 기술이 바로 VXLAN이다.
Proxmox의 SDN 기능을 사용하여 VXLAN 구성하기
Proxmox는 L2 수준에서 네트워크를 가상화 할 수 있는 VXLAN 이라는 기술을 지원한다. 앞의 [구성도]에는 192.168.219.0/24 IP 대역에 설치된 두 대의 물리 서버가 있다. 그리고 10.0.0.199와 10.0.0.109 IP를 갖는 직접 연결된 클러스터 네트워크를 구성하고 이 클러스터 네트워크를 활용해 두 Proxmox 호스트 사이에 172.16.1.0/24 IP 대역의 터널을 구성한다. 두 호스트에서 생성하는 가상서버들에게 172.16.1.0/24 대역의 IP를 할당할 수 있는 것이다.
물론 이렇게 구성된 172.16.1.0/24 대역의 IP를 갖는 게스트 머신들은 기본적으로 192.168.219.0/24 대역의 네트워크와 연결되지 않으며 당연히 인터넷으로 나가는 통신도 불가능하다. VXLAN은 L2 수준의 가상의 네트워크를 만들 수만 있기 때문이다.
다만 방화벽 기능을 수행하는 가상머신을 생성해 두 개의 인터페이스 즉 172.16.1.0/24의 인터페이스와 192.168.219.0/24의 인터페이스를 추가한 다음 두 네트워크 간의 라우팅과 IP/Port 접근통제를 수행할 수 있도록 해주면 두 네트워크를 L3 수준에서 연결해줄 수 있고 172.16.1.0/24 IP 대역을 할당받은 게스트 머신들이 방화벽 을 통해 192.168.219.0/24 는 물론 인터넷도 접속이 가능해진다.
먼저 Proxmox가 설치된 두 호스트를 하나의 네트워크로 구성하는 VXLAN을 구성하는 과정을 포스팅 한다.
SDN에서 Zone(존) 구성하기
두 개 이상의 Proxmox가 설치된 서버로 구성된 Proxmox 클러스터에서 VXLAN을 생성하려면 Datacenter에서 SDN 메뉴의 Zones 를 클릭한다. 처음엔 아무것도 없다. “Add” 버튼을 눌러 VXLAN을 선택하면 아래 화면처럼 vxlan 존을 구성할 수 있다. “Add” 버튼을 누른다.

Add 메뉴를 누르면 여러 유형의 Zone을 구성할 수 있는데 VXLAN을 선택한다.

ID에는 VXLAN의 이름을 넣어주면 된다. 아래 화면에서는 이미 만들어져 있는 VXLAN의 Edit 모드로 들어갔기 때문에 ID가 고정되어 있고 처음 구성할 때는 직접 입력할 수 있다.

Peer Address List에는 두 Proxmox Cluster의 노드에 할당된 IP들 중에서 가상의 VXLAN으로 연결할 IP를 위 화면처럼 입력하면 된다. 여기서는 10.0.0.109와 10.0.0.199 를 연결하는 네트워크 위에 가상의 네트워크(VXLAN)를 생성하겠다는 의미다. 그리고 Nodes에는 이 두 IP를 품고 있는 Proxmox 노드의 호스트 이름을 넣어주면 된다. 그리고 MTU는 1450을 입력한다. 일반적으로 MTU는 1500 byte 이지만 터널을 구성할 때 오버헤드가 50 byte 정도 된다고 한다. 그래서 1500에서 50을 제외한 1450을 입력하면 된다. IPAM은 기본값인 pve를 그대로 둔다. 그리고 OK를 눌러준다.
Peer Address List에 192.168.219.109와 192.168.219.199를 입력해도 되겠지만 그렇게 할 경우 상단의 공유기인 HGWD-1G를 거치는 VXLAN 터널이 구성되기 때문에 대역폭이나 속도가 직결된 10.0.0.0/24 네트워크 위에 구성하는 것 보다 낮을 것이다.
VNet과 Subnet 구성
VXLAN을 사용하여 Zone을 구성한 다음에는 바로 아래 메뉴에 있는 VNets 메뉴에서 VNet과 Subnet을 구성해야 한다. 아래 화면에는 이미 VNet이 구성되어 있는데 Create 버튼을 눌러 구성할 수 있다.

이게 뭐지~~할 정도로 별다른 것은 없다. vnet 이름과 alias를 입력하고 앞에서 구성한 VXLAN 존을 선택해주면 된다.

OK 버튼을 누르면 vxlan172 존에 VNet이 구성된다.
다음은 VNet 안에 Subnet을 만들기 위해 구성한 VNet을 선택하고 오른쪽 Subnet 화면에서 Create 버튼을 눌러 Subnet을 다음과 같이 구성한다.

터널을 생성하고 터널을 사용하는 게스트 머신들이 사용할 IP 대역을 입력해준다. 여기서는 172.16.0.0/24를 입력했다. 일단 게이트웨이는 비워둬도 된다.
Subnet까지 생성하면 Vnet은 최종적으로 다음화면과 같이 구성된다.

이것으로 VXLAN을 사용한 SDN 존을 생성할 준비가 끝났다.
구성한 VXLAN 생성하기
SDN을 생성하기 위한 VXLAN 구성은 모두 완료되었다. 다시 SDN 메뉴로 이동하면 다음과 같이 “Apply” 버튼이 활성화 된 것을 볼 수 있다. 아래 화면은 Apply 버튼을 눌러 VXLAN을 생성한 화면이다.

조금은 허무(?)할 만큼 간단하다. 이렇게 생성된 VXLAN은 게스트 머신을 생성할 때 게스트 머신의 네트워크로 지정할 수 있고 VXLAN으로 생성된 172.16.0.0/24 IP 대역을 사용할 수 있다.
다음 포스트에서는 VXLAN으로 생성된 172.16.0.0/24 IP 대역에 만든 게스트 가상머신이 192.168.219.0/24 네트워크와 통신할 수 있도록 방화벽을 통해 연결하는 내용을 올리도록 하겠다.
#proxmox #sdn #vxlan #vnet #subnet
답글 남기기