한 줄 요약

Rocky 9.6 새 VM을 Proxmox의 vmbr1 내부망에 붙였는데, Debian 때처럼 /etc/network/interfaces를 만지면 되는 줄 알고 잠깐 헷갈렸다.

결론부터 말하면 Rocky 9 계열은 기본적으로 NetworkManager를 쓰기 때문에 nmcli 또는 /etc/NetworkManager/system-connections/*.nmconnection 기준으로 네트워크를 잡아야 했다.

내 네트워크 환경

현재 내 홈랩 네트워크는 대충 이런 구조다.

집 메인 라우터: 모뎀에 직결된 공유기
라우터 LAN: 192.168.219.0/24

Proxmox Mini PC
- vmbr0: 192.168.219.101/24
- vmbr1: 10.10.10.1/24

Proxmox Mini PC
- vmbr0: 192.168.219.101/24
- vmbr1: 10.10.10.1/24

VM/LXC 내부망
- 10.10.10.0/24

 

Codex가 만들어준 이미지

PC에서 Proxmox 내부 VM망에 접근하기 위해 Windows 쪽에는 정적 라우트를 추가해두었다.

route -p add 10.10.10.0 mask 255.255.255.0 192.168.219.101

 

Proxmox 쪽에서는 IP forwarding도 켜져 있다.

net.ipv4.ip_forward = 1

그리고 /etc/network/interfaces 쪽에는 내부 VM들이 외부 인터넷으로 나갈 수 있도록 NAT도 설정해 두었다.

post-up iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE

문제 상황

Rocky 9.6을 막 설치하고 NIC를 vmbr1에 붙였는데, 네트워크가 바로 붙지 않았다.

nmcli device status를 확인해 보니 이런 상태였다.

처음에는 왜 안 붙지 싶었는데 좀 읽을 걸 그랬다.

STATE에 연결은 되어있으나 IP 설정을 하라고 쓰여있다.

즉 Rocky가 자동으로 IP를 받으려고 계속 기다리고 있었던 것이다.

헷갈렸던 부분

Debian에서는 예전에 보통 이 파일을 만졌었다.

/etc/network/interfaces

그래서 처음엔 Rocky도 비슷한 파일을 찾으려고 했는데, Rocky 9.6은 기본 네트워크 관리 방식이 다르다.

Rocky 9 계열은 기본적으로 NetworkManager를 사용하고, 설정 파일은 보통 이쪽에 있다.

/etc/NetworkManager/system-connections/*.nmconnection

파일을 직접 수정할 수도 있지만, 이번에는 nmcli로 처리하는 게 제일 덜 꼬였다.

해결 방법

연결 이름이 enp6s18로 잡혀 있어서, 해당 연결에 내부망 고정 IP를 설정했다.

nmcli con mod enp6s18 \
  ipv4.method manual \
  ipv4.addresses 10.10.10.20/24 \
  ipv4.gateway 10.10.10.1 \
  ipv4.dns "1.1.1.1 8.8.8.8" \
  ipv6.method disabled \
  connection.autoconnect yes

이후 nmcli로 해당 연결을 내렸다가 다시 올려 설정을 적용했다.

nmcli con down enp6s18
nmcli con up enp6s18

그 다음 정상적으로 붙었는지 확인했다.

ip a
ip route
ping 10.10.10.1
ping 1.1.1.1
ping google.com

정상이라면 라우트는 대충 이런 느낌이면 된다.

default via 10.10.10.1 dev enp6s18
10.10.10.0/24 dev enp6s18 proto kernel scope link src 10.10.10.20

외부 인터넷이 안 됐던 이유

처음에는 PC에서 VM으로 SSH는 되는데, VM에서 외부 인터넷으로 나가지 못했다.

Proxmox에는 이미 NAT 설정이 있었기 때문에 NAT 자체가 빠진 문제는 아니었다.

post-up iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o vmbr0 -j MASQUERADE

진짜 원인은 Rocky VM이 애초에 connecting (getting IP configuration) 상태였고, IP와 게이트웨이가 제대로 잡혀 있지 않았다는 점이었다.

Proxmox에 NAT가 있어도 VM이 먼저 10.10.10.1 게이트웨이로 패킷을 보내야 외부로 나갈 수 있다.

정리하면 원인은 이쪽이었다.

vmbr1에는 DHCP가 없음
Rocky가 DHCP로 IP 받으려고 기다림
그래서 IP와 gateway를 수동으로 줘야 했음
수동 설정 후 PC에서 SSH도 되고 VM에서 인터넷도 됨

다음 Rocky VM을 만들 때

새 Rocky VM을 vmbr1에 붙이면 DHCP가 없으니까 바로 고정 IP를 잡아주면 된다.

예를 들어 다음 VM은 10.10.10.21로 잡는다.

nmcli con mod enp6s18 ipv4.method manual ipv4.addresses 10.10.10.21/24 ipv4.gateway 10.10.10.1 ipv4.dns "1.1.1.1 8.8.8.8" ipv6.method disabled connection.autoconnect yes
nmcli con down enp6s18
nmcli con up enp6s18

IP만 겹치지 않게 주면 된다.

첫 번째 Rocky VM: 10.10.10.20
다음 Rocky VM: 10.10.10.21
그 다음: 10.10.10.22

문제 판정법

나중에 또 네트워크가 안 붙으면 이 순서로 보면 된다.

ping 10.10.10.1
ping 1.1.1.1
ping google.com

판정은 이렇게 하면 된다.

10.10.10.1 안 됨
-> VM IP 설정, vmbr1 연결, NIC 연결 문제

10.10.10.1 됨 / 1.1.1.1 안 됨
-> Proxmox ip_forward 또는 NAT 문제

1.1.1.1 됨 / google.com 안 됨
-> DNS 문제

결론

이번 문제는 Proxmox 네트워크 구성이 틀린 게 아니라, Rocky 9.6 VM이 DHCP를 기다리고 있었던 게 핵심이었다.

Debian에서 익숙했던 /etc/network/interfaces 방식과 달리 Rocky 9.6은 NetworkManager 기준으로 봐야 한다.

내 홈랩 기준으로는 vmbr1 = 10.10.10.1/24, VM은 10.10.10.x/24, 게이트웨이는 10.10.10.1, DNS는 1.1.1.1 정도로 통일하면 깔끔하다.