자신의 루트 DNS 서버를 만들 수 있습니까?


14

궁금해. 나는 ISP와 인터넷 중개인이 기본적으로 모든 DNS 요청을 기록하고 추적하는 방법에 대해 계속 읽으며 기본적으로 많은 로그에 빵 부스러기를 남기고 광고 목적으로 DNS 하이재킹을 허용합니다 (나는 Cox Communications를보고 있습니다!).

개인 정보 보호 / 보안을위한 다른 방법에 관계없이, 나는 자신의 로컬 네트워크에서 DNS 서버를 실행할 수 있는지 알고 싶습니다. _ 실제로 루트 DNS 서버의 영역 정보 (.com, .net)가 있습니다. org) 도메인.

기본적으로 도메인의 컴퓨터를 매핑하는 DNS를 설정할 수는 있지만 기본적으로 루트 DNS 정보의 복사 / 전송을 자체 DNS 서버에 저장하도록 요청하여 DNS를 위해 인터넷으로 나가는 것을 우회 할 수 있습니다 웹 브라우징을위한 정보?

나는 분명해지기를 바랍니다. 내 DNS에 내부 네트워크에 대한 정보 만 갖고 싶지는 않습니다. 큰 인터넷 DNS 서버에 중복 된 정보를 갖고 싶지만 해당 정보를 DNS 서버에 로컬로 추가하고 싶습니다.

BGP Zone 전송과 같은 것이 있지만 DNS를위한 것이 있습니까?

업데이트 : 기본적으로 외부 DNS 체인에서 로컬 캐시로이 정보를 "스크래핑"하여 필요할 때 준비가되어 도메인 레코드를 명시 적으로 요청할 때 캐싱 할 수있는 제품 / OSS 소프트웨어가 있습니까?

답변:


12

DNS는 의도적으로 계층 적 이름 지정 시스템을 사용하므로 모든 영역의 정식 사본을 가질 수 없습니다.

루트 서버는 문제의 최상위 도메인 (TLD)을 담당하는 서버를 식별 할 권한이 있습니다. 예를 들어, 해결 www.example.net하면 먼저 루트 서버를 쿼리하여에 대한 권한있는 네임 서버를 식별합니다 .net. .net네임 서버에 대한 권위있는 네임 서버를 식별합니다 example.net다음에 대한 기록을 반환합니다 www.example.net.

모든 영역의 사본을 다운로드 할 수는 없습니다. 그러나 로컬 캐싱 이름 서버를 실행할 수 있습니다. 캐싱 이름 서버는 해결 된 모든 레코드의 로컬 사본을 제공하며 레코드에 지정된 TTL (Time To Live)을 사용하여 만료됩니다. 필자의 설명은 DNS 프로토콜에 대한 간단한 설명이며, Request For Comments의 정의를 읽고 자세히 살펴볼 수 있습니다 .

로컬 캐시를 실행하여 NXDOMAIN 하이재킹 을 피할 수는 있지만 모든 DNS 확인 트래픽은 암호화되지 않은 인터넷 연결을 통해 계속 전송됩니다. ISP는 잠재적으로 해당 트래픽을 모니터링하고 여전히 통신을 볼 수 있습니다. ISP와의 계약 및 현지 법률은 통신이 처리되는 방식을 결정하는 결정적인 수단이 될 것입니다. ISP의 계약에는 서비스 약관, 개인 정보 보호 정책 및 ISP와의 추가 계약이 포함됩니다.

암호화 된 프로토콜을 사용하는 것은 전송 중에 도청으로부터 데이터를 보호하는 가장 좋은 방법 중 하나입니다. 그러나 그조차도 익명 성을 보장하지는 않습니다. TorFreenet 과 같은 추가 프로토콜이 있습니다.이 프로토콜 은 실제로 익명으로 디자인되지 않았으므로 인터넷에 익명 성을 도입하려고 시도합니다.


1
간단한 대답은 '아니요'입니다. 기술적 답변은 위의 워너의 답변입니다. 모든 DNS 정보를 포함하는 서버 세트는 하나도 없습니다. 루트 서버는 단순히 아래의 요청을 참조하는 TLD 서버 중 하나를 참조합니다.
Rex

1
일부 ISP는 NXDOMAIN 하이재킹을 끄는 방법을 제공합니다. 일부 ISP는 NXDOMAIN 하이재킹을 "끄기"위한 (멍청하고 위조 된) 쿠키 기반 메커니즘을 제공합니다. ISP의 이름 서버 대신 사용할 수있는 대체 이름 서버도 있습니다.
Brian

3

몇 가지:

