이전 문서에서 이 두 부분으로 시리즈를 소개한 DNS(도메인 이름 시스템),나는 방법을 설명 DNS 데이터베이스 구조 및 구성하는 방법 서비스 이름을 클라이언트에서. 나 또한 나열 및 설명되어 일부는 일반적인 DNS 기록할 때 건물 이름이 서버를 해석하는 결과를 발굴의 명령입니다.

이 기사에서는 BIND(Berkeley Internet Name Domain)를 사용하여 자신의 네임 서버를 구축하는 방법을 보여줍니다., 특히 두 단계로 할 수 있기 때문에 생각만큼 어렵지 않습니다.

이 문서에서,당신이 시작하는 방법을 학습하여 만들기를 캐싱 이름이 서버에,당신은로 이동하는 방법을 알아하는 업그레이드를 완료하는 기본(master)도메인 이름 서버를 위해 네트워크와 함께 완료,앞으로 그리고 역대 파일이 있습니다.

설정하는 DNS 를 사용하여 서버를 바인딩

설정하는 이름을 사용하여 서버를 바인딩은 매우 간단합니다,그래서는 방법에 대해 알아보겠습니다 그렇게 어떤 컴퓨터에 있는 사용할 수 있에 대한 실험., 이 작은 프로젝트 실험실이 설치하는 방법을 보여주고 구성하는 바인딩으로 컴퓨터에 캐싱 이름 서버,테스트,다음 설정을 기본이름으로 서버의 영역에 사용할 수 있는 파일 이름으로 해결 프로그램를 위한 네트워크 또는 대한 테스트합니다.

설정하는 이름이 서버에 어떤 GNU/리눅스 컴퓨터를 사용할 수 있는 기술적으로 가능하기 때문에 그것은 방해하지 않는 다른 호스트 네트워크에 또는 그들의 작업입니다. 그러나,당신은 아마 이렇게 하지 않은 컴퓨터에서는 당신이 소유하지 않거나 변경할 수 없다면 명시적 권한을 이렇게.,

내 설정

만 하나를 수행하기 위해 컴퓨터에 하나의 작업이 실험실 프로젝트입니다. 내가 사용하는 이 설정에서 훨씬 더 강력 씽기 때문에 이름 서버에 의해 제공됩 DHCP(Dynamic Host Configuration Protocol)을 연결할 때 비 홈 네트워크 중 하나를 사용하는 유선 또는 무선 연결 될 수 있습니다. 거의 모든 호스트가 네임 서버로 잘 수행 할 수 있음을 보여주기 위해 오래된 ASUS EeePC900 넷북에서이 프로젝트를 테스트했습니다.,

이 프로젝트에 내 ASUS 의 개인 IP 주소를 사용 하겠지만 사용중인 호스트의 IP 주소를 사용해야합니다.

호스트 파일

먼저/etc/hosts 파일을 살펴 보겠습니다. 기본 상태에서는 아래 목록 1 에서 볼 수있는 처음 두 줄인 호스트 파일에 두 줄만 있어야합니다.

목록 1:소규모 네트워크에서 리졸버의 기능을 수행하기 위해 간단한 hosts 파일을 유지 관리 할 수 있습니다.,

목록 1 과 같이 호스트 이름과 해당 IP 주소를 추가 할 수 있지만 특히 여행 할 때 서비스 이름을 지정하는 최적의 솔루션은 아닙니다. 이 있는 경우 다른 hosts 파일에 항목을 추이 필요할 수 있습을 그 밖의 기간 이 프로젝트와 충돌하는 경우 이름 또는 IP 주소가 있습니다. 당신의 대부분은 두 개의 기본 라인 이외의 항목이 없습니다.,

준비

캐싱 이름 서버를 대체할 수 없 사용/etc/hosts 를 해결하는 호스트 이름을 내부 네트워크에서나 사용할 때와 비교하여 ISP 또는 다른 공공의 이름이 서버를 캐싱 이름이 서버의 성능을 향상시킬 수 있습을 해결할 때 일반적으로 사용되는 외부 이름 www.cnn.com. 최 부분은 설정 캐싱 이름 서버를 매우 쉽습니다.시작하기 전에 다음 단계를 수행하여 준비해야합니다.

