[태그:] IP 충돌

  • 서버 이미지(AMI·Snapshot) 복원 시 IP 충돌 문제 해결하기

    서버 이미지(AWS AMI, GCP Snapshot 등)를 사용하여 새 인스턴스를 복원하거나 다른 네트워크로 마이그레이션할 때 IP 주소 충돌 문제가 매우 흔히 발생합니다. 이는 이미지에 원본 서버의 네트워크 설정(사설 IP 주소, MAC 주소 정보 등)이 그대로 포함되어 있기 때문입니다. 특히, 같은 서브넷 내에 원본 인스턴스가 여전히 실행 중이거나, 복원된 인스턴스가 새로운 네트워크 환경에 적합한 설정을 자동으로 가져오지 못할 때 IP 주소 충돌이 발생합니다.

    서버 이미지(AWS AMI, GCP Snapshot 등)를 사용하여 새 인스턴스를 복원하거나 다른 네트워크로 마이그레이션할 때 IP 주소 충돌 문제가 매우 흔히 발생합니다. 이는 이미지에 원본 서버의 네트워크 설정(사설 IP 주소, MAC 주소 정보 등)이 그대로 포함되어 있기 때문입니다. 특히, 같은 서브넷 내에 원본 인스턴스가 여전히 실행 중이거나, 복원된 인스턴스가 새로운 네트워크 환경에 적합한 설정을 자동으로 가져오지 못할 때 IP 주소 충돌이 발생합니다.


    1. IP 충돌의 원인 진단: Persistent Network Configuration

    이미지 복원 후 IP 충돌이 발생하는 핵심적인 이유는 운영체제 내부에 저장된 지속적인 네트워크 설정(Persistent Network Configuration) 정보 때문입니다.

    • 정적 IP 주소 설정: 원본 인스턴스가 DHCP(동적 호스트 설정 프로토콜) 대신 정적(Static) IP 주소로 설정되어 있었다면, 복제된 새 인스턴스 역시 동일한 정적 IP 주소로 네트워크에 연결을 시도하여 충돌을 일으킵니다.
    • MAC 주소 및 NIC 설정 보존: 윈도우나 리눅스 운영체제는 네트워크 인터페이스 카드(NIC)의 MAC 주소 정보를 드라이버 설정 파일(udev 규칙, ifcfg 파일 등)에 기록해 둡니다. 새 인스턴스는 클라우드 플랫폼으로부터 새로운 MAC 주소와 IP 주소를 할당받았더라도, OS 내부 설정이 이전 MAC 주소와 연결된 이전 사설 IP 주소를 강제로 사용하려고 시도합니다.
    • ARP Cache 문제: 네트워크 스위치나 라우터의 ARP(Address Resolution Protocol) 캐시에 이전 인스턴스의 MAC 주소와 IP 주소 쌍이 남아있다면, 새 인스턴스가 네트워크에 진입했을 때 트래픽 라우팅에 혼란이 발생합니다.

    2. 해결 전략 1: 이미지 생성 전 원본 설정 정리 (선제적 조치)

    IP 충돌을 방지하는 가장 좋은 방법은 이미지를 생성하기 전에 원본 인스턴스에서 네트워크 설정을 일반화(Generalize)하는 것입니다.

    2.1. 동적 IP(DHCP)로 전환

    • 리눅스 (Ubuntu/CentOS): 네트워크 설정 파일(etc/network/interfaces 또는 /etc/sysconfig/network-scripts/ifcfg-eth0)을 편집하여 IP 주소, 넷마스크, 게이트웨이 설정을 모두 제거하고 DHCP를 사용하도록 설정합니다.
      • BOOTPROTO=dhcp 또는 auto eth0 설정만 남깁니다.
    • 윈도우: 네트워크 어댑터 설정을 “자동으로 IP 주소 받기(Obtain an IP address automatically)”로 변경합니다.

    DHCP는 ‘동적 호스트 구성 프로토콜(Dynamic Host Configuration Protocol)’의 약자로, 컴퓨터와 같은 기기가 네트워크에 연결될 때 IP 주소와 기타 설정 정보를 자동으로 할당해주는 네트워크 프로토콜입니다. 사용자가 직접 IP 주소를 설정하는 번거로움 없이 네트워크에 쉽게 접속할 수 있게 해줍니다. 

    2.2. MAC 주소 종속 파일 제거 (리눅스)

    리눅스 시스템은 /etc/udev/rules.d/70-persistent-net.rules와 같은 파일에 MAC 주소와 NIC 이름(eth0, eth1 등)의 매핑 정보를 저장합니다.

    • 조치: 이미지 생성 전에 이 파일을 제거하거나 백업 후 삭제해야 합니다. 이렇게 하면 새 인스턴스가 부팅될 때 새로운 MAC 주소에 맞춰 NIC를 재구성하고 DHCP를 통해 새 IP를 요청합니다.

    2.3. 호스트 이름 초기화

    동일한 호스트 이름도 충돌의 원인이 될 수 있습니다. /etc/hostname (리눅스) 또는 시스템 속성(윈도우)에서 호스트 이름을 일반적인 이름으로 초기화하거나, 클라우드 환경에서 자동으로 할당받도록 설정합니다.


    3. 해결 전략 2: 복원 후 인스턴스에서 수동 수정 (사후 조치)

    이미 충돌이 발생하여 인스턴스에 접근조차 어렵다면, 콘솔이나 임시 접근 수단을 통해 네트워크 설정을 강제로 수정해야 합니다.

    3.1. AWS 및 GCP 메타데이터 서비스 활용

    클라우드 콘솔을 통해 인스턴스의 네트워크 설정을 확인하고 수정합니다.

    • AWS (AMI 복원):
      1. 인스턴스를 시작한 후 VPC 콘솔에서 해당 인스턴스에 할당된 새로운 사설 IP 주소를 확인합니다.
      2. EC2 Serial Console 또는 임시로 연결된 보조 NIC를 통해 인스턴스에 접근합니다.
      3. 운영체제 내부의 네트워크 설정 파일을 열어, 이전 IP 대신 DHCP를 사용하도록 설정하거나, 클라우드 콘솔에서 확인한 새로운 사설 IP 주소로 강제로 변경합니다.
    • GCP (Snapshot 복원): GCP는 인스턴스 생성 시 새로운 IP를 할당하므로, 충돌은 주로 정적 IP 설정 때문에 발생합니다.
      1. GCP Serial Console을 통해 VM에 접근합니다.
      2. 네트워크 설정 파일(ifcfg-eth0 등)을 열어 정적 IP 설정을 삭제하고 DHCP로 전환합니다.
      3. systemctl restart network (RHEL/CentOS 계열) 또는 netplan apply (Ubuntu 계열)를 실행하여 네트워크 서비스를 재시작합니다.

    3.2. 윈도우 시스프렙(Sysprep)의 중요성

    윈도우 서버 이미지를 복원할 때는 반드시 Microsoft의 Sysprep (System Preparation) 도구를 사용해야 합니다.

    • 역할: Sysprep은 시스템 고유 정보(SID, MAC 주소 캐시, 드라이버 종속성 등)를 제거하고 시스템을 일반화 상태(Generalized State)로 되돌립니다.
    • 조치: 이미지를 생성하기 전에 원본 윈도우 인스턴스에서 Sysprep을 실행하고 Generalize 옵션을 선택해야, 새 인스턴스가 부팅될 때 마치 처음 설치된 것처럼 새로운 네트워크 설정 및 SID를 생성하여 IP 충돌을 방지합니다.

    Disclaimer: 본 블로그의 정보는 개인의 단순 참고 및 기록용으로 작성된 것이며, 개인적인 조사와 생각을 담은 내용이기에 오류가 있거나 편향된 내용이 있을 수 있습니다.