
이 글에서는 Rocky Linux 상에서 DNS를 만드는 방법에 대해서 정리한다.
이 부분에서는 리눅스까지
주소 : 10.17.0.53 (임의로 설정)
넷마스크 : 255.0.0.0
게이트웨이 : 10.0.0.1

systemctl disable --now firewalld
systemctl status firewalld

sestatus



init 6

DNS 서버를 구축할려면 먼저 bind와 named 패키지를 설치해야 한다. 그리고 이 패키지 들에 configure 파일들을 섬세하게 조작해주면 리눅스로도 DNS 서버를 만들 수 있다.
(1) bind 패키지 설치
dnf install bind bind-chroot –y
(2) named 패키지 설치
dnf install named
DNS 서버 설치할 때 중요한 Configuring 과정이 몇가지 있다. 그 첫번째로 named.conf 파일에 있는 어떤 IP들을 허락해줄지를 결정해야한다.
(3) Vi로 /etc/named.conf 수정
vi /etc/named.conf

named.conf 파일은 그림이 나와 있는 것처럼 수정한다.
Listen on port 53 부분 : 중괄호 안에 any; 으로 설정한다. 이 부분은 DNS port 53번이 어떤 IP가 접속할 수 있는지를 설정하는 부분인데, 불특정한 다수에게 서비스를 할 때에는 any;를 설정해야 한다.(사설로 운영할 때에는 사설IP 대역만을 제한해준다.)
Linsten on v6 부분 : none; 으로 설정한다. (IPv6를 사용하지 않는 경우에는 제거해도 되지만, none 옵션을 주변 v6는 사용하지 않는 다는 것으로 설정된다.)
allow query 부분 : 중괄호 안에 any; 로 설정한다. 이 부분을 재귀 질의가 올때 응답을 할지말지를 설정하는 것이다.

dnssec-validation 부분 : no 로 변경 (연습용이므로 no로 설정)

여기까지 하고 종료 :wq!
Active 확인

netstat -antup



(4) Zone file 수정
vi 편집기에서 zone 파일에 들어가서 Zone을 추가해줘야 한다. Zone file은 특정 도메인에 대한 IP 주소 정보나 서버 정보를 담고있는 전화번호부와 같은 것이다.
vi /etc/named.rfc1912.zones

zone "bulgogikebab.ke" IN {
type master;
file "named..localhost";
allow-update {none;};
}

아래 /var 밑에 named 폴더에는 named.localhost 파일이 있다. zone 파일에 등록한 dns에 발맞춰서 dns 파일로 하나 만들어줘야 한다.
Cd /var/named

cp로 named.localhost를 bulgogikebab.ke.dns으로 복사한다.
cp named.localhost bulgogikebab.ke.dns

vi 편집기를 사용해서 bulgogikebab.ke.dns 파일로 들어간다. 이 부분을 수정해주어야 한다.
vi bulgogikebab.ke.dns

아래 그림을 보면서 설명하면, 가장 윗 줄에 ns1.bulgogikebab.ke. 와 rocky.bulgogikebab.ke. 부분을 수정한다.
그런 다음에 아래에서 3번째에 ns1.gulgogikebab.ke.를 추가했다.
위에 도메인과 연결되어 있는 웹서버 IP를 등록한다.
ns1 IN A 10.17.0.53
www IN A 10.17.0.81

Validation check : Named.conf와 Zone file이 올바르게 되었는지 검증한다. named.conf, zone file에 이상이 없으면 메세지가 안뜨고, zone 파일에 이상이 없으면 OK가 출력된다.
named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones
named-checkzone bulgogikebab.ke /var/named/bulgogikebab.ke.dns
systemctl restart named
Win10 클라이언트 PC로 가서, DNS 서버를 10.17.0.53으로 설정한다. 클라이언트 PC의 IP는 10.17.0.0이고 어떤 웹사이트에 접속할 때 도메인에 관한 정보를 10.17.0.53이라는 DNS 서버에 물어본다는 것을 의미한다.

하지만, 지금 상태에서는 Ping이 안되는 것을 확인할 수 있다.

다시 IP를 10.17.0.53로 설정해둔 DNS 서버로 들어가서 named 폴더에 있는 파일들에 권한을 살펴보면 bulgogikebab.ke.dns에는 권한이 소유자(rw-:읽기 쓰기 권한)/그룹(r--:읽기 권한) 주어져있다. 그리고 root root 권한이 있는 것이 보인다. 이 부분을 변경해줘야 한다.
-rw-/r--/--- root root ~~ bulgogikebab.ke.dns
아래 그림 참고하여 chown으로 zone file의 권한을 변경한다. named.localhostf라는 파일의 권한이 root named 이지만, bulgogikebab.ke.dns은 root root로 설정되어 있어서 ping이 안되는 것이었다. 변경 이후에는 bulgogikebab.ke.dns가 root named로 변경되었다.
chown root:named bulgogikebab.ke.dns
다른 방법 chown으로 권한을 부여할 수 도 있는데 파일을 복사할 때부터 -p 옵션을 주면 권한을 바로 부여할 수도 있다.
cp -p named.localhost bulgogikebab.ke.dns

(참고) etc 내에 passwd를 들어가면 user들의 password 정보를 알 수 있다.
cat /etc/passwd


(참고) etc 내에 group을 들어가면 그룹정보를 조회할 수 있다.
cay /etc/group


모두 설정이 완료되었으면 retart해서 마무리한다.

위에서 연결이 안됐었던 것이 다시 Win 10 클라이언트로 돌아가서 ping 테스트를 해보니까 핑이 올바르게 가는 것이 보인다.
(조건 : 리눅스 웹서버, DNS 서버가 올바르게 작동하고 있다.)
ping www.bulgogikebab.ke
www.bulgogikebab.ke는 10.17.0.81이라는 IP를 가지고 있다.

여기서 끝나면 안된다. 캐시정보도 한번 봐본다.
rndc 명령어를 사용해서 캐시 정보를 볼 수도 있다. 먼저 덤프를 하고 파일이 생성된 폴더로 들어가서 조회하는 방식이다.
rndc dumpdb
named 안에 data로 들어가면 cache_dump.db에 캐시 정보가 있다. vi 편집기 사용해서 캐시 정보도 확인할 수 있다.
cd /etc/named/data
vi cache_dump.db

이 부분에서 보면 구글, 깃허브 등의 도메인 정보도 캐시에 등록되어 있기 때문에 접속할 수 있다.
vi 편집기 안에서 도메인 찾기는 방법
?github 를 입력하고, n 누른다. : 위로 올라간다.
/github 를 입력하고, n 누른다. : 아래로 내려간다.

flush는 캐시정보를 삭제하는 옵션이다. 그냥 막 삭제하면 안된다. 작업중에 갱신이 있거나 막혔을 때 수정하는게 좋다.
rndc flush
캐시 테이블 내에 구글, 깃허브 등이 올려져 있기 때문에 도메인 ping 테스트를 했던 Window10 Client에서도 잘 접속되는 것을 볼 수 있다.

참고) WIN2022 DNS
윈도우 DNS를 구축할 때도 xxx.ke.dns가 필요하고, 그 위치는 C드라이브에 System32\dns에 있다.
C:\Windows\System32\dns