먼저/etc/hosts,/etc/named 파일의 백업 복사본을 만듭니다.conf,resolv.conf 및/etc/sysconfig/iptables.,

아직 설치되어 있지 않은 경우 배포판의 패키지 관리자를 사용하여 bind,bind-chroot 및 bind-utils 와 같은 BIND Rpm 을 설치하십시오. 랩 호스트가 캐싱 네임 서버를 사용할 수 있도록 하려면/etc/resolv 에서 자신의 호스트를 가리킬 네임 서버 라인을 추가해야 합니다.콘프. 예를 들어 랩 호스트 IP 주소가 192.168.0.203 인 경우 내 epc 와 마찬가지로/etc/resolv 의 이름 서버 목록 맨 위에 다음 줄을 추가하십시오.conf:

name server 192.168.0.203

이 프로젝트를 수행하는 호스트의 IP 주소를 사용해야합니다.,

외부 IP 주소 대신 로컬 호스트의 IP 주소 인 127.0.0.1 을 사용할 수 있습니다. 또한 다른 호스트를 가리키는 줄을 이름 서버로 주석 처리해야합니다. 수정 된 resolv 를 저장해야합니다.conf 파일.

이러한 변경 사항은 즉시 적용되며 재부팅 또는 서비스 재시작이 필요하지 않습니다. 지금 시도 핑 일반적인 공공하는 호스트는 차단되지 않 ICMP(인터넷 제어 메시지 프로토콜)패킷;느낌을 무료로 사용하는 내화벽하는 라즈베리 파이.,

ping wally2.both.org

를 받아야 합니다”알 수 없는 호스트”또는”이름이나 서비스에 알려져 있지 않기 때문에 오류”당신이 현재 아무 작업 DNS 서비스 또는 해결에 정의된 resolv.conf 파일. 이제 dig 명령을 사용하여 이름 서비스가 작동하는지 확인하십시오.

dig wally2.both.com

해야 합 오류가 발생하”연결 시간이 초과되었습니다;어떤 서버 수에 도달했습니다.”

설정 캐싱 이름 server

캐싱 이름 서버는 신뢰할 수 있는 소스에 대한 모든 도메인에 있습니다., 그것은 단순히 캐시 결과 모두의 이름을 해결 프로그램에서 요구하는 네트워크를 제공 속도 응답하여 미래의 요청에 대한 동일한 원격 호스트.

참고:라는.conf 파일은 구문 및 특히 구두점에 대해 매우 구체적입니다. 세미콜론은 엔트리의 끝과 스탠자의 끝뿐만 아니라 줄의 끝을 묘사하는 데 사용됩니다. 샘플에 표시된대로 올바르게 추가해야합니다.

기본/etc/named 에 몇 가지 수정을하는 캐싱 네임 서버의 초기 설정을 위해.conf 파일이 필요하므로 좋아하는 편집기를 사용하여 해당 파일을 편집하십시오., 먼저 아래의 목록 2 에서와 같이 로컬 테스트 호스트의 IP 주소를”listen-on port53″줄에 추가하십시오. 이것은 다른 컴퓨터뿐만 아니라 이름 서버로 사용할 수 있도록,호스트의 외부 IP 주소에 수신 대기하는 이름 수 있습니다.