전달자를 사용하는 대신 루트 힌트를 사용하도록 서버를 구성하면 MITM 문제에 대해 걱정할 필요가 없습니다 (적어도 ISP 및 DNS 하이재커의 경우). 모든 외부 DNS 확인에 대해 서버는 루트 힌트를 쿼리하여 문제의 최상위 도메인 (.com 등)의 gTLD 서버를 참조하고 해당 도메인의 NS 서버를 참조합니다. .

정말로 자신의 루트 서버를 만들고 싶다면 확실히 어떻게 할 수 있는지 모르겠지만 확실하게 할 수 있습니다. Windows DNS 서버에서 수행하는 방법은 다음과 같습니다.

DNS 루트 영역 파일을 다운로드 하여 Windows DNS 서버의 % systemroot % \ system32 \ dns 디렉토리에 root.dns로 저장 한 다음 DNS 영역 작성 마법사를 사용하여 "."이라는 새 기본 정방향 조회 영역을 작성하십시오. (따옴표없이) AD 통합 영역을 만드는 옵션을 선택 취소하고 "."를 입력하십시오. 영역 이름 (따옴표없이)의 경우 기존 파일을 사용하는 옵션을 선택하면 영역 파일 이름 필드에 root.dns라는 이름이 자동으로 채워집니다 (입력하지 않은 경우). 동적 업데이트를 허용하려면 마법사의 각 단계를 완료 한 후 완료 버튼을 클릭하십시오. 이제 모든 gTLD 서버에 대한 영역 및 영역 레코드가있는 루트 서버가 있습니다.

서버에서 루트 서버이므로 서버에서 전달 및 루트 힌트 옵션을 사용할 수 없으며 gTLD 정보가 변경되면 서버에서 해당 변경 사항을 알 수있는 방법이 없습니다.


ISP가 루트 서버의 IP를 하이재킹하는 것을 막는 것은 없습니다 (DNSsec 제외). 그 외에는 맞습니다.
Chris S

1

밀접하게 관련된 서버의 경우 영역 전송이 있습니다. 이들은 BGP 공지와 매우 유사합니다. 보안상의 이유로 다른 서버에서는 일반적으로 차단됩니다.

캐싱 이름 서버를 실행하면 루트 서버 목록이 복사되고 곧 .com, .net 등에 대한 루트가 생깁니다. DNS가 배포되는 데는 매우 좋은 이유가 있습니다. 그렇지 않으면 모든 사람이 더 이상 사용되지 않는 데이터로 작업합니다. 데이터베이스의 크기는 상당히 크며 대부분의 데이터는 관심이 없습니다.

DNS 중독의 위험을 줄이는 옵션이 있으며 알려진 소프트웨어 문제를 잘 처리합니다. 업스트림 공급자로 사용할 수있는 위생 처리 된 데이터를 제공하는 조직이 있습니다. 이것들은 중독 시도를 걸러냅니다. 업스트림 제공 업체로 OpenDNS 또는 Google을 사용하는 것을보십시오.

루트 DNS 영역이 이제 서명되었으며 메일 서버에서 DNS 데이터가 서명되었다는보고가 점점 늘어나고 있습니다. DNS 서명은 IPV6의 요구 사항으로보고되었습니다. 서명 된 DNS는 캐시 포이즌을 매우 어렵게하지만 DNS 관리의 어려움을 가중시킵니다.


1

확실히 자신의 서버를 설정하고 루트에 대한 권한을 부여 할 수는 있지만 루트 서버의 영역 파일로 미리 채울 수있는 방법을 모르겠습니다. 단순히 영역 전송을 요청할 수 없으므로 캐시를 유지하여 채워야 할 것 같습니다.

다른 네임 서버의 root.hints를 수정하여 개인 루트 서버를 가리키고 테스트를 시작하십시오.

그러나 루트 서버는 TLD에 권한이있는 서버 만 알 수 있습니다. 본질적으로 불가능한 작업처럼 보이는 서버의 전체 계층을 다시 만들어야합니다.


0

예. DNS 서버의 기능 중 하나는 자주 요청되는 쿼리의 로컬 캐싱이며 지정된 ttl을 우회하는 경우가 많습니다.

당신은 확실히 자신의 DNS를 실행할 수 있습니다, 문제 없습니다. 그러나 루트 서버와 최상위 도메인 서버는 삼촌에게 물어봐야합니다.

모든 DNS 요청을 기록하는 것은 가능하지만 미쳤을 것입니다.


그러나 캐시에 의존한다는 것은 이미 해당 도메인에 대해 DNS 요청을 보내야한다는 것을 의미하며, 이는 로컬 DNS 요청 만 전체적으로 (또는 대부분) 시도하려는 전체 목적을 상실합니다.
pythonnewbie

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