| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- prometheus-stack
- N100
- 네이버
- spring boot
- k8s
- 홈랩
- 가상화
- 2022
- homelab
- LOG
- opnsense
- slf4j
- AI
- 서포터즈
- APIMARKETPLACE
- GPU 엔지니어링
- 방화벽
- Elk
- proxmox
- jenkins
- API MARKETPLACE
- naver
- 젠킨스
- Docker
- GPU
- 대외활동
- 모니터링
- 홈서버
- log4j2
- NAS
- Today
- Total
G 스토리
[HomeLab] Proxmox 내부망 구축기 (DHCP/NAT) 본문
목차
- 들어가며: 왜 가상 라우터가 필요한가?
- Step 1: Proxmox 격리 브리지(vmbr1) 생성
- Step 2: 라우터 VM 네트워크 설정 (Netplan)
- Step 3: 인터넷 연결을 위한 NAT 설정 (IPtables)
- Step 4: 자동 IP 할당을 위한 DHCP 서버 구축
- 마치며: 나만의 작은 데이터센터 완성
들어가며: 왜 가상 라우터가 필요한가?
최근 N100 미니 PC를 구입하여 Proxmox VE를 올리고 홈랩(HomeLab)을 구축하고 있습니다. 처음에는 단순히 VM을 생성해서 공유기 IP를 받아 썼지만, VM이 늘어날수록 IP 관리가 번거롭고 보안도 신경 쓰이기 시작했습니다.
"클라우드(AWS)의 VPC처럼 외부와 격리된 나만의 사설 네트워크를 만들 순 없을까?"
이 질문에서 시작해, **Proxmox 내부에 격리된 네트워크(LAN)**를 만들고, 그 안의 VM들에게 IP를 나눠주고 인터넷까지 연결해 주는 **'가상 라우터(Router)'**를 구축해 보았습니다.
Step 1: Proxmox 격리 브리지(vmbr1) 생성
가장 먼저 내부 VM끼리만 통신할 수 있는 '무인도(Isolated Network)'를 만들어야 합니다.
Proxmox 노드 → [System] → [Network]에서 Linux Bridge를 새로 생성합니다.
- Name:
vmbr1 - IPv4/CIDR: (비워둠)
- Bridge ports: (반드시 비워둠)
- Comment: Internal Network

Step 2: 라우터 VM 네트워크 설정 (Netplan)
Ubuntu Server 22.04로 Router VM을 생성하고, 하드웨어 설정에서 랜카드를 2개 장착했습니다.
- net0 (ens18):
vmbr0연결 (WAN - 인터넷용) - net1 (ens19):
vmbr1연결 (LAN - 내부 관리용)
VM 내부에서 netplan을 통해 IP를 고정하고 게이트웨이 역할을 부여합니다.
파일 경로: /etc/netplan/50-cloud-init.yaml
yaml
network:
version: 2
renderer: networkd
ethernets:
ens18: # 외부 (WAN)
dhcp4: true # 집 공유기에서 IP 자동 할당
ens19: # 내부 (LAN)
dhcp4: false
addresses:
- 192.168.10.1/24 # 이 라우터의 내부 IP (게이트웨이 주소)
설정 후 sudo netplan apply 로 적용합니다. 이제 ens19 인터페이스는 내부망의 게이트웨이 역할을 수행합니다.
Step 3: 인터넷 연결을 위한 NAT 설정 (IPtables)
내부망(192.168.10.x)은 사설 IP이므로, 이 상태로는 인터넷(네이버, 구글)에 접속할 수 없습니다. 나가는 패킷의 주소를 라우터의 공인 IP(192.168.0.x)로 변조해 주는 NAT(Masquerade) 설정이 필요합니다.
1. IP 포워딩 활성화/etc/sysctl.conf 파일에서 주석을 해제합니다.
net.ipv4.ip_forward=1
2. IPTables 마스커레이드 설정
sudo iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
해석: "나가는 문(
ens18)을 통과하는 패킷은 내 IP로 변장(Masquerade)시켜라."
3. 설정 영구 저장
재부팅 후에도 규칙이 유지되도록 iptables-persistent를 설치하여 저장했습니다.sudo apt install iptables iptables-persistent 이 후 전부 OK

Step 4: 자동 IP 할당을 위한 DHCP 서버 구축
내부망에 연결되는 VM들이 일일이 IP를 설정하지 않아도 되도록 DHCP 서버를 구축했습니다.
설치: sudo apt install isc-dhcp-server
1. 인터페이스 지정 (/etc/default/isc-dhcp-server)
외부망으로 IP를 뿌리면 집 인터넷이 마비될 수 있으므로, 반드시 내부 인터페이스(ens19)만 지정합니다.
INTERFACESv4="ens19"

2. DHCP 범위 설정 (/etc/dhcp/dhcpd.conf)
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200; # 할당 범위 (100~200)
option routers 192.168.10.1; # 게이트웨이 (나 자신)
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8; # DNS (Google)
}
서비스 재시작(sudo systemctl restart isc-dhcp-server) 후 Active (running) 상태를 확인.

트러블 슈팅
Status Active failed 문제

sudo dhcpd -t를 사용해서 맞춤법 검사

/etc/dhcp/dhcpd/conf 113 줄에서 오타 발견하고 해결

ping 8.8.8.8 안됨
DHCP(IP 받기)는 성공했지만, NAT(인터넷 연결) 설정이 풀렸거나 적용이 안된 경우

IP 포워딩 확인sysctl net.ipv4.ip_forward 으로 ip 포워딩 확인 = 1 이면 정상
NAT 규칙 확인sudo iptables -t nat -L -n -v 으로 iptables 규칙 확인

아래 명령어로 ens18(외부망)에 NAT 규칙 추가
sudo iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
sudo netfilter-persistent save

마치며
단순히 공유기 밑에 VM을 두는 것을 넘어, 직접 리눅스로 라우터, DHCP, NAT를 밑바닥부터 구축해보니 네트워크의 흐름(DORA, SNAT 등)이 훨씬 명확하게 이해되었습니다.
이제 이 격리된 내부망(192.168.10.x)은 저만의 안전한 'Private Cloud'가 되었습니다. 다음 포스팅에서는 이 환경 위에 Public/Private DNS를 구축하여 도메인 기반으로 서비스를 분리하는 실습을 진행해 보겠습니다.
'IT 이것저것 요모조모 > Infra' 카테고리의 다른 글
| 홈 서버/NAS 만들기 #1: 부품 드래곤볼부터 누드 테스트까지 (1) | 2026.02.07 |
|---|---|
| [HomeLab] 놀고 있는 N100 미니 PC로 OPNsense 구축하기 2부 (Zenarmor, WireGuard) (1) | 2026.01.09 |
| [HomeLab] 놀고 있는 N100 미니 PC로 고성능 방화벽(OPNsense) 구축하기 1부 (0) | 2026.01.04 |
| [HomeLab] Docker와 BIND9으로 Private DNS 구축하기 (0) | 2025.12.13 |
| 간단 ESXI 8.0u (무료 버전) 다운로드 방법 (0) | 2025.09.18 |