기본적으로 BIND 는 인터넷의 루트 이름 서버를 참조하여 도메인에 대한 권한있는 이름 서버를 찾습니다. BIND 의 로컬 인스턴스가 루트 서버 대신 요청을 보낼”전달자”라는 다른 서버를 지정할 수 있습니다. 이 DNS 하이재킹의 가능성을 증가 않습니다.,아래 그림과 같이”전달자”줄을 추가하십시오. 이것은 그들이 이미 로컬로 캐시되지 않은 경우 IP 주소를 얻을 위치를 캐싱 DNS 서버를 알려줍니다. 아래 목록의 IP 주소는 해당 지역의 ISP 또는 OpenDNS 또는 기타 공용 이름 서버를 전달자로 사용할 수있는 Google 공용 DNS 서버 용입니다. 그것은 필요가 없을 정의하는 모든 운송업자가 있고,이 경우에 바인딩하는 것이 인터넷을 사용하는 루트 서버에서 정의된대로 파일/var/named/니다.캘리포니아를 찾을 신뢰할 수 있는 이름이 서버 도메인에 대한 없으면 전달자 정의됩니다., 그러나이 운동을 위해,내가 목록 2 에 가지고있는 전달자를 정의하십시오.

랩 환경에서 IPV6 을 사용하지 않기 때문에 IPV6 라인을 주석 처리하십시오. “//”두 개의 앞으로 슬래시는 명명 된 주석을 나타냅니다.conf 파일.

목록 2:/etc/named.conf 파일은 캐싱 이름 서버를 설정하는 데 필요한 간단한 구성을 제공합니다. 추가하거나 변경해야하는 선은 굵게 강조 표시됩니다.

allow-query 라인에 로컬 네트워크 주소 인 192.168.0.0/24 를 추가하십시오., 이 행은 이 DNS 서버에서 DNS 쿼리를 수락할 네트워크를 지정합니다.

이름 서비스 시작

이제 명명 된 서비스를 시작하고 부팅 할 때마다 명명 된 서비스를 시작하도록 구성하십시오. 내 Fedora25 호스트에서 systemctl 명령을 사용하지만 사용중인 배포판에 따라 호스트에서 명령이 다를 수 있습니다. 바인드 확인자 서비스의 이름이 지정됩니다.,

systemctl enable named
systemctl start named

첫 번째 테스트를 수행할 수 있도록 당신의 캐싱 이름 서버 작동을 사용하는 것을 발굴을 찾 DNS 에 대한 데이터베이스 정보 wally2.both.org. 추가 테스트를 당신의 캐싱 이름 서버를 사용하여 발굴 명령을 구하는 IP 주소(들)에 대한 몇 가지 일반적인 인터넷 웹사이트,등 www.opensource.com,CNN,초고속 유선 및 다른 사람을 좋아한다. 결과는 이제 응답 서버로 호스트를 표시해야합니다.,

이 시점에서 당신의 이름 서버를 캐싱이 올바르게 확인하려면 인터넷에 있는 호스트에는 사람들 때문에 DNS 요청에 대한 공개 호스트가 전달됩 Google 공개 이름 서버를 참조하”운송업자”라인에서 지정됩니다.콘프. 그러나 내부 이름 서비스의/etc/hosts 파일에 여전히 의존합니다. 기본 이름 서버를 만들면 해당 문제를 해결할 수 있습니다.

만들기 기본 이름 server

한 번 만들면 이름 서버를 캐싱,변환로 본격적인 기본 이름이 서버가 너무 어렵지 않습니다., 기본 이름 서버는 나타내는 도메인에 대한 신뢰할 수 있는 소스입니다.이름을 변경해야합니다.conf 다시 몇 가지 새로운 파일을 만듭니다. 라는 도메인을 만들 것입니다 Example.com,이 같은 문서에서 예를 들어 목적을 위해 예약 된 도메인 이름입니다. 이 Example.com 도메인가 IP 주소를 인터넷에 매우파스트,하지만 당신은 이름을 사용할 수 있습의 나머지 부분에서 당신의 연구 프로젝트 없이 문제를 일으키는 사람을위한. 당신은 Example.com 이 운동의 나머지 부분에 대한 내부 도메인 이름으로 도메인.,

만들 두 개의 새 파일은/var/named 디렉토리에 배치 할 정방향 및 역방향 영역 파일입니다. 이 위치는 named 의”directory”지시문에 의해 지정됩니다.conf 구성 파일.

을 만들 앞으로 파일 영역

