도메인 이름 서비스, Ubuntu에 DNS 서버 설치

이 기사에서는 Ubuntu(저는 14.04.3 LTS를 사용하고 있습니다) 및 바인딩9를 기반으로 로컬 네트워크에 DNS 서버를 배포하는 옵션 중 하나를 살펴보겠습니다. 대부분의 다른 배포판에서는 차이가 미미합니다. 데비안과 같은 배포판에서는 전혀 차이가 없습니다. DHCP 서버 설정에 대한 이전 기사를 이미 읽었다면 처음에 배포판에서 지원되지 않는 dnsmasq를 설치했지만 교체하기로 결정했다는 것을 알고 계실 것입니다. 지난번에 dnsmasq를 제거한 이후로 (DHCP와 DNS 서버 모두 제대로 구성되지 않았고 작동하지 않았습니다) DNS가 필요해서 여가 시간에 하기로 결정했습니다. . DNS 설정에는 시간이 조금 더 걸리지만 구성 파일이 더 많기 때문입니다.

이제 시작하겠습니다. 우선 시스템을 업데이트해 보겠습니다(패키지 업데이트).

sudo apt-get 업데이트 && sudo apt-get 업그레이드 -y

이제 바인딩9 DNS 서버를 설치해 보겠습니다.

sudo apt-get 설치 바인드9

이제 다른 데몬이 이 서버의 DNS 레코드를 업데이트할 수 있도록 키를 생성할 수 있습니다. 이는 네트워크의 다른 서버이거나 동일한 서버의 다른 서비스일 수 있습니다. 나에게 이것은 로컬에 설치된 DHCP 서버가 될 것입니다. 이론적으로 보안을 위해 각 서비스나 서버는 자체 키를 생성해야 하며, 그 중 하나가 손상되면 간단히 차단할 수 있고 나머지는 계속 작동합니다. 하지만 제 경우에는 DHCP 서버만 레코드를 업데이트하므로 키를 하나만 생성합니다.

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n 사용자 DHCP_UPDATER

명령을 실행한 사용자의 홈 디렉터리에 다음 두 개의 파일이 나타납니다.

Rw------ 사용자 1명 1월 54일 21 12:17 Kdhcp_updater.+157+55379.key
-rw--------- 사용자 1명 165년 1월 21 12:17 Kdhcp_updater.+157+55379.private

파일을 이대로 두면 손실되지 않습니다. 필요한 키를 보려면 다음을 실행하세요.

tail Kdhcp_updater*.private

"Key" 값이 필수 키인 다음과 같은 내용이 표시됩니다.

먼저 DNS 서버를 캐싱 이름 서버로 만들어 보겠습니다. 즉, 업스트림 서버에서 도메인 이름을 요청하여 강제로 도메인 이름을 확인하도록 하겠습니다. 클라이언트가 도메인 이름을 처음 요청하면 서버는 요청을 업스트림 서버로 전달한 다음 캐시에서 반환하므로 네트워크의 클라이언트에 대한 DNS 쿼리 처리 속도가 약간 향상됩니다. 또한 DNS가 클라이언트에 서비스를 제공할 주소를 서버에 표시합니다. 이렇게 하려면 /etc/bind/named.conf.options 파일을 편집해야 합니다.

sudo cp /etc/bind/named.conf.options /etc/bind/named.conf.options.dist && sudo nano /etc/bind/named.conf.options

거기에 다음 줄을 추가해 보겠습니다.

전달자(
212.120.160.130;
8.8.8.8;
};
듣기(
127.0.0.1;
192.168.0.231;
};

다음 섹션을 고려하세요.

  • 전달자 - 여기서는 더 높은 수준의 이름 서버를 나타냅니다. 그 수는 제한되지 않습니다. 그 중 하나를 사용할 수 없는 경우 요청은 목록의 다음 항목으로 전달됩니다. ISP의 DNS와 Google Public DNS를 지정했습니다.
  • lisnen-on - 서버가 클라이언트의 DNS 요청을 수락하는 로컬 인터페이스의 주소입니다.

나노에서는 다음과 같이 보입니다.

구성을 저장합니다. 이제 DNS 서비스를 다시 시작할 수 있습니다.

sudo 서비스 바인드9 재시작

이제 우리 서버는 캐싱 DNS로 작동하므로 이미 네트워크의 모든 클라이언트에 대해 DNS 서버로 지정할 수 있습니다. 작동을 확인해 보겠습니다. 네트워크에 있는 모든 컴퓨터나 서버 자체가 이를 수행합니다. Windows 7이 설치된 워크스테이션을 예로 들어 설명하겠습니다. Win+R을 누르고 나타나는 창에 cmd를 입력하면 Windows 명령 셸이 시작됩니다. 우리는 거기에 다음을 씁니다:

nslookup - 192.168.0.231

당연히 서버의 IP를 작성합니다. Windows용 콘솔 DNS 진단 유틸리티인 nslookup이 시작되고 시스템 DNS는 시작되지 않지만 매개변수에 지정된 유틸리티는 DNS 서버로 사용됩니다. Nslookup은 Windows DNS 캐시를 우회하여 필요한 서버에 요청을 보내기 때문에 좋습니다. 우선, 직접 DNS 쿼리의 기능을 확인해 보겠습니다.

그런 다음 역방향 요청의 성능은 다음과 같습니다.

cmd.exe에서는 다음과 같습니다.

모든 것이 정확히 동일하다면 DNS는 이미 캐싱 서버로 완벽하게 작동하고 있는 것입니다. google.ru의 경우에도 우리 서버가 IPv6를 허용할 수 있음을 알 수 있습니다.

이제 서버에게 자신을 DNS로 사용하도록 지시해야 합니다. 이는 루프백 인터페이스를 통해 수행됩니다. 이렇게 하려면 /etc/resolv.conf 파일을 변경해야 하지만 재부팅 후 네트워크 관리자가 어쨌든 수정하므로 직접 변경할 필요가 없습니다. 따라서 /etc/network/interfaces를 편집합니다:

sudo nano /etc/network/인터페이스

거기에서 로컬 네트워크 인터페이스(나의 경우 eth0)가 있는 섹션을 찾아 다음 줄을 추가하거나 변경합니다.

