2012년 12월 7일 금요일

IP 주소 (ARP Conflict) 충돌에 대한 이야기

네트워크 안에서 한번쯤 IP 충돌을 경험해 본 사람이 있을것이다. 많은 경우는 같은 IP 를 서로 설정해서 사용한 경우이다.

그런데 특정 시스템 접속시 연결이 잘 되다가도 가끔 연결이 안되는 이상한 현상이 발생하였다. 그렇다고 인터페이스에 같은 IP 설정은 더더욱 아니었다. 맥 인증 장비에서 IP 충돌이 난다는 이슈를 접하고 해당 네트워크 대역에 대해서 ARP 스캐닝을 해 보았다.

ARP 스캐닝에는 arp-scan 을 이용하였으며,

# apt-get install arp-scan

으로 쉽게 설치가 가능하다.

이더넷 인터페이스를 지정하기 위하여 -I 를 사용하였고 특정 대역을 넣어주었다. -l 옵션을 사용하면 인터페이스에 설정된 로컬 네트워크 주소를 사용한다. 만약 서브넷이 255.255.0.0 이었다면 B 클래스 대상으로 스캐닝이 될 것이다.

# arp-scan -I eth0 192.168.11.0/24
ioctl: Cannot assign requested address
WARNING: Could not obtain IP address for interface eth0. Using 0.0.0.0 for
the source address, which is probably not what you want.
Either configure eth0 with an IP address, or manually specify the address
with the --arpspa option.
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.6 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.11.39   00:14:22:xx:xx:xx   Dell Inc.
192.168.11.52   00:14:22:xx:xx:xx   Dell Inc.
192.168.11.91   00:04:75:xx:xx:xx  3 Com Corporation
192.168.11.110  00:25:64:xx:xx:xx   (Unknown)
192.168.11.94   08:00:20:xx:xx:xx  SUN MICROSYSTEMS INC.
192.168.11.125  00:1e:c9:xx:xx:xx   (Unknown)
192.168.11.207  00:22:19:xx:xx:xx (Unknown)
192.168.11.208  xx:xx:xx:fa:a8:0d   (Unknown)
192.168.11.209  d4:be:d9:xx:xx:xx   (Unknown)
192.168.11.210  xx:xx:xx:fa:a8:0d   (Unknown)
192.168.11.210 xx:xx:xx:fa:10:1c   (Unknown) (DUP: 2)
192.168.11.214  78:2b:cb:xx:xx:xx (Unknown)
192.168.11.215  78:2b:cb:xx:xx:xx  (Unknown)
[삭제 - 일부는 xx:xx:xx 처리 ]

38 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.6: 256 hosts scanned in 1.334 seconds (191.90 hosts/sec).  38 responded

결과와 같이 192.168.11.210 이 2개의 맥 주소를 가지고 있는 것으로 나타난다. fa:a8:0d 와 fa:10:1c 이다. 192.168.11.208 번에 할당된 맥 주소는 fa:a8:0d 이다. 즉, 210 번 IP 에 fa:a8:0d 를 가져서는 안되는 것이다. 이러니 어떤 경우에는 접속이 되다가도 갑자기 끊어져서 접속이 안된다든지의 상황이 발생하는 것이다.

192.168.11.208 ,210 인터페이스를 살펴보았으나 IP 중복 설정은 보이지 않는다. 그럼 도대체 어디서 이게 나타나는 것인가? 일단 208 번이 의심된다. 208 번에서 해당 맥을 가지고 있는 것으로 추정되고 시스템 전체에서 해당 IP 설정이 없는지 찾아보기로 하였다.

# find / -exec grep "11.210" {} \;

11.210 번 문자열을 grep 으로 찾아보았는데, 하나 나타나는 것이 있다. keepalived 설정 파일이었다. 이때 바로 생각이 나는 것이었다. 해당 장비를 사용하기전 로드발랜싱 테스트를 위하여 잠깐 설정을 한적이 있었고, 잊고 있었던 것이다.

/etc/keepalived/keepalived.conf

해당 파일을 살펴보니 역시나 192.168.11.210 IP 가 설정되어 있었다.

해당 데몬을 disable 하고서는 다시 정상으로 돌아왔다. 역시나, 분명 어딘가에는 문제점이 존재한다는 사실!

IP 충돌(ARP Conflict)의 많은 경우는 직접 IP 를 동일하게 설정하거나 또는 필자가 경험했던 것과 같이 관련 소프트에어의 설정에 의한 것 그리고 ARP 테이블에서 지워지지 않고 잘못된 맥 정보를 가지고 있거나 중간 단계의 장비에 의한 문제정도로 생각된다.

/Rigel

[참고]
1. IPv4 Address Conflict Detection
http://tools.ietf.org/html/rfc5227

댓글 없음:

댓글 쓰기