본문 바로가기

IT, Computer/Linux

DNS 서버만들기

이글은 사설ip내에서 DNS구매없이 적용가능한 방법입니다.

 

 

DNS는 주소입력창에 ip를 치기싫어 만들었다고 보시면됩니다.

 

DNS는 리눅스에서 대표적으로 bind에서 사용할 수 있습니다.

bind도 소스설치가 가능하지만, 여기선 yum설치로 진행하도록 하겠습니다.

 

이 예제에서 저는 goatasriel.com이라는 도메인이 172.30.1.34(사설)에 접속하도록 만들것입니다.

이를 참고하시고 연습하실때 본인에게 맞는 값으로 변경하시길 바랍니다.

 

아래 hosts를 변경하는작업은 필수 작업은 아닙니다만, 해두는게 서버관리도 더 편하니 참고만하세요.

# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.30.1.34 ns1.goatasriel.com

가장아래줄에 새로운것을 추가했습니다. 

주로 dns서버에 사용되는건 ns1.도메인.com ns2.도메인.com 이런식으로 사용합니다.

ssh를 재시작해보면 localhost에서 ns1으로 명칭이 변경된것을 확인 할 수 있습니다.

 

bind를 설치합니다.

# yum install bind

 

설치가 완료되면

# vi /etc/named.conf

options {  
        listen-on port 53 { any; };  
        listen-on-v6 port 53 { any; };  
        directory       "/var/named";  
        dump-file       "/var/named/data/cache_dump.db";  
        statistics-file "/var/named/data/named_stats.txt";  
        memstatistics-file "/var/named/data/named_mem_stats.txt";  
        recursing-file  "/var/named/data/named.recursing";  
        secroots-file   "/var/named/data/named.secroots";  
        allow-query     { any; };  

빨간색 부분만 변경하시면됩니다. (기존엔 127.0.0.1 이나 localhost 등의 루프백ip로 설정되어있을겁니다)

저 빨간색부분을 수정하여 원하는 아이피만 허용하는것 역시 가능합니다만, 그럴일이 잘없긴 하죠.

 

# vi /etc/named.rfc1912.zones

…
zone "goatasriel.com" IN { 
        type master; 
        file "goat.zone"; 
        allow-update { none; }; 
}; 

가장아래에 추가하면 됩니다.

 

# vi /var/named/goat.zone (새로운파일작성, goat.zone은 임의의 이름입니다.)

$TTL 1D 
@       IN SOA  @ ns1.goatasriel.com. ( 
                                        2019032714      ; serial 
                                        1D      ; refresh 
                                        1H      ; retry 
                                        1W      ; expire 
                                        3H )    ; minimum 
        IN NS   ns1.goatasriel.com. 
        IN A    172.30.1.34 
ns1     IN A    172.30.1.34 
@       IN A    172.30.1.34 
www     IN A    172.30.1.34 

 

goat.zone의 소유권을 변경해줍니다.

# chown root.named /var/named/goat.zone

 

검증을 한번해봅시다.

# named-checkconf /etc/named.conf

(별말없음)

# named-checkzone goatasriel.com /var/named/goat.zone

zone goatasriel.com/IN: loaded serial 2019032714
OK

오류가 없는것을 확인하고 있다면 경고메세지를 참고하여 적절히 수정합니다.

 

53번 포트 방화벽을 해지합니다.

# vi /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="https"/>
  <port protocol="tcp" port="8080"/>
  <port protocol="tcp" port="53"/>
  <port protocol="udp" port="53"/>
</zone>

가장 아래에 53포트 2개의 구문을 참고하여 추가해줍니다. (tcp udp 둘다 열려있어야 dns서비스가능)

 

서비스를 시작합니다.

# systemctl start named

만약 오류가 발생하면 # systemctl status named 로 오류내용을 확인합니다.

 

접속할 클라이언트의 dns설정을 해줍니다.

저는 윈도우 네트워크 설정을 활용하겠습니다.

 

웹브라우저에 goatasriel.com으로 접속해봅니다. 

접속이 됨을 확인하였습니다.

저의 환경에선 당연히 외부인은 접속안됩니다.

 

※  이외에도 conf파일 zone파일들의 여러가지를 옵션들도 검색을 통해 공부하시면 도움이 됩니다.