5) DNS와 DNS 서버 구축

jungi.seong·2024년 4월 7일
0
post-thumbnail

1) DNS?

"Domain Name Service"의 약자로 도메인 이름의 IP주소를 찾아주는 서비스를 이야기 합니다.

client가 도메인으로 접속을 시도하게 되면 DNS는 도메인과 매칭된 IP주소로 변환하여 웹사이트의 서버에 접속하게 도와줍니다.

client는 이를 통해 복잡한 IP주소 대신 읽기 쉬운 도메인 이름을 사용하여 웹사이트에 접속할 수 있게 됩니다.


2) DNS서버 구축

2-1) DNS서버 서비스 설치

아래 명령어로 named 서비스를 설치합니다.

dnf -y install bind bind-utils

설치 후, 아래의 명령어로 서비스 재시작 및 부팅 시 자동으로 시작되도록 해줍니다.

systemctl --now enable named

systemctl status named

정상적으로 실행 된 서비스


2-2) named.conf 수정

아래 명령어로 named.conf 파일을 열어줍니다.

vi /etc/named.conf

아래 내용을 참고해서 값을 수정 해 줍니다.

11행:
12행:
19행:

아래 명령어를 입력하여 서비스 재시작 및 적용

systemctl restart named


2-3) 방화벽 설치 및 오픈

방화벽 명령어를 입력했는데 아무 반응이 없어서,
아래 명령어로 방화벽이 있는지 확인을 해 보았습니다.

rpm -qa | grep firewall

설치가 안되어 있었다.

아래 명령어로 방화벽 설치를 진행했습니다.

dnf install -y firewalld
systemctl --now enable firewalld


↑ 잘 설치 된 방화벽 ↑

아래 명령어들을 이용해서 dns 방화벽을 해제 > 재시작 > 해제 확인을 진행했습니다.

  1. firewall-cmd --add-service=dns --permanent
    firewall-cmd --reload
    firewall-cmd --list-all

  2. firewall-cmd --add-port=53/tcp -- permanent
    firewall-cmd --add-port=53/udp -- permanent
    firewall-cmd --reload
    firewall-cmd --list-all

  • 둘중에 편한걸로 진행하면 됩니다.


2-4) 도메인에 대한 설정 진행

아래 명령어를 통해서 named.conf 파일을 열어줍니다.

vi /etc/named.conf

파일 가장 아래에 보면 아래의 문구를 확인 할수 있습니다.

VI 에디터 기준

  • 아래 단축어로 명령어를 복사 > 붙여넣어준다.
  1. 4yy : 4줄을 복사
  2. p : 붙여넣기

복사 > 붙여넣기가 완료 된 상황
아래와 같이 수정

  • 파일 복사 및 zone파일 생성
    cd /var/named
    cp named.empty example.com.zone
    chown named.named example.com.zone

3) zone 파일 설명 (각 줄별로 설명)

vi example.com.zone

zone파일을 에디터로 열면 위와 같은 항목들이 확인된다.

3-1) Top Line

$ TTL : DNS 존 파일에서 $TTL 지시어는 "Time To Live"의 약자로, DNS 레코드가 DNS 캐시(리졸버 캐시)에 저장되어 있을 수 있는 최대 시간(초 단위)을 지정합니다.
@ IN SOA : 이것은 존의 시작을 나타내며, @는 현재 존의 루트를 의미하고, IN은 인터넷 클래스를 가리킵니다. SOA는 "Start of Authority" 레코드임을 나타냅니다.
@ rname.invalid. : SOA 레코드에서 @는 다시 이 존의 루트를 가리키며, rname.invalid는 DNS 존의 관리자의 이메일 주소를 잘못된 값으로 설정하여 기본값으로 둔 것을 의미합니다 (일반적으로 hostmaster@example.com과 같은 형태로 사용됩니다).

3-2) Middle Line

(로 시작하는 부분은 여러 줄에 걸친 SOA 레코드의 설정 값을 나타냅니다.
0 : 시리얼 번호(serial number)로, 이 존 파일이 수정될 때마다 증가해야 하는 고유한 번호입니다.
1D : 리프레시(refresh) 시간으로, 이존의 정보를 가져다가 사용하는 하위 DNS 서버들이 이 존의 정보를 새로 고침하는 데 얼마나 자주 시도해야 하는지를 정의합니다 (여기서는 하루).
1H : 재시도(retry) 시간으로, 하위 DNS 서버가 이 존의 정보를 새로고침을 시도하고 실패했을 때 다음 시도까지 기다려야 하는 시간입니다 (여기서는 1시간).
1W : 만료(expire) 시간으로, 이 존의 정보가 얼마나 오랫동안 유효한지를 정의합니다. 만약 하위 DNS 서버가 이 시간보다 오래동안 이 존의 정보를 갱신하지 못하면, 이 정보를 버려야 합니다 (여기서는 1주일).
3H : 최소(minimum) TTL(Time To Live)로, DNS 레코드가 DNS 캐시에 남아 있어야 하는 최소 시간입니다 (여기서는 3시간).

3-3) bottom Line

NS : 네임 서버(Name Server) 레코드로, 이 도메인에 대한 권한 있는 DNS 서버를 지정합니다.
A : 호스트에 대한 IPv4 주소를 매핑하는 레코드입니다.
AAAA : 호스트에 대한 IPv6 주소를 매핑하는 레코드입니다.


4) 검사 및 적용

named-checkconf : 정상이면 아무런 메세지가 나오지 않는다.

named-checkzone example.com example.com.zone

위의 명령어로 체크가 끝나면,
아래 명령어를 입력해서 named 서비스를 재시작 해준다.

systemctl restart named


  • 요약
  1. DNS가 무엇인지 그리고 DNS서버를 구축
  2. 서버 중에 메일서버 다음으로 어려운 것 같다.
profile
hello world~!

0개의 댓글