Windows Server DNS에서 호스트 파일을 사용하여 특정 호스트 이름을 확인하도록하는 방법 * .sf.net)에 Internet real DNS

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

에 작은 문제가 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 레코드를 배치하는 솔루션을 따릅니다 . 시간은 이것이 잘 작동 함을 증명합니다.



답변

이 게시물의 후반 부분이 잘못되었습니다. 웹에서 읽은 내용 (웹에있는 경우 사실이어야합니다!)을 기반으로 인상을 받았습니다. 캐시를 만들기위한 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 파일에 방금 입력 한 이름을 확인할 수 없는지 궁금해 할 때 다양한 하드 객체에 대해 자신을 학대하게됩니다. =)

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


답변

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

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

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

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


답변

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 클라이언트는 항상 “실제”응답을 받고 호스트 항목은받지 않습니다.


답변

내가 아는 한 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”에 사용하는 것과 동일한 리디렉션을 사용할 수 있습니다 방화벽에서 일부 내부 서버로 전달되고 있습니다.
영역의 모든 이름에도 동일한 원칙이 적용됩니다.

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


답변

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


답변