본문 바로가기
개발/Linux

나만의 DNS서버 만들기 (rocky 9 linux + bind9)

by lucidmaj7 2025. 7. 26.
반응형

사설망에서만 관리되는 특정 도메인을 사용한다던지, 접근 통제를 위해 dns 쿼리 모니터링을 한다던지..여러가지 목적으로 내부망에 DNS서버를 운용할 수 있다. 

오늘은 이렇게 사설 DNS서버를 구축할 수 있는 bind9을 rocky linux에 설정해보겠다.

1. 설치

설치는 간단하다.

sudo dnf install bind bind-utils -y

 

2. 설정 파일

이렇게 설치 하게 되면 bind9의 데몬은 named라는 서비스로 돌게된다. 메인 설정 파일은 다음 경로이다.

/etc/named.conf

 

3. 설정 예시

3.1. any로 쿼리 받기

초기 설치하게 되면 localhost의 쿼리만 받을수 있게되어있다. 0.0.0.0으로 바인드해줘야 외부 요청을 받을 수 있다.

listen-on port에 any;라고 명시하자. allow-query에도 any;라고 명시하자.

3.2. 나만의 도메인 연결하기

예를 들면 lucidmaj7.local이라는 도메인을 192.168.0.144로 매칭시키려한다고 하자.

다음과 같이 named.conf에 zone을 추가해준다.

zone "lucidmaj7.local" IN {
        type master;
        file "lucidmaj7.local.zone";
        allow-update { none; };
};

이 설정의 세부 의미는 아래와 같음.

zone "lucidmaj7.local" IN lucidmaj7.local 도메인에 대한 IN(Internet) 클래스의 DNS zone을 설정함.
type master; 이 서버가 해당 zone의 마스터(권한 있는 소스) 서버임을 의미함.즉, 이 서버에서 해당 도메인의 모든 레코드를 직접 관리함.
file "lucidmaj7.local.zone"; 해당 zone에 대한 레코드 정보가 저장된 파일 이름을 지정함. 이 파일은 일반적으로 /var/named/ 또는 /etc/bind/ 아래에 위치함.
allow-update { none; }; **동적 업데이트(DNS UPDATE)**를 허용하지 않겠다는 의미. 즉, 클라이언트나 DHCP 서버 등이 레코드를 자동으로 추가/변경할 수 없음.

 

다음 lucidmaj7.local.zone 파일을 생성해 줘야한다.

/var/named/lucidmaj7.local.zone 파일을 생성하자.

$TTL 86400
@       IN  SOA     ns1.lucidmaj7.local. admin.lucidmaj7.local. (
                        2025072601 ; serial
                        3600       ; refresh
                        1800       ; retry
                        604800     ; expire
                        86400 )    ; minimum

        IN  NS      ns1.lucidmaj7.local.
ns1     IN  A       192.168.0.144
@       IN  A       192.168.0.144
www     IN  A       192.168.0.144

각 의미는 gpt한테 물어보자.

암튼 저장을 하고 권한설정을 해줘야한다.

sudo chown root:named /var/named/lucidmaj7.local.zone
sudo chmod 640 /var/named/lucidmaj7.local.zone

다음 서비스 restart

sudo service named restart

3.3. 클라이언트 설정

임의의 단말에 named데몬이 돌고있는 서버로 DNS설정을 수동으로 해주자.

nsloopup으로 테스트해보자.

정상적으로 설정되었다면 ip주소를 잘 받아오는 것을 볼 수 있다.

웹서버 접속도 잘된다.

 

반응형

댓글