다중 LAN 카드 환경에서 Dns.GetHostAddresses(local)가 반환해 주는 IP의 우선순위는 어떻게 될까요?
참고로 이 글은 다음의 Devpia 질문에 대한 답변 글입니다.
C# Dns 질문입니다.
; http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=141085&ref=141076
질문자가 마지막 자답을 하기 전의 덧글에 대한 알림 이메일을 퇴근 무렵에 읽어서, 집에 가서 답변해야겠다는 사이... 이미 자답이 달렸더군요. ^^; 음... 쪼끔 허탈하긴 했지만 ^^ 어쨌든 그래도 이런 시행착오는 많이들 알고 계시는 것이 좋을 것 같아서 같이 공유해 봅니다. ^^
참고로, 현장감(?)을 살리기위해 마지막 자답을 읽기 전인 것처럼 글을 썼습니다.
질문자의 문제는, 다음과 같은 코딩을 한 경우 무선랜 IP가 먼저 조회된다는 것입니다.
IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName());
ipList[0] == 무선랜 IP
ipList[1] == 유선랜 IP
혹시, 우리가 흔히 알고 있는 ipconfig 명령어도 Dns.GetHostAddresses의 반환 순서와 같지 않을까요?
확인을 위해, 유/무선 랜카드가 설치되어 있는 제 컴퓨터에서 ipconfig을 실행해 보면 다음과 같은 결과가 나옵니다.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : workgroup
IPv4 Address. . . . . . . . . . . : 192.168.50.30
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.50.1
Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 192.168.10.132
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.10.1
제 컴퓨터의 경우에는 유선랜이 상위이고, 무선랜 설정이 하위로 나오는데요. 이어서 GetHostAddresses 코드를 실행해 보니,
IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName());
ipList[0] == 192.168.50.30
ipList[1] == 192.168.10.132
아하~~~, 순서가 동일하군요. 자, 그럼 대충 GetHostAddresses가 무작위로 반환하는 것은 아님을 알 수 있습니다. 그리고, 여기서 떠 오르는 것 한 가지! ^^
네트워크 설정에 가서, "Alt" 키를 누르면 다음과 같이 "Advanced" / "Advanced Settings..." 메뉴를 선택할 수 있습니다.
그럼 "Adapters and Bindings" 탭에서 우선 순위를 확인할 수 있는데요.
오~~~ ipconfig의 결과가 여기서 나오는 순서와 동일하다는 것을 알 수 있습니다. 테스트 삼아서... 순서를 "Wireless Network Connection"을 상위로 옮겨 볼까요?
이제 다시 GetHostAddresses를 다시 호출해 보면, IP 풀이가 이전과 비교해서 역순으로 되었음을 확인할 수 있습니다.
IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName());
ipList[0] == 192.168.10.132
ipList[1] == 192.168.50.30
문제 해결되었군요. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]