Windows Server DNS에서 호스트 파일을 사용하여 특정 호스트 이름을 확인하도록하는 방법


18

[참고 :이 질문의 해결책은 제목이 나타내는 것과 거리가 멀어서 완벽합니다.]

에 작은 문제가 Windows Server 2003 DNS service있습니다. 내 회사에서, 나는 마이크로 소프트 DNS 서버를 (실행 해요 172.16.0.12(에 도메인 이름의 끝을 내 회사 인트라넷에 이름 확인을 위해) dev.nls. IP 172.16로 해결. . (다른 도메인 이름을 전달), 그리고 그것은 또한 DNS 전달자로 구성되어 예를 들어 * .google.com에, * .sf.net)에 Internet real DNS servers. 이 내부 DNS 서버는 외부 사용자에게 서비스를 제공하지 않습니다.

그리고 우리는 회사 방화벽 내 에서 메일 서버 ( 실제 인터넷 도메인을 위해 들어오는 메일을 제공 @nlscan.com)를 운영하고 있습니다.

  1. 172.16.0.10인트라넷 내에서 연결하여 .
  2. 인터넷 에 연결하여 mail.nlscan.com(로 확인 202.101.116.9)

그 주 172.16.0.10202.101.116.9동일한 물리적 시스템이 아니다. 202한 포트의 포트 포워딩 할 방화벽 기계 25110인트라넷 주소를 172.16.0.10.

이제 내 질문 : 회사 LAN 내부의 사용자가 확인하고 싶다면 mail.nlscan.com로 확인하십시오 202.101.116.9. 메일 트래픽이 방화벽 시스템으로 이동 한 다음로 반송되기 때문에 정확하고 실행 가능하지만 좋지 않습니다 172.16.0.10. internal DNS server이름을 가로 채서 mail.nlscan.com172.16.0.10으로 해결할 수 있기를 바랍니다 . 따라서 "hosts"파일에 항목을 작성 172.16.0.12하여이 작업을 수행 할 수 있기를 바랍니다 . 그러나이 Microsoft DNS server"호스트"파일을 어떻게 인식 할 수 있습니까?

인트라넷 사용자가 172.16.0.10내 메일 서버에 액세스 하지 않는 이유는 무엇입니까? 나는 그것이 불편하다고 말해야합니다. 사용자 (직원)가 랩톱에서 일하고, 낮에는 사무실에서, 밤에는 집에서 일한다고 가정합니다. 집에있을 때는 사용할 수 없습니다 172.16.0.10.

도메인 의 네임 서버 가 ISP에 있고 nlscan.com의 다른 호스트 이름 및 하위 도메인을 해결할 책임이 있기 때문에 nlscan.com내부에 영역을 생성하는 DNS server것은 불가능 nlscan.com합니다.

[편집하다]

WesleyDavid제안한 대로 간단히 이름이 지정된 영역을 만들고 해당 영역에 이름 mailserver.nlscan.com이없는 A 레코드를 배치하는 솔루션을 따릅니다 . 시간은 이것이 잘 작동 함을 증명합니다.


이것이 내가하는 일이기 때문에 +1입니다. 내 기본 DNS 확인자가 mail.example.com을 192.168로 가리 키지 만 ... 내 기본 DNS가 다른 사람을 위해 mail.example.com을 인터넷 IP로 가리 키지 만. 이것에 대한 단점을 듣고 싶습니다.
Cory J

안녕, 코리, 사실이 맞지 않을 까봐 두려운 데 joeqwerty와 마찬가지로이 주제에서 나중에 설명합니다. hosts 파일은 DNS 서버 구성 요소가 아닌 DNS 클라이언트 확인 구성 요소에 의해 사용됩니다. 따라서 172.16.0.12에서 호스트를 편집해도 Microsoft DNS 서비스에 도움이되지 않습니다.
Jimm Chen 1

Jun, 당신은 다른 사람들이 그 해결책을 알 수 있도록 대답을 수락 된 것으로 표시 할 수 있습니다. 그것이 당신을 위해 일하게되어 기쁘다! =)
웨슬리

