~/network/concepts/ip-swap
IP 주소 & 할당

IP Swap

자산 IP 교체

IP Swap은 두 단말이 서로의 IP 주소를 맞바꾸는 작업이다. 장비 교체나 자리 이동 시 발생한다.

언뜻 자산 관리 시스템의 IP 필드 두 개만 바꾸는 것 같지만, 실제로는 세 개의 서로 다른 시스템을 함께 갱신해야 한다. IP는 단독으로 존재하는 값이 아니라 VLAN 서브넷에 종속되어 있고, 단말이 어느 VLAN에 속할지는 자산 DB가 아니라 인증 서버와 DHCP가 결정한다. 자산 DB는 그 매핑을 기록해 둔 것이다.

시스템역할교체 시 작업
자산 DB자산-IP-VLAN 매핑 기록IP / VLAN 값 스왑
DHCP 서버IP 할당scope 간 reservation 이동 (삭제 + 생성)
인증 서버 (ISE 등)인증 및 VLAN 할당Endpoint Identity Group 간 MAC 이동

자산 DB

역할 - "어떤 자산(MAC)이 어떤 IP를 쓰고, 그 IP가 어떤 VLAN 소속인지"에 대한 기준 정보(source of truth)를 보관한다.

교체 시 작업 - 두 레코드의 IP와 VLAN 값을 서로 맞바꾼다.

A: 10.78.126.157 / VLAN 562  ─┐   ┌─→  10.78.14.42  / VLAN 563
B: 10.78.14.42   / VLAN 563  ─┘   └─→  10.78.126.157 / VLAN 562

IP만 바꿀 수 없는 이유 - 10.78.126.x는 VLAN 562 대역, 10.78.14.x는 VLAN 563 대역이다. IP를 교환하면 그 IP가 속한 서브넷이 바뀌므로, 단말의 VLAN 소속도 반드시 함께 바뀐다. 두 장비가 같은 VLAN에 있었다면 단순 IP 교환으로 끝나지만, VLAN이 다르면 아래 두 시스템까지 연쇄적으로 건드려야 한다.

DHCP 서버 — IP 할당

역할 - 단말이 네트워크에 붙을때 IP를 할당해 내려주는 시스템이다. VLAN 서브넷마다 scope(주소 풀)가 하나씩 있고, 특정 단말에 항상 같은 IP를 주기 위해 scope 안에 MAC 기반 reservation(고정 할당)을 등록해 둔다.

VLAN 562 scope 안에 "MAC C0:C7:DB:... → 항상 10.78.126.157" 이라는 규칙이 들어 있는 형태다.

교체 시 작업 - reservation은 scope에 소속된 객체다. VLAN이 바뀌면 예약 값을 수정하는 것으로는 처리할 수 없고, 기존 scope에서 삭제한 뒤 새 scope에 새로 생성해야 한다.

scope삭제생성
VLAN 562 (10.78.126.0/x)A의 MAC → 10.78.126.157B의 MAC → 10.78.126.157
VLAN 563 (10.78.14.0/x)B의 MAC → 10.78.14.42A의 MAC → 10.78.14.42

같은 VLAN 안에서의 교체라면 예약에 걸린 MAC만 서로 바꾸면 되지만, VLAN 간 교체는 scope 경계를 넘기 때문에 삭제와 생성을 각각 수행한다.

  • 새 scope에 예약을 생성하지 않으면 단말은 자기 MAC의 예약이 없으므로, 지정된 IP가 아니라 남는 주소 중 임의의 것을 받는다.
  • 옛 scope의 예약을 삭제하지 않으면 그 예약이 교체 대상 IP를 계속 붙잡고 있으므로, 같은 IP를 받아야 할 반대편 단말의 할당과 충돌한다.

인증 서버 — VLAN 할당

역할 - MAB(MAC 기반 인증)를 사용하는 환경에서는 단말이 접속할 때 스위치나 WLC가 인증 서버에 질의하고, 서버가 그 MAC이 속한 Endpoint Identity Group을 보고 어떤 VLAN을 내려줄지 결정한다.

단말이 어느 VLAN에 속하는지는 스위치 포트에 지정된 VLAN이 아니라 인증 서버의 그룹 매핑이 결정한다. "v562 그룹에 속한 MAC에게는 VLAN 562를 할당" 같은 정책이 걸려 있고, 인증 결과와 함께 VLAN이 802.1X의 동적 VLAN 할당 형태로 내려간다.

교체 시 작업 - 두 MAC을 서로의 Endpoint 그룹으로 옮긴다. Cisco ISE라면 ERS(External RESTful Services) API 호출로 수행한다.

  • A의 MAC C0:C7:DB:23:7A:05 : v562 그룹 → v563 그룹
  • B의 MAC BC:D0:74:0F:CC:99 : v563 그룹 → v562 그룹

이 이동이 빠지면 곧바로 정합성이 깨진다. A의 그룹을 옮기지 않은 채 DHCP만 바꿨다면, A가 재인증할 때 인증 서버는 여전히 VLAN 562를 내려주는데 562 scope에는 A의 예약이 이미 삭제된 상태다. 결국 A는 예전 VLAN에서 엉뚱한 IP를 받거나 통신이 끊긴다.

반영 시점

세 시스템을 모두 갱신해도 단말에는 즉시 적용되지 않는다. 실제 반영은 재인증 시점에 일어난다.

  1. 단말이 재접속하거나, 인증 서버에서 CoA(Change of Authorization)로 재인증을 건다.
  2. 인증 서버가 새 Endpoint 그룹을 기준으로 새 VLAN을 할당한다.
  3. 단말이 새 VLAN에서 DHCP 요청을 보내고, 새 scope의 예약대로 교환된 IP를 받는다.

유선이라면 포트 재연결, 무선이라면 Wi-Fi 재연결 시점이 된다.

정합성

세 시스템은 각기 다른 서버이므로 하나의 DB 트랜잭션으로 묶을 수 없다. 어느 하나라도 실패하면 DB상 IP ≠ DHCP 예약 ≠ 인증 서버가 내려주는 VLAN 의 불일치가 남고, 이는 통신 장애나 IP 충돌로 이어진다.

누락된 작업증상
자산 DB만 갱신기록상의 IP만 교체되고 단말은 옛 IP를 그대로 쓴다. 이후 이 기록을 참조해 IP를 지정하거나 조회하는 작업에서 어긋난다.
DHCP 미반영새 VLAN에서 예약이 없어 임의 IP를 받고, 옛 scope의 잔여 예약이 충돌을 일으킨다.
인증 서버 미반영재인증 시 옛 VLAN을 할당받아 새 IP 대역과 어긋난다.

그래서 VLAN이 다른 IP 교체는 관리자의 명시적 동의를 받은 뒤 세 작업을 하나의 흐름으로 처리하는 것이 일반적이다.