기존 파일에 포함된”A”를 기록하는 한 쌍의 이름을 호스팅하는 영역에서,아카 도메인과 함께 해당 IP 주소가 있습니다. A 레코드의 실제 호스트 이름에 대한 별칭 인 CNAME 레코드와 메일 서버에 대한 MX 레코드를 포함 할 수도 있습니다.

기본 전달 영역 파일,/var/named/example.com 을 만듭니다.,영역,그리고 그것에 다음 줄을 추가합니다. 영역 파일이 끝나면 아래 목록 3 의 샘플 영역 파일처럼 보일 것입니다.

; Authoritative data for example.com zone
;
$TTL 1D
@ IN SOA epc.example.com root.epc.example.com. (
2017031301 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
$ORIGIN example.com.
example.com. IN NS epc.example.com.
epc IN A 127.0.0.1
server IN A 192.168.25.1
www IN CNAME server
mail IN CNAME server
test1 IN A 192.168.25.21
t1 IN CNAME test1
test2 IN A 192.168.25.22
test3 IN A 192.168.25.23
test4 IN A 192.168.25.24
; Mail server MX record
example.com. IN MX 10 mail.example.com.

목록 3:forward zone 파일 Example.com 도메인에는 이 도메인의 호스트 이름과 해당 IP 주소가 포함됩니다.

첫 번째 비 댓글 라인 목록에서 3 시간 지정,이 경우에는 하나의 하루에 모두 기록하지 않은 그렇지 않으면 지정합니다. D 는 하루를 의미합니다. SOA(Authority 의 시작)라인의 지정자는 그만큼 분명합니다., SOA 레코드의 매개 변수에 대한 세부 정보는 여기에 자세히 설명되어 있습니다.

NS 레코드에는 이 랩 프로젝트를 수행하는 호스트의 FQDN(정규화된 도메인 이름)이 있어야 합니다. 또한 호스트에 대한 유효한 IP 주소를 가진 파일에 a 레코드가 있어야 합니다. 이 경우 127.0.0.1 의 로컬 호스트 IP 주소를 사용해야합니다.

위에 표시된 항목은 실험 할 호스트 이름을 몇 개 제공합니다.

오늘 날짜를 사용하고 일련 번호에 대해 01 부터 시작하는 카운터를 추가해야합니다. 위의 일련 번호는 2017 년 3 월 4 일의 첫 번째 변경 사항입니다., 영역 파일이 변경 될 때마다 일련 번호가 증가합니다. 이 하나를 기본으로 사용하는 보조 이름 서버가 있다면 일련 번호가 증가하지 않으면 업데이트되지 않습니다.

전달 영역 파일을 named 에 추가합니다.CONF

DNS 서버가 작동하기 전에 그러나/etc/named 에 항목을 만들어야합니다.새 영역 파일을 가리킬 conf. 최상위 힌트 영역에 대한 항목 아래에 있지만”포함”줄 앞에 다음 줄을 추가하십시오.

zone "example.com" IN {
type master;
file "example.com.zone";
};

목록 4:이 줄을 명명 된 줄에 추가하십시오.예제를 추가 할 conf 파일.,해결자 구성에 com 영역 파일.

이제 이러한 변경 사항이 적용되도록 이름을 다시 시작하십시오. Dig 및 nslookup 명령을 사용하여 전달 영역 파일에 구성한 호스트의 IP 주소를 가져와 이름 서버를 테스트합니다. Dig 및 nslookup 명령이 IP 주소를 반환하기 위해 호스트가 네트워크에 존재할 필요가 없습니다.

식을 사용하여 FQDN 이러한 명령을 제외하고 필요한 nslookup 령으로 도메인을 검색 항목의 Example.com 에서 제공/etc/resolv.conf 파일., 이 경우 아마도 그렇지 않으므로이 프로젝트의 모든 테스트에 FQDNs 를 사용하십시오.

루트를 사용하여 이름 서버

알 수 있는 루트는 이름 서버는 신뢰할 수 있는 서버 Amazon.com 조회입니다. 그러나 google 공개 이름 서버를 전달자로 사용하고 있음을 기억하십시오. 이제 전달자 줄을 named 에서 주석 처리하십시오.conf 및 다시 시작 명명. 위의 명령을 다시 실행하여 반환되는 결과를 비교하십시오. 결과는 목록 5 에서 아래의 것과 비슷해야합니다.

목록 5:www 에 대한 조회 결과.아마존.,닷컴은 다양한 레코드 유형에 대해 살 시간을 포함하여 몇 가지 흥미로운 정보를 가지고있다.

이 작업을 수행했을 때 Amazon 의 외부 주소를 해결하기위한 첫 번째 호출은 데이터가 위치한 동안 3857ms 를 가져 와서 반환했습니다. 동일한 쿼리를 수행하기위한 후속 결과는 1ms 였으며,이는 리졸버 결과를 로컬로 캐싱하는 이점을 보여줍니다. 응답 섹션 라인의 숫자 1800,300 및 60 과 권한 섹션 라인의 1831 을 확인하십시오., 조회를 여러 번 수행하면 이러한 숫자가 변경되어 레코드가 로컬 캐시에 거주하기 위해 남은 시간이 표시됩니다.

역방향 영역 파일 만들기

도메인의 역방향 영역은 역방향 조회를 수행하는 기능을 제공합니다. 많은 조직에서 내부적으로 이러한 작업을 수행하지는 않지만 역방향 조회는 문제 결정을 수행하는 데 도움이 될 수 있습니다. SpamAssassin 과 같은 많은 스팸 싸움 구성은 유효한 전자 메일 서버를 확인하기 위해 역방향 조회를 찾습니다.

역 영역 파일,/var/named/example.com.rev 를 만들고 다음 내용을 추가하십시오., 적절한 일련 번호를 사용해야합니다.

; Authoritative data for example.com reverse zone
;
$TTL 1D
@ IN SOA test1.example.com root.test1.example.com. (
2017031501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS epc.example.com.
example.com. IN NS epc.example.com.
1 IN PTR mail.example.com.
1 IN PTR server.example.com.
21 IN PTR test1.example.com.
22 IN PTR test2.example.com.
23 IN PTR test3.example.com.
24 IN PTR test4.example.com.

목록 6:사용이 역대 파일은 예입니다.com.rev 을 위해,당신의 이름이 server.

이전 규칙을 따르는 역 영역 파일/var/named/25.168.192.in-addr.arpa 의 이름을 지정할 수도 있습니다. 당신은 실제로 당신이 명명에서 명시 적으로 가리 키기 때문에 당신이 원하는 무엇이든 이름을 지정할 수 있습니다.conf 파일이지만 두 가지 규칙 중 하나를 사용하면 다른 사람들이 작업을 따르기가 더 쉬워집니다.

명명 된 역 영역을 추가합니다.이 문제를 해결하려면 어떻게해야합니까?,conf 파일은 역방향 조회를 가능하게합니다.

목록 7 의 스탠자를/etc/named 에 추가하십시오.새로운 역 영역을 가리키는 conf 파일. 이제 이름을 다시로드하고 목록 8 의 명령을 사용하여 역 영역을 테스트하십시오. 귀하의 결과는 아래의 결과와 비슷해야합니다.

목록 8:이름을 다시 시작한 후 역 영역의 IP 주소에 대한 역방향 조회를 수행 할 때 이와 유사한 결과를 볼 수 있어야합니다.네트워크의 다른 역방향 항목 중 일부를 테스트하고 실험하려는 다른 역방향 조회뿐만 아니라 다음을 시도해야합니다., -X 옵션은 역방향 조회를 의미합니다.

dig -x 192.168.25.23
dig -x 192.168.25.1

참고 있는 모든 호스트가 있는 항목에서 앞으로 영역을 필요가 있는 항목에서 역대,하지만 그것이 더 일관된 결과는 경우 그렇습니다.

이 시점에서 BIND 를 사용하는 작업 이름 서버가 있습니다. 그러나 방화벽이 아직 DNS 요청을 허용하도록 구성되어서는 안되기 때문에 외부 호스트는 아직이 이름 서버를 사용할 수 없습니다.

DNS 용 IPTables 구성

로컬 네트워크의 다른 호스트가 호스트를 이름 서버로 사용하려는 경우이 단계를 수행 할 수 있습니다.,

테스트 호스트의 방화벽은 아마도 이름 서비스에 대한 호스트에 대한 액세스를 차단합니다. IPTables 는 다른 호스트가 이름 확인에 사용하기 위해 이름 서버에 인바운드 된 udp(사용자 데이터 그램 프로토콜)패킷을 허용하도록 구성되어야합니다. 다음 명령을 사용하여 필요한 항목을 추가하고 저장하십시오.

Udp 용 포트 53(도메인)에 들어오는 패킷을 허용하는 IPTables 또는 firewalld 방화벽에 규칙을 추가하고 새 규칙 집합을 저장하십시오., -A INPUT-m state–state RELATED,SETITED-j ACCEPT line 뒤에 새 규칙을 삽입해야하므로 그렇게하기 위해 필터 테이블의 입력 라인 수를 계산해야합니다. 다음 명령의 숫자 7 은 이 규칙이 기존 입력 규칙의 위치 번호 7 에 삽입됨을 의미합니다.

iptables -t filter -I INPUT 7 -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT

을 저장할 수 있는 새로운 방화벽 규칙을 만약 당신이 좋아하는 경우 이를 영구 설치 및 실험실 프로젝트입니다. 그런 다음 아래 목록 9 의 명령을 사용하여 다른 호스트 중 하나에서 테스트하십시오., @Epc 인수는 dig 명령에 지정된 이름 서버를 호스트 이름 epc 와 함께 사용하도록 지시합니다. 방금 만든 DNS 서버의 IP 주소 또는 새 이름 서버를 가리키는 네트워크의 해결 가능한 호스트 이름을 대체해야합니다. 물론 원격 테스트에 사용중인 호스트의/etc/hosts 파일에 IP 주소와 함께 해당 호스트 이름을 항상 추가 할 수 있습니다.

목록 9:동일한 네트워크의 다른 호스트에서 만든 이름 확인자 테스트.,

정리

정리의 경우 배포에 적합한 도구를 사용하여 다음 작업을 수행해야합니다. 당신은 단지 당신이 이미 하나가없는 경우 네트워크에 대한이 이름 서버를 유지하고자 할 수있다.

  1. 원본/etc/hosts 파일을 복원합니다.
  2. 이 랩 프로젝트에 사용되는 리졸버 호스트에서 이름이 중지되었습니다.
  3. 명명 된 서비스를 비활성화하십시오.
  4. 영역 파일을 삭제합니다.
  5. 라는 이름의 원본을 복원합니다.conf 파일.
  6. 원래 resolv 를 복원합니다.conf 파일.,

최종 생각

기능의 이름이 서비스를 듯 애매하게 될 때까지 실제로 만들어진 이름이 서버에 대한 내 네트워크를 사용할 수 있습니다. 그것은 매우 간단하고 DNS 조회 성능을 향상시킬 수 있습니다. 자신의 이름 서버를 방지할 수 있습의 많은 비교적 작은 아직 성가신 이름으로 발생하는 서비스 중단을 제대로 유지되는 ISP 에서 이름이 서버에 있습니다.

내 작은 EeePC 가 Seti@Home 에 대해 100%CPU 사용량으로 실행 되더라도 resolver 요청에 매우 빠르게 응답합니다., 당신은 소문자 영향으로 사용할 수있는 모든 리눅스 호스트에서이 프로젝트를 시도 할 수 있어야합니다. 많은 분들이 자신의 네임서버를 설정하여 실험을 해보시길 바랍니다. 네임 서버 설치의 구체적인 내용은 호스트 및 네트워크의 세부 사항에 따라 다릅니다.피>