DNS-네임서버 127.0.0.1
DNS-검색 ordaupfin.local

*ordaupfin.local 대신 도메인이나 작업 그룹을 표시합니다.

내 것과 비슷해 보일 것입니다.

이제 물리적으로 서버 콘솔 바로 뒤에 있는 경우 다음 명령을 사용하여 네트워킹 서비스를 다시 시작하면 됩니다.

sudo 서비스 네트워킹 다시 시작

그리고 (나처럼) SSH를 통해 서버에 연결된 경우 활성 세션에서는 서비스 다시 시작을 허용하지 않으므로 서버를 재부팅해야 합니다.

이제 터미널에 다음을 작성하여 서버가 실제로 DNS 요청을 자신에게 보내는지 확인할 수 있습니다.

마지막 줄에 SERVER: 127.0.0.1이 표시되면 모든 것이 올바르게 구성된 것입니다. google.ru에서 발굴 배기 장치는 다음과 같습니다.

다시 dig google.ru를 실행해 보면 쿼리 실행 시간이 대폭 단축된 것을 확인할 수 있습니다. 이는 서버가 더 높은 수준의 서버로 요청을 전달하지 않고 캐시에서 동일한 도메인에 대한 모든 후속 요청을 가져오기 때문입니다.

우리의 DNS 서버는 외부 주소의 이름을 잘 확인하지만 로컬 네트워크의 클라이언트에 대해서는 전혀 모릅니다. 로컬 시스템 및 장치의 이름을 확인하려면 이를 네트워크의 기본 마스터로 구성해야 합니다. 또한 이는 네트워크의 완전한 기능을 위해 필요합니다.

전방 관찰 영역을 만듭니다. 서버에는 이미 표준 설정 파일이 포함되어 있으므로 해당 파일을 작업 디렉터리에 복사하고 자신에게 맞게 변경하기만 하면 됩니다. 나는 내 데이터를 사용합니다. 물론 귀하는 귀하의 데이터를 대체해야 합니다. 전방 보기 영역 구성 파일을 복사하고 편집을 위해 엽니다.

sudo cp /etc/bind/db.local /var/lib/bind/db.ordaupfin.local && sudo nano /var/lib/bind/db.ordaupfin.local

다음 형식으로 가져오겠습니다(원본 대신 데이터를 표시하는 것을 잊지 마세요).

; 로컬 루프백 인터페이스용 BIND 데이터 파일
;
$TTL 604800
20150122; 연속물
604800 ; 새로 고치다
86400 ; 다시 해 보다
2419200; 내쉬다
;
@ IN NS ubunturoute.ordaupfin.local.
@ 192.168.0.231에
@ AAAA::1
우분투 루트 IN A 192.168.0.231

이제 동일한 방식으로 역방향 조회 영역 파일을 생성하고 편집합니다.

sudo cp /etc/bind/db.127 /var/lib/bind/db.192 && sudo nano /var/lib/bind/db.192

그리고 우리는 그것을 다음과 같은 형태로 만듭니다:

; 로컬 루프백 인터페이스용 BIND 역방향 데이터 파일
;
$TTL 604800
@ IN SOA ubunturoute.ordaupfin.local. 루트.ubunturoute.ordaupfin.local. (
20150122; 연속물
604800 ; 새로 고치다
86400 ; 다시 해 보다
2419200; 내쉬다
604800); 네거티브 캐시 TTL
;
@ IN NS 우분투루테.
231 IN PTR ubunturoute.ordaupfin.local.

마지막 줄을 시작하는 "231"은 내 서버 IP 주소의 마지막 섹션이라는 점에 유의하세요. 귀하의 경우에는 다를 가능성이 높습니다.

이제 다음 번에 시작할 때 해당 영역의 존재를 알 수 있도록 이러한 영역을 기본 서버 구성에 등록해야 합니다. 이렇게 하려면 편집을 위해 /etc/bind/named.conf.local을 엽니다.

sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.dist && sudo nano /etc/bind/named.conf.local

그리고 거기에 다음 내용을 추가하세요.

키 DHCP_UPDATER(
알고리즘 HMAC-MD5.SIG-ALG.REG.INT;
비밀 "s5Efp/-/-/-/wQtvg9rR7Q==";
};

영역 "ordaupfin.local"(
유형 마스터;
파일 "/var/lib/bind/db.ordaupfin.local";
};

영역 "0.168.192.in-addr.arpa"(
유형 마스터;
파일 "/var/lib/bind/db.192";
업데이트 허용(키 DHCP_UPDATER;);
};

  • 키 DHCP_UPDATER - 레코드 업데이트를 위한 정보. 여기에 이전에 생성된 키를 입력합니다.
  • 영역 "ordaupfin.local" - 직접 보기 영역;
  • zone "0.168.192.in-addr.arpa" - 역방향 조회 영역.

다음과 같이 보일 것입니다:

서버를 저장하고 다시 시작합니다.

sudo 서비스 바인드9 재시작

서버 작동 확인:

nslookup ubunturute.ordaupfin.local

출력은 다음과 같아야 합니다.

서버: 127.0.0.1
주소: 127.0.0.1#53

이름: ubunturoute.ordaupfin.local
주소: 192.168.0.231

비슷한 방식으로 역방향 조회 영역의 기능을 확인합니다.

nslookup 192.168.0.231

그리고 우리는 다음을 얻습니다:

서버: 127.0.0.1
주소: 127.0.0.1#53

231.0.168.192.in-addr.arpa 이름 = ubunturoute.ordaupfin.local.

모든 것이 귀하에게 정확히 맞다면 작업은 거의 완료된 것입니다. 이제 새 클라이언트가 나타날 때 DNS 레코드를 업데이트할 수 있으려면 DHCP 서버가 필요하기 때문입니다. 나에게 설치된 isc-dhcp-server의 예를 사용하여 설정을 살펴보겠습니다. /etc/dhcp/dhcpd.conf를 편집합니다:

sudo nano /etc/dhcp/dhcpd.conf

그리고 거기에 다음 내용을 붙여넣으세요.

