리눅스

[Ubuntu] VirtualBox DHCP IP 할당 불안정 문제 완벽 해결 가이드

palantirops 2026. 5. 1. 17:39

VirtualBox DHCP IP 할당 불안정 문제 완벽 해결 가이드

20시간의 시행착오를 정리했습니다. Docker 설치 후 갑자기 발생한 DHCP 할당 실패 문제의 원인과 근본적인 해결방법입니다.


🚨 문제 상황 요약

증상

  • 이전: 부팅할 때마다 공유기(DHCP)에서 정상적으로 IP 할당 (예: 172.16.11.235)
  • 현재: 부팅 시 공유기 대신 호스트 PC의 가상 IP(예: 223.x.x.x) 자동 할당
  • 임시 해결: ipconfig /release → ipconfig /renew 수행하면 정상 IP로 변경됨, 버츄얼박스 브릿지에 연결되어 있는 기기를 계속 지우고 다시 연결하고 삭제해도 같은 문제 반복됨.
  • 반복 발생: 부팅할 때마다 같은 문제 반복

시간대별 문제 진행

월요일까지     → DHCP 정상 할당 ✅
화요일 아침     → 갑자기 할당 실패 ❌
그 사이에       → Docker & Hyper-V 삭제

🔍 원인 분석

근본 원인: Windows Hyper-V와 VirtualBox의 네트워크 충돌

Docker 설치 시 발생한 변화:

  1. Docker 설치 → Hyper-V 자동 활성화
  2. Hyper-V 활성화 → Windows 가상 스위치(vEthernet) 생성
  3. vEthernet이 네트워크 우선순위를 높게 설정
  4. VirtualBox의 DHCP 요청이 공유기 대신 Windows 가상 스위치에 먼저 캡처됨
  5. 결과적으로 잘못된 IP 범위(223.x.x.x)에서 할당받음

왜 기존 방법들이 임시 해결일까?

  • ipconfig /release/renew: 그 순간만 정상 IP로 변경되지만, 부팅 시 우선순위 문제는 해결 안 됨
  • 브릿지 제거, 디바이스 삭제: 임시 해결이지 근본 원인 제거 아님

✅ 근본적인 해결 방법: netplan 고정 IP 설정

가장 안정적인 해결책은 DHCP 의존성 제거입니다.
Linux VM 내부에서 고정 IP를 설정하면 부팅 시마다 안정적으로 작동합니다.

적용 단계

Step 1: 현재 설정 파일 확인

cd /etc/netplan
ls -la

보통 다음 중 하나 있음:

  • 00-installer-config.yaml
  • 01-netcfg.yaml
  • 50-cloud-init.yaml

Step 2: 백업 (매우 중요!)

sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.backup

Step 3: 파일 편집

sudo nano /etc/netplan/00-installer-config.yaml

Step 4: 기존 내용 전부 삭제하고 아래 입력

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: false
      addresses:
        - 172.16.11.235/24
      routes:
        - to: default
          via: 172.16.11.254
      nameservers:
        addresses:
          - 8.8.8.8
          - 172.16.11.254

⚠️ YAML 주의사항:

  • 탭 금지 - 반드시 스페이스 2개 사용
  • 들여쓰기 오류 시 전체 설정이 작동하지 않음

Step 5: 저장 및 적용

nano 에디터 사용 시:

Ctrl + O (저장)
Enter
Ctrl + X (종료)

설정 적용:

sudo netplan apply

Step 6: 네트워크 재시작 (확실하게 반영)

sudo systemctl restart systemd-networkd

Step 7: 확인

ip addr show enp0s3

성공 시 출력:

inet 172.16.11.235/24 brd 172.16.11.255 scope global enp0s3

🚨 적용 중 에러 발생 시

에러: Configuration rejected

원인: YAML 들여쓰기 오류
해결:

sudo netplan try  # 설정 검증
# 에러 메시지 확인 후 파일 수정

롤백 (설정 원상복구)

sudo cp /etc/netplan/00-installer-config.yaml.backup /etc/netplan/00-installer-config.yaml
sudo netplan apply

✔️ 최종 검증 (부팅 후 매번 확인)

부팅 후 확인 명령어

# 현재 IP 확인
ip addr show enp0s3

# 라우팅 테이블 확인
ip route show

# DNS 확인
cat /etc/resolv.conf

# 게이트웨이 통신 확인
ping 172.16.11.254

# 외부 인터넷 통신 확인
ping 8.8.8.8

💡 왜 고정 IP가 정답일까?

항목 DHCP 동적 할당 고정 IP 설정

부팅 안정성 ❌ 불안정 (우선순위 의존) ✅ 항상 안정적
네트워크 충돌 ❌ Hyper-V 영향 받음 ✅ 영향 없음
관리 편의성 ❌ 매번 확인 필요 ✅ 예측 가능
서버 환경에 적합 ❌ 부적절 ✅ 표준 방식

결론: VM 내부에서 고정 IP를 사용하는 것이 서버 환경에서의 표준 관행입니다.