답변:


12

이 게시물의 후반 부분이 잘못되었습니다. 웹에서 읽은 내용 (웹에있는 경우 사실이어야합니다!)을 기반으로 인상을 받았습니다. 캐시를 만들기위한 Windows DNS 서버 서비스 작업 중 일부는 호스트 파일도로드하는 것이 었습니다 로컬 영역 데이터와 함께 캐시합니다. 나는 주변을 수색했고 이것에 대한 확실한 증거를 찾지 못했습니다. 본인의 Server 2008 R2 컴퓨터에서 이론을 테스트 한 결과 호스트 파일이 DNS 서버의 캐시를 작성하는 데 사용되지 않았 음을 발견했습니다.

그러나 Massimo보다 약간 더 우아한 솔루션이 있다고 생각합니다. 전체 nlscan.com 영역에 대해 권한 영역을 작성하는 대신 mailserver.nlscan.com이라는 영역을 작성하고 해당 영역에 이름없는 A 레코드를 배치하십시오. 이름이없는 A 레코드는 영역 자체와 이름이 같으며 원하는 IP 주소를 제공 할 수 있습니다. nlscan.com 및 nlscan.com 아래의 다른 모든 도메인은 공용 DNS로 확인됩니다.

방금 내 Server 2008 R2 DNS 서버에서이 테스트를 수행하여 공개 DNS 서버를 통해 친구의 웹 사이트 (nessus.nl)를 확인할 수 있었지만 특정 하위 도메인 (blog.nessus.nl)은 Apple.com IP 주소로 확인되었습니다. . 그것을 시도하고 그것이 당신을 위해 작동하는지 확인하십시오.

오래되고 잘못된 게시물이 시작됩니다.

내 이해가 정확하면 (편집 : 그렇지 않은 경우) DNS 캐시가 Server 2003 컴퓨터에 구축되면 호스트 파일과 영역 데이터에서 항목을 가져옵니다. 172.16.0.10 mailserver.nlscan.comServer 2003 컴퓨터의 호스트 파일에 넣으면 문제가 해결됩니다. 호스트 파일을 변경 한 후 DNS 서비스를 다시 시작하십시오.

모든 Windows 시스템 (특히 Server 2003 DNS 시스템)에서 ipconfig / displaydns를 사용하여 호스트 파일 항목을보십시오. 또한 부정적인 응답은 클라이언트에 캐시되므로 실험중인 클라이언트에서 항상 ipconfig / flushdns를 실행하십시오. 그렇지 않으면 왜 클라이언트가 zone / hosts 파일에 방금 입력 한 이름을 확인할 수 없는지 궁금해 할 때 다양한 하드 객체에 대해 자신을 학대하게됩니다. =)

이것을 시도하고 실패 했습니까?


2
Windows Server 2003의 DNS는 파일을 사용하여 이름을 확인하지 않습니다hosts . 자체 데이터, 전달자 또는 재귀 쿼리를 사용하지만 로컬 파일 은 사용 하지 않습니다hosts .
Massimo

@Massimo 당신이 맞아요! 나는 그것을 테스트하고 실패했다. 그러나 나는 당신의 제안을 받아 조금 더 우아하게 단순화했습니다. 네가 생각하는 것을 말해줘.
웨슬리

downvote를 제거 :-)
Massimo

@Massimo TY. 그리고 이것을 스스로 시험해 보도록 자극했습니다. 나는 새로운 것을 배웠다. 항상 재미있다. =)
웨슬리

1
Dunno가 다시 찌르는 이유는 내가 정기적으로 겪는 문제에 대한 깔끔한 해결책 인 것처럼 보이며 전체 (공용) 인터넷 영역에 그림자를 설정하는 것보다 훨씬 간단합니다.
Helvick

3

