굳이 네트워크 설정을 해야 할까?라는 단순한 질문에 사실 설정 하지 않아도 Proxmox 사용하는데 지장은 없다고 답할 수 있다. 그런데 굳지 하지 않아도 되는 네트워크 설정을 하는 이유는 이왕 설치 한이상 좀 더 효율적으로 사용하기 위함이랄까?? 너무 단순하게 이야기했지만 이 부분은 필요한 사람만 필요에 따라 설정을 해 사용하면 된다는 이야기이다. 그럼 필요한 사람들만의 효율적인 Proxmox사용을 위해 사설 네트워크 설정을 진행해 보자!~
📌Private IP(사설 IP)란? 보통 집에서 인터넷을 이용할 경우 대부분 통신사 공유기 또는 별도의 공유기를 통해서 연결되어 있을 것이다. 해당 공유기를 통해서 외부와 Public IP(공인 IP)를 통해 인터넷 연결을 하고 집내부의 기기들은 Private IP(사설 IP)를 할당받아 사용하게 되는데 이때 우리가 보는 192 또는 172로 시작하는 IP들이 이에 해당한다.
이렇게 사설 IP를 이용하는 이유는 사용하는 IT기기들이 늘어남에 따라 공유기를 통해 굳이 공인 IP를 사용해야 하지 않아도 되는 장비나 기기들에 대해 중복으로 사용가능한 IP를 효율적으로 제공하기 위함이다.
보통은 공유기에서 자동으로 할당해 주는 방식(DHCP)으로 사용하여 할당되지 않은 새로운 IP로 자동으로 생성해 주기 때문에 신경 쓰지 않아도 되지만 이렇게 생성된 사설 IP는 내부에서만 사용되는 IP이고 외부에서 접속이 되지 않기 때문에 필요에 따라 외부에서 접속 가능하도록 포트포워드등 라우팅 설정을 해주어야 한다.
1. Proxmox의 기본 네트워크 구성
여느 OS처럼 Proxmox를 설치하면 본인의 물리적 네트워크 카드(NIC)에 의해서 초기설정한 IP대역으로 연결이 된다. 이때의 IP가 위에서 설명한 사설 IP가 할당되며 해당 IP를 통해서 해당 Proxmox의 서비스에 접속하게 된다. 그래서 Proxmox 실행 시 설정한 사설 IP:8006 포트를 통해 WebUI에도 접근하여 사용가능하다. 🚨참고로 앞서 설명했듯이 해당 사설 IP로는 내부에서만 접속되며 외부에서 접속하려면 공유기 설정에서 8006 포트를 포트포워딩 해줘야 한다.
사설IP가 할당된 Proxmox 기본 네트워크
1.1 네트워크 정보확인
아래 명령어를 통해 현재 설정된 Proxmox의 네트워크 정보를 확인해 볼 수 있다.
nano /etc/network/interfaces
auto lo
iface lo inet loopback
# ens33은 NIC에 대한 정보이다.
iface ens33 inet manual
# 가상 브릿지 [ vm(가상) + br(브릿지) + 일련번호 ]
# vmbr0(Linux Bridge)가 자동으로 생성되며 ens33으로부터 모든 포트를 전달받아 외부와 통신한다.
auto vmbr0
iface vmbr0 inet static
address 192.168.0.70/24
gateway 192.168.0.1
bridge-ports ens33
bridge-stp off
bridge-fd 0
ens33 : NIC(물리적 네트워크 카드)에 대한 정보(각자마다 이름은 다를 수 있음)
vmbr0 : 가상 Linux Bridge로서 Proxmox 설치 시 자동으로 생성되며 ens33과 연결되어 외부와의 모든 통신이 이루어진다.
WebUI > [본인 Node] > System > Network를 통해서도 확인 가능하다.
Proxmox Web Network 확인
1.2 서비스 추가에 따른 네트워크 구성도
기본적인 네트워크 구성으로 서비스들을 추가할 경우 아래와 같이 구성될 것이다.
새로운 서비스가 추가
공유기로부터 새로운 사설 IP할당
외부접속을 위한 공유기의 포트포워딩 설정
기본 네트워크 설정에서의 서비스 구성도
1.3 기본 네트워크의 문제점
위에서 설명한 것처럼 공유기 사설 IP대역이 허락하는 한 포트포워딩등 설정을 통해서 서비스를 추가해 나가는 것에는 문제가 없다. 하지만 서비스가 많아지고 복잡해지며 또한 보안적인 측면에서도 위처럼 관리하는 것은 바람직하지 않을 것이다. 이 때문에 공유기 역시 Router로서 사설 IP를 사용하는 것이다. 각설하고 그럼 이제 Proxmox에도 사설망으로 네트워크를 구성해 보자~
2. Proxmox 사설 네트워크 설정
📌사설 네트워크는 사설 가상 브릿지 생성 > NAT설정 > 포트포워딩 설정 순으로 진행된다. 과정은 필요 없다 한다면 2.4 최종 네트워크 설정정보 부분만 확인해 보면 된다.
2.1 사설 가상브리지 생성
내부 사설망의 IP대역은 10.1.1.xxx대역을 사용하였는데 IP대역에 대해서는 아래 표를 참조하면 된다.
📌사설 IP대역 사설 IP라고 해서 아무것이나 사용하는 것은 아니며 미리 약속된 대역대가 존재함으로 확인해서 사용하면 된다. 사설 IP대역 (출처 : 위키피디아)
아래 명령어를 통해 네트워크 설정에 진입해 아래와 같이 사설 가상 브리지(vmbr1)를 추가해 보자.
네트워크 설정 확인
nano /etc/network/interfaces
사설 가상 브릿지 (vmbr1) 추가
# vmbr1 사설 가상 네트워크 구성
auto vmbr1
iface vmbr1 inet static
address 10.1.1.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
네트워크 서비스 재시작
systemctl restart networking
이렇게 생성한 사설 가상 브리지(vmbr1)는 가상 브리지(vmbr0)와 다르게 bridge-ports가 none으로 설정되어 있기 때문에 NIC과 연결이 되어있지 않다 그래서 실제로 외부와 통신은 되지 않고 오직 vmbr0 과의 내부 네트워크 통신만 가능하다.
사설 가상 브리지 생성 및 외부연결 확인
아래에서 보듯이 실제로 컨테이너에 새로 생성한 사설 가상브릿지 네트워크(vmbr1) 연결 시 외부 연결은 되지 않지만 내부와의 연결은 가능한 것을 확인할 수 있다.
vmbr1 가상 브릿지 연결시 외부연결 확인
2.2 사설 가상브릿지 NAT 설정
vmbr0은 NIC와 연결되어 외부통신이 가능하고 vmbr1은 vmbr0과의 내부통신이 가능함으로 두 개의 가상 브릿지를 NAT로 연결하여 외부호출 시 vmbr0에서 vmbr1로 전달하게 함으로써 외부와의 통신연결을 하도록 하면 된다.
위와 같이 사설 가상브릿지의 외부 통신 연결을 위한 NAT설정이 완료되면 가상 사설 네트워크(vmbr1)에서도 외부 통신이 가능해진다.
2.3 외부 접속을 위한 포트포워딩 설정
NAT설정이 끝나면 외부와의 통신은 되기는 하지만 이때도 내부에서 외부로의 통신은 가능한데 실제로 외부에서 내부의 서비스를 접속하려면 해당 서버로 포트를 연결해 줘야 한다. 이것은 공유기에서 사설 IP생성한 것과 동일한 이유로 내부의 사설 IP에 대해서는 외부에서 접근할 수 없기 때문에 외부에서 접속하려고 할 경우 포트포워딩을 통해 해당 포트를 vmbr1로 전달해 접속하려는 서버를 연결해야 한다.
가상 사설 네트워크(vmbr1)로 포트포워딩
네트워크 설정 확인
nano /etc/network/interfaces
포트 포워딩 설정 추가
- 아래 예시에서는 NPM(Nginx Proxy Manager)의 포트 포워딩을 설정하고 있다. - http(80), https(443), webui(81) 포트에 대해서 사설네트워크(vmbr1)를 이용한 서버로 포트포워딩 해준다.
각자의 공유기에서 http(80), https(443), webui(81) 포트에 대해서 포트포워딩 설정을 진행하자.
공유기 포트포워딩 설정
3.2 NPM 관리 콘솔 접속 확인
위에서 모든 설정이 정상적으로 되었다면 Proxmox의 기본 네트워크 주소에 81 포트로 아래와 같이 외부에서 내부의 NPM서버 관리 웹 페이지로 접속이 되는 것을 확인할 수 있다.👏👏👏
NPM 웹 관리 콘솔접속
3.3 문제점
사실 여기도 여전히 문제점은 존재하는데 외부호출 과정에 대해 작업한 것을 포함해 요약해 보면 아래와 같다.
외부호출
공유기 포트포워딩 설정
Proxmox 네트워크(vmbr0) 호출 ↔ Proxmox 사설네트워크(vmbr1) NAT설정을 통한 통신
Proxmox 사설네트워크(vmbr1) 포트포워딩 설정을 통한 서버 연결
서버 호출 완료
관리적인 측면에서 Proxmox내부에 사설네트워크를 구축하긴 했지만 서비스가 추가될 경우 해당 서비스에서 사용할 포트에 대해서 공유기 및 내부 사설네트워크(vmbr1)에 모두 포트포워딩 설정을 진행해 줘야 하기 때문에 비효율 적인 것은 여전할 수 있다. 동일한 포트를 사용하는 서비스에 대해서도 사용할 수 없는 문제 역시 있기 때문에 포트를 변경해서 사용하여야 하는 상황이 발생할 문제 또한 존재한다.
이러한 문제를 해결하기 위하여 위에서 예제로 설명한 NPM(Nginx Proxy Manager)을 이용할 수 있는데 내용이 길어지는 관계로 아래 별도의 게시물을 통해 확인해 볼 수 있다.