Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 6개 있습니다.)
.NET Framework: 221. Cache 영향을 받지 않는 DNS 이름 풀이
; https://www.sysnet.pe.kr/2/0/1069

.NET Framework: 264. 다중 LAN 카드 환경에서 Dns.GetHostAddresses(local)가 반환해 주는 IP의 우선순위는 어떻게 될까요?
; https://www.sysnet.pe.kr/2/0/1169

Windows: 154. PowerShell - Zone 별로 DNS 레코드 유형 정보 조회
; https://www.sysnet.pe.kr/2/0/11795

개발 환경 구성: 434. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면?
; https://www.sysnet.pe.kr/2/0/11852

개발 환경 구성: 435. 존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/11853

개발 환경 구성: 646. HOSTS 파일 변경 시 Edge 브라우저에 반영하는 방법
; https://www.sysnet.pe.kr/2/0/13089




다중 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..." 메뉴를 선택할 수 있습니다.

apdater_priority_1.png

그럼 "Adapters and Bindings" 탭에서 우선 순위를 확인할 수 있는데요.

apdater_priority_2.png

오~~~ ipconfig의 결과가 여기서 나오는 순서와 동일하다는 것을 알 수 있습니다. 테스트 삼아서... 순서를 "Wireless Network Connection"을 상위로 옮겨 볼까요?

이제 다시 GetHostAddresses를 다시 호출해 보면, IP 풀이가 이전과 비교해서 역순으로 되었음을 확인할 수 있습니다.

IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName()); 

ipList[0] == 192.168.10.132
ipList[1] == 192.168.50.30

문제 해결되었군요. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/21/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2011-11-10 01시08분
성태님의 확인정신! 본받을만합니다~
Seil Jung
2011-11-10 01시35분
'확인'이 이렇게 하나씩 쌓이면 나중에 또 다른 '확인'으로 이어지기 때문에... ^^ 재미있는 것 같습니다.
정성태
2011-11-11 02시30분
[zextor] NIC 이 많을 때 디버깅할려면 위에 언급하신 NIC 순위랑 route table 에 metric 이더군요 ^^
[guest]
2011-11-12 07시07분
그렇군요. route 테이블의 우선순위에도 반영이 되는 군요. ^^
정성태

... 121  122  123  124  125  126  127  128  129  130  131  132  133  [134]  135  ...
NoWriterDateCnt.TitleFile(s)
1736정성태8/19/201426861VC++: 79. [부연] CAS Lock 알고리즘은 과연 빠른가? [2]파일 다운로드1
1735정성태8/19/201419366.NET Framework: 455. 닷넷 사용자 정의 예외 클래스의 최소 구현 코드 - 두 번째 이야기
1734정성태8/13/201421103오류 유형: 237. Windows Media Player cannot access the file. The file might be in use, you might not have access to the computer where the file is stored, or your proxy settings might not be correct.
1733정성태8/13/201427365.NET Framework: 454. EmptyWorkingSet Win32 API를 사용하는 C# 예제파일 다운로드1
1732정성태8/13/201435692Windows: 99. INetCache 폴더가 다르게 보이는 이유
1731정성태8/11/201428135개발 환경 구성: 235. 점(.)으로 시작하는 파일명을 탐색기에서 만드는 방법
1730정성태8/11/201423343개발 환경 구성: 234. Royal TS의 터미널(Terminal) 연결에서 한글이 깨지는 현상 해결 방법
1729정성태8/11/201419330오류 유형: 236. SqlConnection - The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.
1728정성태8/8/201431560.NET Framework: 453. C# - 오피스 파워포인트(Powerpoint) 파일을 WinForm에서 보는 방법파일 다운로드1
1727정성태8/6/201421758오류 유형: 235. SignalR 오류 메시지 - Counter 'Messages Bus Messages Published Total' does not exist in the specified Category. [2]
1726정성태8/6/201420594오류 유형: 234. IIS Express에서 COM+ 사용 시 SecurityException - "Requested registry access is not allowed" 발생
1725정성태8/6/201422546오류 유형: 233. Visual Studio 2013 Update3 적용 후 Microsoft.VisualStudio.Web.PageInspector.Runtime 모듈에 대한 FileNotFoundException 예외 발생
1724정성태8/5/201427382.NET Framework: 452. .NET System.Threading.Thread 개체에서 Native Thread Id를 구하는 방법 - 두 번째 이야기 [1]파일 다운로드1
1723정성태7/29/201459760개발 환경 구성: 233. DirectX 9 예제 프로젝트 빌드하는 방법 [3]파일 다운로드1
1722정성태7/25/201422107오류 유형: 232. IIS 500 Internal Server Error - NTFS 암호화된 폴더에 웹 애플리케이션이 위치한 경우
1721정성태7/24/201425412.NET Framework: 451. 함수형 프로그래밍 개념 - 리스트 해석(List Comprehension)과 순수 함수 [2]
1720정성태7/23/201423347개발 환경 구성: 232. C:\WINDOWS\system32\LogFiles\HTTPERR 폴더에 로그 파일을 남기지 않는 설정
1719정성태7/22/201427201Math: 13. 동전을 여러 더미로 나누는 경우의 수 세기(Partition Number) - 두 번째 이야기파일 다운로드1
1718정성태7/19/201436634Math: 12. HTML에서 수학 관련 기호/수식을 표현하기 위한 방법 - MathJax.js [4]
1716정성태7/17/201436312개발 환경 구성: 231. PC 용 무료 안드로이드 에뮬레이터 - genymotion
1715정성태7/13/201431438기타: 47. 운영체제 종료 후에도 USB 외장 하드의 전원이 꺼지지 않는 경우 [3]
1714정성태7/11/201421489VS.NET IDE: 92. Visual Studio 2013을 지원하는 IL Support 확장 도구
1713정성태7/11/201445287Windows: 98. 윈도우 시스템 디스크 용량 확보를 위한 "Package Cache" 폴더 이동 [1]
1712정성태7/10/201433825.NET Framework: 450. 영문 윈도우에서 C# 콘솔 프로그램의 유니코드 출력 방법 [3]
1711정성태7/10/201438798Windows: 97. cmd.exe 창에서 사용할 폰트를 추가하는 방법 [1]
1710정성태7/8/201431463개발 환경 구성: 230. 유니코드의 Surrogate Pair, Supplementary Characters가 뭘까요?파일 다운로드2
... 121  122  123  124  125  126  127  128  129  130  131  132  133  [134]  135  ...