ddns-update-style 임시;
업데이트-정적-임대;
키 DHCP_UPDATER(
알고리즘 hmac-md5;
비밀 "s5EfpF53BBE9/-/tvg9rR7Q==";
) 영역 ordaupfin.local. (
기본 127.0.0.1;
키 DHCP_UPDATER;
) 영역 0.168.192.in-addr.arpa. (
기본 127.0.0.1;
키 DHCP_UPDATER;
}

물론 귀하의 가치를 대체해야 합니다. 그런 다음 DNS 및 DHCP 서버를 다시 시작합니다. 서버가 오류 없이 시작되면 모든 것이 정상입니다. 서버가 시작되지 않으면 구성을 주의 깊게 살펴보세요. 또한 syslog는 오류 진단에 많은 도움이 됩니다.

꼬리 -f /var/log/syslog

관심을 가져주셔서 감사합니다!

이 글에 대한 제안과 토론은 댓글로 진행됩니다

DNS(Domain Name System)는 웹사이트와 서버 운영에 필요한 구성 요소로 중요하면서도 구성이 다소 어렵습니다. 많은 사용자가 호스팅 공급자가 제공하는 DNS 서버를 사용하지만 자체 DNS 서버를 소유하면 몇 가지 이점이 있습니다.

이 튜토리얼에서는 Bind9를 설치하고 Ubuntu 14.04 서버에서 캐싱 또는 전달 DNS 서버로 구성하는 방법을 배웁니다.

요구사항

  • DNS 서버의 기본 유형을 이해합니다. 자세한 내용은 에서 확인할 수 있습니다.
  • 두 대의 머신 중 적어도 하나는 Ubuntu 14.04를 실행하고 있습니다. 첫 번째 머신은 클라이언트(IP 주소 192.0.2.100)로 구성되고 두 번째 머신은 DNS 서버(192.0.2.1)로 구성됩니다.

DNS 서버를 통해 쿼리를 보내도록 클라이언트 시스템을 구성하는 방법을 배우게 됩니다.

캐싱 DNS 서버

이 유형의 서버는 재귀 쿼리를 처리하고 일반적으로 다른 서버에서 DNS 데이터를 조회할 수 있기 때문에 확인자라고도 합니다.

캐싱 DNS 서버는 클라이언트 쿼리에 대한 응답을 모니터링할 때 클라이언트에 응답을 반환하고 해당 DNS 레코드의 TTL 값이 허용하는 기간 동안 캐시에 저장합니다. 그러면 캐시를 후속 요청에 대한 응답 소스로 사용하여 전체 요청 처리 시간을 단축할 수 있습니다.

네트워크 구성의 거의 모든 DNS 서버는 캐싱 서버입니다. 캐싱 DNS 서버는 많은 상황에서 좋은 선택입니다. 호스팅 공급자의 DNS 서버나 기타 공용 DNS 서버에 의존하고 싶지 않다면 자체 캐싱 DNS 서버를 설정하세요. DNS 서버에서 클라이언트 시스템까지의 거리가 짧을수록 DNS 요청을 처리하는 데 걸리는 시간이 짧아집니다.

DNS 서버 전달 중

클라이언트의 관점에서 보면 전달 DNS 서버는 캐싱 서버와 거의 동일해 보이지만 메커니즘과 작업 부하가 완전히 다릅니다.

전달 DNS 서버는 캐싱 서버와 동일한 이점을 갖습니다. 그러나 실제로 재귀 쿼리를 수행하지는 않습니다. 대신 모든 요청을 외부 확인 서버로 전달한 다음 후속 요청에 대한 결과를 캐시합니다.

이를 통해 리디렉션 서버는 재귀적인 요청을 처리하지 않고도 캐시에서 요청을 처리할 수 있습니다. 따라서 이 서버는 전체 재귀 절차가 아닌 단일 요청(리디렉션된 클라이언트 요청)만 처리합니다. 이는 캐싱 서버를 자주 변경해야 하는 외부 대역폭이 제한된 환경과 로컬 요청을 한 서버로 라우팅하고 외부 요청을 다른 서버로 라우팅해야 하는 상황에서 이점이 될 수 있습니다.

1: DNS 서버에 바인딩 설치

Bind 패키지는 공식 Ubuntu 저장소에서 찾을 수 있습니다. 패키지 색인을 업데이트하고 apt 관리자를 사용하여 Bind를 설치하십시오. 또한 몇 가지 종속성을 설치해야 합니다.

sudo apt-get 업데이트
sudo apt-get 설치 바인드9 바인드9utils 바인드9-doc

그런 다음 서버 설정을 시작할 수 있습니다. 캐싱 서버 구성은 포워딩 서버 구성을 위한 템플릿으로 사용될 수 있으므로 먼저 캐싱 DNS 서버를 구성해야 합니다.

2: 캐싱 DNS 서버 설정

먼저 Bind를 캐싱 DNS 서버로 구성해야 합니다. 이 구성을 사용하면 서버는 다른 DNS 서버에서 클라이언트 요청에 대한 응답을 반복적으로 찾게 됩니다. 답변을 찾을 때까지 일치하는 모든 DNS 서버를 순차적으로 쿼리합니다.

바인드 구성 파일은 /etc/bind 디렉토리에 저장됩니다.

대부분의 파일은 편집할 필요가 없습니다. 기본 구성 파일은 명명된.conf입니다(named와 바인딩은 동일한 응용 프로그램에 대한 두 가지 이름입니다). 이 파일은 명명된.conf.options, 명명된.conf.local 및 명명된.conf.default-zones 파일을 참조합니다.

캐싱 DNS 서버를 구성하려면 명명된.conf.options만 편집하면 됩니다.

sudo nanonamed.conf.options

이 파일은 다음과 같습니다(단순화를 위해 주석은 생략됨).

옵션(
디렉토리 "/var/cache/bind";
dnssec-검증 자동;

Listen-on-v6(모든;);
};

캐싱 서버를 설정하려면 액세스 제어 목록(ACL)을 생성해야 합니다.

공격자의 재귀 쿼리를 처리하는 DNS 서버를 보호해야 합니다. DNS 증폭 공격은 분산 서비스 거부 공격에 서버를 연루시킬 수 있기 때문에 특히 위험합니다.