내부 사용자가 리소스에 대한 내부 IP를 받도록하는 반면 외부 사용자는 동일한 리소스에 대한 외부 IP를 갖기를 원합니다. 이를 분할 뇌 DNS라고합니다. 인터넷에 연결된 하나의 DNS 서버와 로컬 사용자를위한 다른 내부 DNS 서버가 있습니다. 내부 사용자는 네트워크에서 DHCP를 사용하고 내부 DNS 서버를 알리는 DHCP 서버를 사용합니다. 사용자가 사무실을 떠나있는 경우 DHCP 서버는 외부 영역에 대해서만 알고있는 DNS 서버에 사용자를 할당합니다.

실제로 내부 영역을 호스팅하지 않고 분할 브레인 DNS를 원하는 것 같습니다. 사용자가 집에서 일할 때 내부 IP를 얻지 않기를 원하기 때문에 내부에서 영역을 호스팅하는 것은 문제가되지만 집에있을 때는 다른 DHCP 서버에서 IP를 가져 오기 때문에 의미가 없습니다. 내부 DNS 서버를 알리지 않습니다. ISP의 DNS 서버를 광고하여 외부 영역에 대해서만 알고 외부 IP 주소 만 제공합니다.

마지막으로, DNS 서버가 DNS 서버의 호스트 파일에서 레코드를 제공하도록 요청하는 데 성공했다고 생각하지 않습니다. DNS 서버는 영역 파일에서 레코드를 제공합니다. 해당 DNS 서버의 로컬 호스트 파일은 해당 시스템의 조회에만 적용되는 로컬 클라이언트 확인 캐시로 항목을 전파합니다. 이러한 항목은 다른 메커니즘 인 DNS 서버에서 제공하지 않습니다.

스플릿 브레인 DNS를 읽으십시오-이 상황을 처리하는 일반적인 방법입니다.


"하지만 그건 말이 안 돼요"-죄송합니다. 현재 회사 직원이 mail.nlscan.com을 202.101.116.9로 올바르게 해결하려고하지만 집에서 somehomt.dev.nls를 해결할 것으로 기대하지는 않습니다 (VPN 서버를 설정하지 않는 한). 스플릿 브레인 DNS를 지적 해 주셔서 감사합니다. 회사 인트라넷에서 mail.nlscan.com이라는 이름 만 조정하고 싶기 때문에 분할 DNS를 설정하는 것이 그리 편리하지 않을 수 있습니다.
Jimm Chen

2

Wes : 누가 당신을 괴롭히는 지 모르겠지만 hosts 파일의 사용을 분명히하고 싶습니다 : hosts 파일은 DNS 서버 구성 요소가 아닌 DNS 클라이언트 확인 구성 요소에 의해 사용됩니다. DNS 서버의 호스트 파일에있는 항목은 DNS 서버가 DNS 클라이언트 역할을 할 때 사용됩니다. 예를 들어, W2K8 DNS 서버의 호스트 파일에 다음과 같은 항목이 있습니다.

1.1.1.1 test.test.com

서버 캐시가 아닌 DNS 서버의 DNS 클라이언트 캐시에로드됩니다. DNS 서버에서 test.test.com을 ping하면 예상대로 1.1.1.1이 반환됩니다. 그런 다음 DNS 서버에서 nslookup을 실행하고 test.test.com을 요청하면 DNS 서버의 DNS 클라이언트 구성 요소가 DNS 서버 구성 요소에 해결을 요청하는 것처럼 test.test.com에 등록 된 올바른 공개 IP 주소를 반환합니다. (다른 DNS 클라이언트와 같은 방식). 머리를 감싸는 것은 혼란스러운 생각이지만 DNS 서버는 DNS 클라이언트이며 DNS 클라이언트 구성 요소가 작동하면 다른 DNS 클라이언트와 마찬가지로 DNS 클라이언트 캐시의 역할을 수행합니다. -호스트 파일에서로드합니다. DNS 클라이언트 구성 요소가 DNS 서버 구성 요소를 사용하는 경우에만 (구성된 DNS 서버를 조회하여)

