DNS 서버 구축

Violet_Evgadn·2023년 5월 2일
0

Linux

목록 보기
32/34

/etc/hosts & nslookup

/etc/hosts

리눅스 계열의 시스템에는 "/etc/hosts" 파일이 존재한다.
그리고 이 hosts 파일은 DNS 서버의 역할을 수행할 수 있다.

예시를 하나 들어보자.
우리는 127.0.0.1이 자신의 컴퓨터를 나타내는 IP라는 것을 알고 있다. 자신의 컴퓨터에 접속할 수 있는 또 하나의 도메인이 있는데 그것이 바로 localhost이다.
그렇다면 어떻게 localhost127.0.0.1이 연결될 수 있을까?

바로 /etc/hosts 파일 덕분이다.
/etc/hosts에는 아래와 같은 내용이 포함되어 있다.

127.0.0.1  localhost

즉, /etc/hosts에 [IP 주소] [도메인 이름] 형식으로 IP 주소와 도메인 이름을 추가하면 리눅스 서버가 스스로 도메인과 IP 주소를 연결시켜준다.
만약 localhost가 아닌 sample로써 127.0.0.1에 접근하고 싶다면 /etc/hosts 파일에서 locahost를 sample로 바꿔주면 될 것이다.

이렇게 /etc/hosts에 연결될 IP 주소와 도메인 이름을 적어 놓을 경우 DNS 서버에 접근하지 않고서도 도메인 이름에 해당하는 IP 주소로 접근이 가능하다.
DNS 서버를 거치지 않기 때문에 속도는 빠르지만 특정 사이트에 연결하기 위해선 미리 사이트와 IP 주소 쌍을 입력해 놓아야 한다는 점에 주의하자.

nslookup

네트워크 도메인을 입력하면 도메인에 해당되는 IP 주소를 반환해주는 명령어이다.

DNS 서버에 접근하여 도메인을 검색한 뒤 대응되는 IP 주소를 반환해준다.

만약 nslookup 명령어가 존재하지 않는다면 sudo apt-get install bind9-utils를 통해 nslookup 명령어를 설치해주도록 하자.

이렇게 구한 IP 주소를 입력하면 도메인명을 입력했을 때보다 더욱 빠르게 사이트에 접근이 가능하다.


네임 서버 구축

네임 서버를 구축하기 위해서 일단 네임 서버로 활용할 새로운 Virtual Machine 공간을 생성해주자.
마지막 과정을 제외한 아래 모든 과정은 새롭게 생성한 Virtual Machine 공간에서 수행해야 한다.

1. bind 관련 패키지 설치

sudo apt-get install bind9 bind9utils bind9-doc

2. /etc/resolv.conf 파일 수정

nameserver 127.0.0.53
  
// 추가된 부분
nameserver 127.0.0.1

options edns0 trust-ad
search localdomain

우리는 지금 설정하고 있는 이 서버가 DNS 서버가 되도록 만들 것이다.
따라서 nameserver에 자신을 가리키는 IP 주소인 "127.0.0.1"을 추가해주자.

3. named.conf.options 파일 수정

vi /etc/bind/named.conf.options

CentOS에서는 "named.conf" 파일을 수정하지만 우분투에서는 Bind 패키지를 설치하기 때문에 "/etc/bind/named.conf.options" 파일을 수정한다.

DNS 통신을 위해 사용하는 포트 번호는 "53"이다.

named.conf.options 설정 파일을 수정하여 DNS 서버의 53번 포트로 오는 요청(도메인명에 대응되는 IP 주소를 찾는 요청)을 정상적으로 받아들이도록 설정하자.

이를 위해 named.conf.options의 파일 내용에 아래 문구를 추가해주자.

파일의 options { }에서 중괄호 안에 넣어주면 된다. listen-on-v6와 dnssec-validation 설정은 이미 되어 있을 수도 있으니 파일을 읽어보고 중복되는 설정인 경우 아래 내용으로 바꿔주자.

listen-on port 53 { any ;};
listen-on-v6 port 53 { none; };
allow-query {any;};
dnssec-validation no;

4. named 서비스 재시작

# named 서비스 재시작
systemctl restart named

# 서버 껐다 켜도 named 서비스가 동작하도록 설정
systemctl enable named

5. 방화벽 설정

# DNS 서버에 들어오는 DNS 요청은 방화벽을 통과시킴
firewall-cmd --permanent --add-service=dns

# 방화벽 설정 적용
firewall-cmd --reload

6. 네임 서버 작동 확인

네임 서버와는 다른 Virtual Machine에서 테스트 해야 한다.
리눅스에선 dig라는 명령어가 있는데 이 명령어를 통해 DNS 서버를 지정하고 해당 DNS 서버에서 특정 사이트의 IP 주소를 찾아 반환 받을 수 있다.

아래 명령어를 입력하여 정상적으로 결과가 나온다면 설정한 서버가 DNS 서버의 역할을 수행하고 있는 것이다.

dig [@네임서버 IP] www.naver.com

profile
혹시 틀린 내용이 있다면 언제든 말씀해주세요!

0개의 댓글