Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 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




존재하지 않는 IP 주소에 대한 Dns.GetHostByAddress/gethostbyaddr/GetNameInfoW 실행이 느리다면? - 두 번째 이야기

지난 글에서,

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

빼 먹은 내용이 좀 있군요. ^^

우선, "Disable NetBIOS over TCP/IP"로 NetBIOS 서비스를 안 쓰도록 설정하면 어떤 문제점이 있을까요? 당연히, 기존에는 Dns.GetHostByAddress로 값을 반환하던 내부 네트워크의 컴퓨터 이름들이 IP 주소에 대해 풀이가 안 됩니다.

만약, 이 상태에서도 내부 네트워크 컴퓨터에 대한 이름 풀이를 하고 싶다면 HOSTS 파일에 수작업으로 등록하거나 내부 DNS 서버를 운영해 Reverse Lookup Zone을 만들어야 합니다.




그나저나... 이것 말고 재미있는 현상이 하나 더 있습니다. 이전 글에서 Dns.GetHostByAddress가 약 4.5초 걸린다고 했었는데요.

2019-03-20 오후 2:45:41
2019-03-20 오후 2:45:46, 4549.9928,

이 상태에서 "Disable NetBIOS over TCP/IP"를 설정해 DNS 쿼리 한번만 발생하게 만들면 저 결과가 40ms 정도가 됩니다. 그런데, 존재하지 않는 IP에 대해서는 그렇게 빠르게 끝나는 반면, 오히려 이번에는 존재하는 내부 IP에 대해 800ms 정도의 시간이 걸립니다. 물론 그렇다고 해서 (Disable NetBIOS over TCP/IP 상태이므로) 이름 풀이가 된 것도 아닙니다. 도대체 왜 이런 걸까요? ^^;

존재하는 IP에 대해서 800ms 정도가 나온 시스템의 경우, 마찬가지로 netsh trace를 걸어봤더니 이번에는 DNS 쿼리에 이어 다음과 같이 LLMNR 쿼리가 이어졌습니다.

67  ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet
68  ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet
69  ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet
100 ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet
101 ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet
102 ... 192.168.137.1   224.0.0.252 LLMNR   LLMNR:QueryId = 0x5F9, Standard, Query  for 26.0.168.192.in-addr.arpa of type PTR on class Internet

그렇습니다, 저 쿼리가 문제입니다. 이 문제를 해결하려면, 역시나 LLMNR 서비스를 비활성화시켜야 하는데 이 방법에 대해서는 다음의 글에 잘 나와 있습니다.

Disable LLMNR Netbios 
; http://www.pciqsatalk.com/2016/03/disable-lmnr-netbios.html

Link-Local Multicast Name Resolution (LLMNR) - LLMNR is a protocol enabled by default that allows both IPv6 and IPv4 hosts to perform name resolution for the names of neighboring computers without requiring a DNS server or DNS client configuration


정리하면, gpedit.msc를 실행해 Local Computer Policy / Computer Configuration / Administrative Templates / Network / DNS Client 노드로 이동한 후 "Turn Off Multicast Name Resolution" 설정을 "Enabled"로 바꾸면 됩니다.

disable_llmnr_1.jpg




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







[최초 등록일: ]
[최종 수정일: 3/25/2019]

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

비밀번호

댓글 작성자
 



2021-10-25 12시00분
TechnitiumSoftware/DnsServer
; https://github.com/TechnitiumSoftware/DnsServer
정성태

... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...
NoWriterDateCnt.TitleFile(s)
611정성태10/31/200822167오류 유형: 62. WPF - Visual Studio 2008 비정상 종료
610정성태10/24/200824682Team Foundation Server: 26. TFS 2008 SP1 + SQL Server 2008 설치
609정성태10/24/200828774.NET Framework: 107. WPF - RadioButton 데이터 바인딩 해제 현상파일 다운로드2
608정성태10/23/200822899오류 유형: 61. TFS 연결 오류: TF31003, TF30331 오류
607정성태10/18/200821120Windows: 32. 자동 실행 경로에 ".." 가 포함된 경우
606정성태10/18/200823177.NET Framework: 106. WCF - 다중 서비스 호스트파일 다운로드1
605정성태10/18/200826670.NET Framework: 105. WPF - 닫기 버튼을 없애려면.
604정성태10/18/200827124오류 유형: 60. System.Management.ManagementException - Generic failure [1]
602정성태10/15/200829266오류 유형: 59. WPF - XAML 로딩 시 Visual Studio 비정상 종료 [1]
600정성태10/9/200833887디버깅 기술: 18. TFS Team Build + Source Server = 소스 코드 디버깅 [3]
603정성태10/15/200825780    답변글 디버깅 기술: 18.1. 소스 서버 구성, 그 외의 이야기
599정성태10/5/200831415디버깅 기술: 17. TFS Team Build + Symbol Server [1]
598정성태10/3/200821539VS.NET IDE: 57. VS.NET 2008 - 다중 프로젝트에서 단일 SNK를 사용하는 방법
597정성태10/2/200820290Team Foundation Server: 25. VSTS 2008의 Build Explorer
596정성태10/2/200827048오류 유형: 58. WPF : 드롭다운 유형의 ComboBox가 펼쳐지지 않는 문제
595정성태10/1/200834728디버깅 기술: 16. Watson Bucket 정보를 이용한 CLR 응용 프로그램 예외 분석 [2]
594정성태9/22/200822610.NET Framework: 104. Win32Exception 클래스 소개
591정성태7/24/200819290오류 유형: 57. VS.NET 2008 TFC - 체크인 시에 비프 음과 함께 정지되는 현상
592정성태7/28/200819279    답변글 오류 유형: 57.1. VS.NET 2008 TFC - 체크인 시에 비프 음과 함께 정지되는 현상 [1]
590정성태7/20/200825142.NET Framework: 103. WPF - ControlTemplate을 코드에서 다뤄보기 [1]
589정성태6/17/200821705.NET Framework: 102. COM 개체의 이벤트를 구독하는 코드 제작 [1]
588정성태6/13/200823670VC++: 35. COM 이벤트에서 반환값을 가진 콜백 정의
587정성태6/10/200828292VS.NET IDE: 56. C#에서 아쉬운 __DATE__, __TIME__ 매크로 [2]
586정성태6/4/200825917오류 유형: 56. WPF 디자이너 - The string was not recognized as a valid DateTime [2]
585정성태6/4/200834129.NET Framework: 101. WPF - ActiveX 컨트롤 호스팅하는 방법 [2]
582정성태5/16/200825993오류 유형: 55. Windowless ActiveX controls are not supported
... 166  167  168  169  170  171  172  173  174  175  176  [177]  178  179  180  ...