DNS 서버의 DNS 클라이언트 캐시는 DNS 서버 구성 요소가 아닌 서버 자체 (DNS 클라이언트)에 의해 사용되므로 DNS 서버를 쿼리하는 모든 DNS 클라이언트는 항상 "실제"응답을 받고 호스트 항목은받지 않습니다.


당신의 테스트와 결과는 오늘 오후에 나의 탐구를 정확하게 반영했습니다. 어떤 이유로 든 DNS 서버 서비스가 호스트 파일을 사용하여 리졸버뿐만 아니라 캐시를 시드한다는 것을 읽었습니다. 우리를 새비지와 하인 먼이라고 부르십시오! =)
웨슬리

야만인과 Hyneman, 굉장하다! 그러나 누구입니까? 해마 수염을 키우고 베레모를 입어야한다고 말하지 마십시오. ;)
joeqwerty

1

내가 아는 한 Windows DNS가 hosts파일을 사용하여 이름 확인을 처리 할 수있는 방법은 없습니다 . 그러나 이것은 필요하지 않습니다.

퍼블릭 인터넷 영역과 동일한 이름으로 내부 DNS 서버에 영역을 안전하게 만들 수 있습니다. 일어날 일은 서버가 해당 영역의 권한있는 이름 서버로 요청을 전달하는 대신 자체 데이터를 사용하여 해당 영역의 이름 요청을 처리한다는 것입니다. 내부 클라이언트가 "실제"공용 영역을 사용할 수 없게하여 "가짜"데이터로 응답하기 때문에 "섀도 잉"이라고도합니다.

주의해야 할 것은 필요한 경우 공용 IP 주소를 사용하더라도이 내부 영역에 필요한 모든 이름을 채워야한다는 것입니다. 그렇지 않으면 내부 클라이언트가 해당 이름을 확인할 수 없습니다.

공개 영역이 다음과 같다고 가정 해 보겠습니다.

www.nlscan.com    202.101.116.8
mail.nlscan.com   202.101.116.9

내부 클라이언트가 mail.nlscan.com을 172.16.0.10으로 해석하기를 원합니다. 내부 DNS 서버에 "nlscan.com"영역을 만들고 "mail.nlscan.com-> 172.16.0.10"을 넣습니다.
그러나 서버는 해당 영역에 대해 권한이 있다고 생각하기 때문에 내부 클라이언트가 "www.nlscan.com"을 확인할 수 없으므로 해당 호스트에 대해 알지 못하므로 쿼리에 응답하지 않습니다. 누구에게도 전달하지 않습니다.
이 문제를 해결하려면 "www.nlscan.com"도 내부 영역에 배치해야합니다. 클라이언트가 그러한 방식으로 액세스하려는 경우 실제 공개 IP 주소를 가리 키거나 "www"인 경우 "mail.nlscan.com"에 사용하는 것과 동일한 리디렉션을 사용할 수 있습니다 방화벽에서 일부 내부 서버로 전달되고 있습니다.
영역의 모든 이름에도 동일한 원칙이 적용됩니다.

이 설정은 내부 "그림자"영역이 인터넷에서 절대 표시되지 않기 때문에 외부 클라이언트 나 네트워크 외부에있는 사용자에게는 영향을 미치지 않습니다 .


전체 nlscan.com 도메인에 대해 권한 영역을 만들 필요는 없다고 생각합니다. mailserver.nlscan.com이라는 하위 도메인을 만든 다음 이름없는 A 레코드를 만들 수 있다고 생각합니다. 자세한 내용은 내 게시물을 참조하십시오.
웨슬리

그렇습니다. 단일 호스트 만 리디렉션해야하는 경우 실제로 더 간단 합니다. 일부를 리디렉션해야하는 경우 전체 영역이 더 좋습니다.
Massimo

nlscan.com을 DNS 서버의 조건부 전달자 폴더에 추가

1

호스트 파일을 신경 쓰지 말고 DNS mail.domain.com에 새 영역을 추가하고 영역에 호스트를 추가하십시오. 이름을 비워 두십시오 (영역 이름이 자동으로 사용됨). 로컬 메일 서버의 IP 주소를 입력하십시오. ;-)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.