DNS 증폭 공격은 서버와 웹사이트를 다운시키는 한 가지 방법입니다. 이를 위해 공격자는 재귀 쿼리를 처리하는 공용 DNS 서버를 찾으려고 합니다. 그들은 피해자의 IP 주소를 스푸핑하고 DNS 서버에 매우 큰 응답을 반환하는 요청을 보냅니다. 이 경우 DNS 서버는 작은 요청에 대한 응답으로 피해자의 서버에 너무 많은 데이터를 반환하여 공격자가 사용할 수 있는 대역폭을 늘립니다.

공용 재귀 DNS 서버를 호스팅하려면 신중한 구성과 관리가 필요합니다. 서버가 해킹당하는 것을 방지하려면 서버가 신뢰할 수 있는 IP 주소 또는 네트워크 범위 목록을 구성하세요.

options 블록 앞에 acl 블록을 추가합니다. ACL 그룹에 대한 레이블을 만듭니다(이 자습서에서는 그룹을 goodclients라고 함).

ACL 좋은클라이언트(
};
옵션(
. . .

이 블록에는 이 DNS 서버에 액세스할 수 있는 IP 주소 또는 네트워크를 나열합니다. 서버와 클라이언트가 /24 서브넷에서 실행되고 있으므로 이 서브넷에 대한 액세스를 제한할 수 있습니다. 또한 자동으로 연결되는 localhost 및 localnet의 차단을 해제해야 합니다.

ACL 좋은클라이언트(
192.0.2.0/24;
로컬호스트;
로컬넷;
};
옵션(
. . .

이제 보안 클라이언트 ACL이 생겼습니다. 옵션 블록에서 요청 해결 설정을 시작할 수 있습니다. 다음 줄을 추가합니다.

옵션(
디렉토리 "/var/cache/bind";
재귀 예;

. . .

options 블록은 재귀를 명시적으로 활성화한 다음 ACL을 사용하도록 허용 쿼리 옵션을 구성합니다. Allow-recursion과 같은 다른 매개변수를 사용하여 ACL 그룹을 참조할 수도 있습니다. 재귀가 활성화되면 make-recursion은 재귀 서비스를 사용할 수 있는 클라이언트 목록을 정의합니다.

그러나 허용 재귀가 설정되지 않은 경우 바인딩은 허용 쿼리 캐시 목록으로 대체된 다음 허용 쿼리 목록으로, 마지막으로 기본 localnets 및 localhost 목록으로 대체됩니다. 캐싱 서버만 설정하고 있으므로(자체 영역이 없고 쿼리를 전달하지 않음) 쿼리 허용 목록은 항상 재귀에만 적용됩니다. 이는 ACL을 정의하는 가장 일반적인 방법입니다.

파일을 저장하고 닫습니다.

캐싱 DNS 서버 구성 파일에 추가해야 하는 모든 설정은 다음과 같습니다.

메모: 이 유형의 DNS만 사용하려면 구성 확인을 진행하고 서비스를 다시 시작한 후 클라이언트를 구성하세요.

3: 전달 DNS 서버 설정

인프라가 전달 DNS 서버에 더 적합한 경우 설정을 약간 조정할 수 있습니다.

현재 명명된.conf.options 파일은 다음과 같습니다:

ACL 좋은클라이언트(
192.0.2.0/24;
로컬호스트;
로컬넷;
};
옵션(
디렉토리 "/var/cache/bind";
재귀 예;
허용 쿼리(goodclients;);
dnssec-검증 자동;
인증-nx도메인 번호; # RFC1035를 준수
Listen-on-v6(모든;);
};

동일한 ACL을 사용하여 DNS 서버를 특정 클라이언트 목록으로 제한할 수 있습니다. 그러나 서버가 더 이상 재귀 쿼리 실행을 시도하지 않도록 하려면 약간의 구성 변경이 필요합니다.

재귀를 no로 변경하지 마십시오. 리디렉션 서버는 계속해서 재귀 서비스를 지원합니다. 리디렉션 서버를 구성하려면 요청을 리디렉션할 캐싱 서버 목록을 만들어야 합니다.

이는 options() 블록에서 수행됩니다. 먼저, 요청을 리디렉션하려는 재귀 이름 서버의 IP 주소가 저장될 새 전달자 블록을 만들어야 합니다. 이 경우 Google DNS 서버(8.8.8.8 및 8.8.4.4)가 됩니다.

. . .
옵션(
디렉토리 "/var/cache/bind";
재귀 예;
허용 쿼리(goodclients;);
전달자(

8.8.8.8;

8.8.4.4;

};
. . .

결과 구성은 다음과 같습니다.

ACL 좋은클라이언트(
192.0.2.0/24;
로컬호스트;
로컬넷;
};
옵션(
디렉토리 "/var/cache/bind";
재귀 예;
허용 쿼리(goodclients;);
전달자(
8.8.8.8;
8.8.4.4;
};
앞으로만;
dnssec-검증 자동;
인증-nx도메인 번호; # RFC1035를 준수
Listen-on-v6(모든;);
};

마지막 변경 사항은 dnssec 매개변수와 관련됩니다. 현재 구성과 요청이 리디렉션되는 DNS 서버의 설정에 따라 다음 오류가 로그에 나타날 수 있습니다.

6월 25일 15:03:29 캐시 이름: 오류(DS 서버 추적) "in-addr.arpa/DS/IN" 해결 중: 8.8.8.8#53
6월 25일 15:03:29 캐시 이름: 오류(유효한 DS 없음) "111.111.111.111.in-addr.arpa/PTR/IN" 해결 중: 8.8.4.4#53

이를 방지하려면 dnssec-validation 매개변수를 yes로 변경하고 dnssec를 명시적으로 활성화해야 합니다.

. . .
앞으로만;
dnssec-활성화 예;
dnssec-검증 예;
인증-nx도메인 번호; # RFC1035를 준수
. . .

파일을 저장하고 닫습니다. 전달 DNS 서버 설정이 완료되었습니다.

4: 설정을 확인하고 바인딩을 다시 시작하세요.

이제 설정이 예상대로 작동하는지 확인해야 합니다.

구성 파일의 구문을 확인하려면 다음을 입력하십시오.

sudo 명명된-checkconf

파일에 오류가 없으면 명령 프롬프트에 출력이 표시되지 않습니다.

오류 메시지가 나타나면 수정하고 다시 테스트하세요.

그런 다음 Bind 데몬을 다시 시작하여 설정을 업데이트할 수 있습니다.

sudo 서비스 바인드9 재시작

그런 다음 서버 로그를 확인해야 합니다. 서버에서 다음 명령을 실행하십시오.

sudo tail -f /var/log/syslog

이제 새 터미널을 열고 클라이언트 시스템 설정을 시작하십시오.

5: 클라이언트 설정

클라이언트 컴퓨터에 로그인합니다. 클라이언트가 구성된 DNS 서버의 ACL 그룹에 나열되어 있는지 확인하십시오. 그렇지 않으면 DNS 서버는 이 클라이언트의 요청 서비스를 거부합니다.

서버가 이름 서버를 가리키도록 /etc/resolv.conf 파일을 편집합니다.

여기서 변경한 사항은 재부팅할 때까지만 유지되므로 테스트하기에 좋습니다. 테스트 설정 결과에 만족하면 해당 설정을 영구적으로 설정할 수 있습니다.

텍스트 편집기에서 sudo를 사용하여 파일을 엽니다.

sudo nano /etc/resolv.conf

파일에는 쿼리를 해결하는 데 사용될 DNS 서버가 나열되어야 합니다. 이를 수행하려면 nameserver 지시문을 사용하십시오. 현재 항목을 모두 주석 처리하고 DNS 서버를 가리키는 네임서버 줄을 추가합니다.

네임서버 192.0.2.1
# 네임서버 8.8.4.4
# 네임서버 8.8.8.8
# 네임서버 209.244.0.3

파일을 저장하고 닫습니다.

이제 테스트 요청을 보내 문제가 올바르게 해결되었는지 확인할 수 있습니다.

이를 위해 ping을 사용할 수 있습니다.

핑 -c 1 google.com
PING google.com (173.194.33.1) 56(84) 바이트의 데이터.
sea09s01-in-f1.1e100.net(173.194.33.1)의 64바이트: icmp_seq=1 ttl=55 time=63.8 ms
--- google.com 핑 통계 ---
1개 패킷 전송, 1개 수신, 0% 패킷 손실, 시간 0ms
rtt 최소/평균/최대/mdev = 63.807/63.807/63.807/0.000ms

오늘 우리는 서버 설정에 관한 일련의 기사를 계속하고 Ubuntu에서 DNS 서버 설정이 어떤 것인지 고려할 것입니다. 우리는 이미 우분투 14.04.1 LTS 기반 서버를 갖고 있고, 그 위에 DHCP 서버가 구성되어 있습니다. 오늘은 여기에 DNS 서비스도 추가하겠습니다.

먼저 왜 필요한지 알아 보겠습니다. DNS는 이름으로 컴퓨터의 IP 주소를 얻고 그 반대로 IP 주소로 이름을 얻도록 설계된 도메인 이름 시스템입니다. 저것들. 컴퓨터 이름을 알면 나중에 참조하기 위해 해당 IP를 기억할 필요가 없습니다. 이 서비스는 네트워크 확장과 처음에는 기억하기 불가능한 엄청난 수의 IP 주소 출현과 관련하여 만들어졌습니다.

독자들의 수많은 요청으로 인해 모든 사항을 다시 한 번 확인한 결과 서버가 제대로 작동하지 않는 몇 가지 뉘앙스를 발견했습니다. (이 기사는 원래 ubuntu 서버 11.04용으로 작성되었습니다.) 이 기사는 완전히 다시 작성되었으며 Ubuntu Server 14.04.1에서 테스트되었습니다.

많은 사용자가 Ubuntu에서 인터넷 연결을 설정하려고 할 때 문제를 경험합니다. 대부분의 경우 이는 경험 부족으로 인한 것이지만 다른 이유가 있을 수도 있습니다. 이 기사에서는 구현 프로세스 중에 발생할 수 있는 모든 문제에 대한 자세한 분석과 함께 여러 유형의 연결을 설정하는 지침을 제공합니다.

인터넷 연결에는 다양한 유형이 있지만 이 기사에서는 가장 널리 사용되는 유선 네트워크, PPPoE 및 DIAL-UP에 대해 설명합니다. 별도의 DNS 서버를 설정하는 방법도 설명하겠습니다.

준비 활동

연결 설정을 시작하기 전에 시스템이 이에 대한 준비가 되었는지 확인해야 합니다. 다음에서 실행된 명령을 명확히 하는 것이 즉시 필요합니다. "단말기", 두 가지 유형으로 나뉩니다: 사용자 권한이 필요한 유형(앞에 기호가 표시됩니다) $ ) 및 수퍼유저 권한이 필요합니다(처음에는 기호가 있음). # ). 필요한 권한이 없으면 대부분의 명령은 단순히 실행을 거부하므로 이에 주의하십시오. 또한 기호 자체가 "단말기"들어갈 필요가 없습니다.

다음과 같은 몇 가지 사항을 완료해야 합니다.


무엇보다도 네트워크 어댑터의 이름을 알아야 합니다. 알아보려면 다음을 입력하세요. "단말기"이 줄:

$ sudo lshw -C 네트워크

결과적으로 다음과 같은 내용이 표시됩니다.

네트워크 어댑터 이름은 단어 반대편에 나타납니다. "논리적 이름". 이 경우 "enp3s0". 이는 기사에 표시될 이름입니다. 귀하에게는 다를 수 있습니다.

참고: 컴퓨터에 여러 네트워크 어댑터가 설치되어 있는 경우 그에 따라 번호가 지정됩니다(enp3s0, enp3s1, enp3s2 등). 어떤 것을 작업할지 결정하고 후속 설정에서 사용할 수 있습니다.

방법 1: 터미널

"단말기" Ubuntu의 모든 설정을 위한 원스톱 도구입니다. 그것의 도움으로 우리가 지금 논의할 모든 유형의 인터넷 연결을 구축하는 것이 가능할 것입니다.

유선 네트워크 설정

Ubuntu에서 유선 네트워크 설정은 구성 파일에 새로운 설정을 지정하여 수행됩니다. "인터페이스". 따라서 먼저 이 파일을 열어야 합니다.

참고: 구성 파일을 여는 명령은 Gedit 텍스트 편집기를 사용하지만 해당 부분에 vi와 같은 다른 편집기를 입력할 수 있습니다.

이제 공급자가 보유한 IP 유형을 결정해야 합니다. 정적 및 동적의 두 가지 종류가 있습니다. 확실하지 않다면 기술팀에 전화하세요. 당신의 통신수를 지원하고 상담하십시오.

먼저 동적 IP를 살펴보겠습니다. 구성이 더 간단합니다. 이전 명령을 입력한 후 열린 파일에 다음 변수를 지정합니다.

iface [인터페이스 이름] inet dhcp
자동 [인터페이스 이름]

  • iface [인터페이스 이름] inet dhcp- 동적 IP 주소(dhcp)가 있는 선택된 인터페이스를 나타냅니다.
  • 자동 [인터페이스 이름]- 로그인하면 지정된 모든 매개변수를 사용하여 지정된 인터페이스에 자동으로 연결됩니다.

일단 입력하면 다음과 같은 내용이 표시됩니다.

고정 IP는 구성하기가 조금 더 어렵습니다. 가장 중요한 것은 모든 변수를 아는 것입니다. 구성 파일에 다음 줄을 입력해야 합니다.

iface [인터페이스 이름] inet static
주소 [주소]
넷마스크 [주소]
게이트웨이 [주소]
DNS-네임서버 [주소]
자동 [인터페이스 이름]


모든 매개변수를 입력하면 다음과 같은 내용이 표시됩니다.

텍스트 편집기를 닫기 전에 모든 설정을 저장하는 것을 잊지 마십시오.

무엇보다도 Ubuntu OS에서는 일시적으로 인터넷 연결을 설정할 수 있습니다. 지정된 데이터가 구성 파일을 어떤 식으로든 변경하지 않으며 PC를 다시 시작한 후 이전에 지정한 모든 설정이 재설정된다는 점이 다릅니다. Ubuntu에서 처음으로 유선 연결을 시도하는 경우 이 방법을 사용하여 시작하는 것이 좋습니다.

모든 매개변수는 하나의 명령을 사용하여 설정됩니다.

$ sudo IP 주소 추가 10.2.119.116/24 dev enp3s0

  • 10.2.119.116 - 네트워크 카드의 IP 주소(사용자마다 다를 수 있음)
  • /24 - 주소의 접두사 부분의 비트 수
  • enp3s0- 공급자 케이블이 연결된 네트워크의 인터페이스.

필요한 모든 데이터를 입력하고 명령을 실행하여 "단말기", 정확성을 확인할 수 있습니다. PC에 인터넷이 나타나면 모든 변수가 올바른 것이며 구성 파일에 입력할 수 있습니다.

DNS 설정

DNS 연결 설정은 Ubuntu 버전에 따라 다르게 수행됩니다. 12.04부터 시작하는 OS 버전에는 한 가지 방법이 있고 이전 버전에는 다른 방법이 있습니다. 동적 연결 인터페이스는 DNS 서버의 자동 감지를 의미하므로 정적 연결 인터페이스만 고려하겠습니다.

12.04보다 높은 OS 버전의 구성은 이미 알려진 파일에서 발생합니다. "인터페이스". 라인을 입력해야 합니다. "DNS-네임서버"공백으로 구분된 값을 나열합니다.

먼저 다음을 통해 엽니다. "단말기"구성 파일 "인터페이스":

$ sudo gedit /etc/network/인터페이스

DNS-네임서버 [주소]

결과적으로 다음과 같은 결과를 얻게 되며 값만 다를 수 있습니다.

이전 버전의 Ubuntu에서 DNS를 구성하려는 경우 구성 파일이 달라집니다. 통해 열어보자 "단말기":

$ sudo gedit /etc/resolv.conf

그런 다음 필요한 DNS 주소를 설정할 수 있습니다. 매개변수를 입력하는 것과는 달리 "인터페이스", V "resolv.conf"주소는 단락에서 매번 작성되며 값 앞에 접두사가 사용됩니다. "네임서버"(인용없이).

PPPoE 연결 설정

다음을 통해 PPPoE 설정 "단말기"컴퓨터의 다양한 구성 파일에 많은 매개변수를 입력한다는 의미는 아닙니다. 반대로 하나의 명령만 사용됩니다.

따라서 지점 간 연결(PPPoE)을 설정하려면 다음을 수행해야 합니다.


모든 단계를 수행한 후 모든 작업을 올바르게 수행했다면 컴퓨터가 인터넷에 연결됩니다.

기본적으로 유틸리티는 pppoeconf생성된 연결의 이름을 지정합니다. DSL 공급자. 연결을 종료해야 하는 경우 다음을 실행하세요. "단말기"명령:

$ sudo poff dsl-공급자

연결을 다시 설정하려면 다음을 입력하십시오.

$ sudo pon dsl-공급자

참고: pppoeconf 유틸리티를 사용하여 네트워크에 연결하는 경우 "인터페이스" 구성 파일에 입력되는 매개변수로 인해 Network Manager를 통해 네트워크를 관리할 수 없습니다. 모든 설정을 재설정하고 Network Manager에 제어 권한을 부여하려면 "인터페이스" 파일을 열고 모든 내용을 아래 텍스트로 바꿔야 합니다. 입력 후 변경 사항을 저장하고 "$ sudo /etc/init.d/networking restart"(따옴표 제외) 명령을 사용하여 네트워크를 다시 시작합니다. 또한 "$ sudo /etc/init.d/NetworkManager restart"(따옴표 제외)를 실행하여 Network Manager 유틸리티를 다시 시작합니다.

전화 접속 연결 설정

DIAL-UP을 구성하려면 두 가지 콘솔 유틸리티를 사용할 수 있습니다. pppconfig그리고 전화 다이얼.

다음을 사용하여 연결을 설정합니다. pppconfig충분히 간단합니다. 일반적으로 이 방법은 이전 방법과 매우 유사합니다( pppoeconf): 동일한 방식으로 질문을 받게 되며, 답변을 통해 결국 인터넷에 연결하게 됩니다. 먼저 유틸리티 자체를 실행합니다.

$sudo pppconfig

그 후 지침을 따르십시오. 답변 중 일부를 모르는 경우 해당 운영자에게 문의하는 것이 좋습니다. 귀하의 서비스 제공자를 지원하고 그와 상담하십시오. 모든 설정이 완료되면 연결이 완료됩니다.

사용 설정에 관해서 전화 다이얼, 그러면 조금 더 복잡해집니다. 먼저 다음을 통해 패키지 자체를 설치해야 합니다. "단말기". 이렇게 하려면 다음 명령을 실행하십시오.

$ sudo apt install wvdial

여기에는 모든 매개변수를 자동으로 구성하도록 설계된 유틸리티가 포함되어 있습니다. 그것은 ~라고 불린다 "wvdialconf". 실행하세요:

$sudo wvdialconf

에서 실행한 후 "단말기"많은 매개변수와 특성이 표시되므로 이해할 필요는 없습니다. 유틸리티가 특수 파일을 생성했다는 것만 알면 됩니다. "wvdial.conf", 필요한 매개 변수를 자동으로 입력하여 모뎀에서 읽습니다. 다음으로 생성된 파일을 편집해야 합니다. "wvdial.conf", 열어보자 "단말기":

$ sudo gedit /etc/wvdial.conf

보시다시피 대부분의 설정은 이미 지정되었지만 마지막 세 가지 사항은 여전히 ​​보완이 필요합니다. 전화번호, 로그인, 비밀번호를 각각 입력해야 합니다. 그러나 서두르지 말고 파일을 닫으십시오. 보다 편리한 작업을 위해 몇 가지 매개변수를 추가하는 것이 좋습니다.

  • 유휴 시간(초) = 0- 오랫동안 컴퓨터를 사용하지 않아도 연결이 끊어지지 않습니다.
  • 다이얼 시도 = 0- 연결을 설정하기 위해 끊임없이 시도합니다.
  • 다이얼 명령 = ATDP- 해당 번호는 펄스 방식으로 다이얼됩니다.

결과적으로 구성 파일은 다음과 같습니다.

설정은 괄호 안에 이름이 붙은 두 개의 블록으로 나누어져 있습니다. 이는 매개변수를 사용하여 두 가지 버전을 생성하는 데 필요합니다. 따라서 아래의 매개변수는 «» , 항상 실행되지만 «» — 명령에서 해당 옵션을 지정할 때.

모든 설정을 마친 후 DIAL-UP 연결을 설정하려면 다음 명령을 실행해야 합니다.

펄스 연결을 설정하려면 다음을 작성하십시오.

$ sudo wvdial 펄스

설정된 연결을 종료하려면 "단말기"키 조합을 눌러야 해요 Ctrl+C.

방법 2: 네트워크 관리자

Ubuntu에는 대부분의 연결 유형을 설정하는 데 도움이 되는 특별한 유틸리티가 있습니다. 또한 그래픽 인터페이스도 있습니다. 이는 네트워크 관리자로, 상단 패널 오른쪽에 있는 해당 아이콘을 클릭하면 호출됩니다.

유선 네트워크 설정

유선 네트워크 설정과 동일한 방식으로 시작하겠습니다. 먼저 유틸리티 자체를 열어야 합니다. 이렇게하려면 해당 아이콘을 클릭하고 "연결 변경"상황에 맞는 메뉴에서. 다음으로 나타나는 창에서 다음을 수행해야 합니다.


모든 단계를 수행한 후에는 유선 인터넷 연결이 설정되어야 합니다. 이런 일이 발생하지 않으면 입력한 모든 매개변수를 확인하십시오. 아마도 어딘가에서 실수를 했을 수도 있습니다. 또한 옆에 있는 확인란을 선택하는 것을 잊지 마세요. "네트워크 관리"유틸리티 드롭다운 메뉴에서

DNS 설정

연결을 설정하려면 DNS 서버를 수동으로 구성해야 할 수도 있습니다. 이렇게 하려면 다음을 수행하십시오.


PPPoE 설정

Network Manager에서 PPPoE 연결을 설정하는 것은 다음과 같이 쉽습니다. "단말기". 실제로, 공급자로부터 받은 로그인 정보와 비밀번호만 제공하면 됩니다. 그러나 모든 것을 더 자세히 살펴 보겠습니다.


이제 인터넷에 액세스할 수 있는 항목을 선택하여 네트워크 관리자 메뉴에 새로운 DSL 연결이 나타났습니다. 변경 사항을 적용하려면 컴퓨터를 다시 시작해야 하는 경우가 있음을 알려드립니다.

결론

결과적으로 Ubuntu 운영 체제에는 필요한 인터넷 연결을 설정하는 데 필요한 많은 도구가 있다고 말할 수 있습니다. 네트워크 관리자 유틸리티에는 특히 초보자의 작업을 크게 단순화하는 그래픽 인터페이스가 있습니다. 하지만 "단말기"유틸리티에 없는 매개변수를 입력하여 보다 유연한 구성이 가능합니다.

모르는 사람들을 위해 설명하자면, DNS는 이름을 PC의 IP 주소로 확인하거나 그 반대로 확인하는 데 사용되는 도메인 이름 시스템입니다. 따라서 브라우저에 웹페이지 주소를 입력하면 도메인 이름 시스템은 이를 특정 도메인이 위치한 호스팅 서비스의 IP 주소로 변환합니다. 이 기사에서는 Ubuntu DNS 서버를 설치하고 구성하는 방법을 자세히 살펴보겠습니다. 시작하자. 가다!

바인드9 재시작

sudo 서비스 바인드9 재시작

이제 정방향 및 역방향 조회 영역을 지정하고 이를 바인드9 구성에 입력합니다. 초기 데이터는 다음과 같습니다.

도메인 이름 - dom
서버 IP 주소 - 192.168.0.1
서버 이름 - ns.dom

정방향 조회 영역을 설정하려면 해당 파일을 만들고 샘플을 복사하세요.

sudo cp /etc/bind/db.local /var/lib/bind/db.dom

sudo nano /var/lib/bind/db.dom

다음과 같이 편집합니다.

$ORIGIN.
$TTL 604800 ; 일주
dom IN SOA ns.dom. root.ns.dom. (
201605277 ; 연속물
604800 ; 새로고침(1주)
86400 ; 재시도(1일)
2419200; 만료(4주)
604800 ; 최소(1주)
@ IN NS ns.dom.
@ 192.168.0.1에
@ AAAA::1
$ORIGIN 돔.
$TTL 604800 ; 일주
ns IN A 192.168.0.1

sudo cp /var/lib/bind/db.dom /var/lib/bind/db.192.dom

다음 명령으로 엽니다.

sudo nano /var/lib/bind/db.192.dom

또한 다음을 편집합니다.

$ORIGIN.
$TTL 604800 ; 일주
0.168.192.in-addr.arpa IN SOA ns.dom. root.ns.dom. (
2016052655 ; 연속물
604800 ; 새로고침(1주)
86400 ; 재시도(1일)
2419200; 만료(4주)
604800 ; 최소(1주)
@ IN NS ns.
$ORIGIN 0.168.192.in-addr.arpa.
$TTL 604800 ; 일주
1 IN PTR ns.dom.

바인딩9 구성에서 영역을 구성하려면 다음 명령을 사용하여 구성 파일을 열어야 합니다.

sudo nano /etc/bind/named.conf.local,

키 DHCP_UPDATER(
알고리즘 HMAC-MD5.SIG-ALG.REG.INT;
비밀 "9DxMmNw7J813qviXajG7rQ==";
};

// 전방 시야 영역

영역 "돔"(
유형 마스터;
파일 "/var/lib/bind/db.dom";

};

// 역방향 조회 영역

영역 "0.168.192.in-addr.arpa"(
유형 마스터;
파일 "/var/lib/bind/db.192";
업데이트 허용(키 DHCP_UPDATER;);
};

키 DHCP_UPDATER - 맨 처음에 적어둔 비밀 키에 대한 정보(따옴표로 묶어야 함) 이전에 두 번째 방법을 사용한 경우 다음을 입력합니다.

// 전방 시야 영역

영역 "돔"(
유형 마스터;
파일 "/var/lib/bind/db.dom";

};

// 역방향 조회 영역

영역 "3.168.192.in-addr.arpa"(
유형 마스터;
파일 "/var/lib/bind/db.192";
업데이트 허용(key rndc-key;);
};

여기서 key rndc-key는 시스템에서 가져온 키 데이터이고 영역 "dom"은 도메인 이름 시스템 적용 영역에 대한 데이터입니다. 남은 것은 전체 내용을 저장한 다음 다음을 입력하여 바인드9를 닫고 다시 시작하는 것입니다.

sudo /etc/init.d/bind9 재시작

도메인 이름 시스템의 작동 확인

이제 도메인 이름 시스템의 작동을 확인하십시오.

결과적으로 다음과 같은 결과를 얻게 됩니다:

서버: 127.0.0.1
주소: 127.0.0.1#53
이름: ns.dom
주소: 192.168.0.1

보시다시피 전방 시야 영역이 작동합니다. 이제 그 반대도 작동하는지 확인하십시오.

결과적으로 다음이 표시됩니다.

서버: 127.0.0.1
주소: 127.0.0.1#53
1.0.168.192.in-addr.arpa 이름 = ns.dom.

마지막으로 IP를 입력하여 서버 이름을 가져와야 합니다. 모든 것이 이와 같이 표시되면 설정이 올바르게 완료된 것입니다. 그렇지 않다면 이전에 실수가 있었다는 의미입니다.

동적 업데이트 설정

동적 업데이트를 구성하려면 다음 명령을 실행하여 /etc/dhcp/dhcpd.conf를 엽니다.

sudo nano /etc/dhcp/dhcpd.conf

ddns-update-style none 행을 ddns-update-style 임시로 대체해야 합니다. 다음으로 고정 IP를 사용하는 클라이언트용 영역 생성을 담당하는 update-static-leases를 온라인에 추가합니다. domain-name 옵션에 도메인 이름 "dom"이 포함되어 있는지 확인하십시오. "key" 줄에는 키 이름(이전에 첫 번째 방법을 선택한 경우 DHCP_UPDATER를 입력하고 두 번째 방법인 경우 rndc-key 입력)과 비밀 키가 포함되어야 합니다. rndc-key를 보려면 다음을 실행하세요.

cat /etc/bind/rndc.key |grep 비밀

결과는 다음과 같아야 합니다.

비밀 "2mu11eRajAdm4KV0x0Pmcg==";

DHCP 설정이 전부입니다. 이제 바인딩9와 dhcp를 다시 시작해야 합니다. 이렇게 하려면 다음을 작성하세요.

sudo 서비스 바인드9 재시작
sudo 서비스 isc-dhcp-server 재시작

모든 것이 어떻게 작동하는지 확인하는 것이 남아 있습니다. 서버와 네트워크에 있는 클라이언트 시스템을 시작합니다. 시작 후 머신은 DHCP로부터 IP를 수신하고 차례로 client-pc.dom과 같은 항목을 생성합니다. "nslookup client_machine_name" 요청 시 응답을 받아야 합니다. 서버를 다시 시작하면 정방향 및 역방향 조회 파일을 볼 수 있습니다. 이전 단계에서 모든 것을 올바르게 구성했다면 새 시스템에 대한 정보가 표시됩니다. 준비가 된. 설정이 완료되었습니다.

결과

이제 Ubuntu에서 DNS 서버를 구성하는 방법을 알았습니다. 이 작업에 어떻게 대처했는지 댓글로 작성하고, 다른 사용자와 경험을 공유하고, 이 기사의 주제에 대해 궁금한 점이 있으면 물어보세요.



질문이 있으신가요?

오타 신고

편집자에게 전송될 텍스트: