Rocky Linux 네임서버 설치
페이지 정보
작성자 아름다운 작성일 24-03-10 15:49 조회 668 댓글 0본문
네임서버 구축하기
참조: https://gam1532.tistory.com/49
https://blog.naver.com/host365/222983239445
https://docs.rockylinux.org/ko/guides/dns/private_dns_server_using_bind/
1. Bind 설치 하기
dnf install bind bind-chroot bind-utils
2. BIND 설정하기
/etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
allow-query-cache { any; };
--------------------------------------------------------------------------------
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2-1. 확인
named-checkconf /etc/named.conf
만약 문법에 문제가 없다면 아무런 메시지가 없이 끝나지만 문제가 있으면 아래와 같이 문제가 있는 메시지가 뜹니다.
3-1. rfc1921.zone 수정
zone "example.com" IN { => 정방향 조회, 도메인 주소는 임의로 정했습니다.
type master;
file "example.com.zone"; => example.com. 영역의 DNS 정보를 입력 할 파일입니다.
allow-update { none; }; 파일이름은 임의로 정할 수 있지만 보통 저렇게 만듭니다.
};
zone "34.23.12.in-addr.arpa" IN { => 역방향 조회, 설명은 아래에 하겠습니다.
type master;
file "example.com.rev"; => 역방향 조회에 대한 DNS 정보를 입력 할 파일 입니다.
allow-update { none; }; 파일 이름은 임의로 정했습니다.
};
3-2. example.com.zone 과 example.com.rev 파일만들고 권한 소유자 변경
# cp named.localhost example.com.zone
# cd /var/named
# chmod 644 example.com.zone
# chown root.named example.com.zone
# cp named.localhost example.com.rev
# chmod 644 example.com.rev
# chown root.named example.com.rev
3-3. example.com.zone => 정방향 조회 설정파일
# vi /var/named/example.com.zone => 정방향 조회 설정파일
--------------------------------------------------------------
$TTL 1D
@ IN SOA example.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 12.23.34.45 => 루트 IP
ns A 12.23.34.45 => 네임서버 IP
www A 12.23.34.46 => 웹서버 IP
--------------------------------------------------------------
3-4. example.com.rev => 역방향 조회 설정파일
# vi /var/named/example.com.rev => 역방향 조회 설정파일
--------------------------------------------------------------
$TTL 1D
@ IN SOA example.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 12.23.34.45 => 루트 IP
45 PTR ns.example.com. => 12.23.34.45 의 도메인 주소
46 PTR www.example.com. => 12.23.34.46 의 도메인 주소
4. 확인
# named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: loaded serial 0
OK
# named-checkzone example.com /var/named/example.com.rev
zone example.com/IN: loaded serial 0
OK
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
zone 파일과 영역관리 파일의 문법 오류가 있는지 체크해주는 명령어 입니다.
"named-checkzone {도메인영역} {zone 설정파일 위치}" 형태로 사용 가능하며 OK 가 뜨면 문제 없음
"named-checkconf {도메인 영역 관리 파일 위치}" 형태로 사용 가능하며 아무것도 뜨지 않으면 문제 없음
5. named 실행 및 등록
# systemctl start named
# systemctl enable named
6. 테스트
# systemctl status named
7. 기동로그 체크
# 쉘에서 실행
journalctl -u named
# nslookup [조회할 도메인] [도메인서버]
# 로컬호스트로 조회
nslookup ns.jmlim 127.0.0.1
# NIC 주소로 조회
nslookup ns.jmlim 192.168.100.1
# 쉘에서 실행
nslookup 192.168.100.1 127.0.0.1
8. 방화벽 규칙 - firewalld
첫 번째 단계는 LAN 네트워크를 "신뢰할 수 있는" 영역에 추가하는 것입니다.
firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent
두 가지 서비스를 "trusted" zone에 추가해야 합니다.
firewall-cmd --zone=trusted --add-service=ssh --permanent
firewall-cmd --zone=trusted --add-service=dns --permanent
기본적으로 활성화된 "public" zone에서 SSH 서비스를 제거해야 합니다.
firewall-cmd --zone=public --remove-service=ssh --permanent
다음으로 방화벽을 다시 로드하고 변경한 zone을 나열합니다.
firewall-cmd --reload
firewall-cmd --zone=trusted --list-all
서비스와 소스 네트워크를 올바르게 추가했다면 다음과 같이 나와야 합니다.
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 192.168.1.0/24
services: dns ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
"public" zone을 나열하면 SSH 액세스가 허용되지 않은 것을 확인할 수 있습니다.
firewall-cmd --zone=public --list-all
다음과 같이 표시됩니다:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
이러한 규칙은 192.168.1.0/24 네트워크의 호스트로부터 로컬 DNS 서버의 DNS 해결을 가능하게 합니다. 또한 이러한 호스트에서 로컬 DNS 서버로 SSH를 할 수 있습니다.
결론
개별 워크스테이션에서 /etc/hosts를 사용하면 내부 네트워크의 시스템에 액세스할 수 있지만 해당 시스템에서만 사용할 수 있습니다. _bind_를 사용하여 개인 DNS 서버를 추가함으로써 DNS에 호스트를 추가하고, 워크스테이션이 이 개인 DNS 서버에 액세스할 수 있다면 이러한 로컬 서버에 액세스할 수 있습니다.
인터넷에서 기계를 해결해야 하는 필요가 없지만 여러 기기에서 로컬 서버로 로컬 액세스가 필요한 경우, 개인 DNS 서버를 사용하는 것을 고려해 보세요.
참조: https://gam1532.tistory.com/49
https://blog.naver.com/host365/222983239445
https://docs.rockylinux.org/ko/guides/dns/private_dns_server_using_bind/
1. Bind 설치 하기
dnf install bind bind-chroot bind-utils
2. BIND 설정하기
/etc/named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { any; };
allow-query-cache { any; };
--------------------------------------------------------------------------------
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
2-1. 확인
named-checkconf /etc/named.conf
만약 문법에 문제가 없다면 아무런 메시지가 없이 끝나지만 문제가 있으면 아래와 같이 문제가 있는 메시지가 뜹니다.
3-1. rfc1921.zone 수정
zone "example.com" IN { => 정방향 조회, 도메인 주소는 임의로 정했습니다.
type master;
file "example.com.zone"; => example.com. 영역의 DNS 정보를 입력 할 파일입니다.
allow-update { none; }; 파일이름은 임의로 정할 수 있지만 보통 저렇게 만듭니다.
};
zone "34.23.12.in-addr.arpa" IN { => 역방향 조회, 설명은 아래에 하겠습니다.
type master;
file "example.com.rev"; => 역방향 조회에 대한 DNS 정보를 입력 할 파일 입니다.
allow-update { none; }; 파일 이름은 임의로 정했습니다.
};
3-2. example.com.zone 과 example.com.rev 파일만들고 권한 소유자 변경
# cp named.localhost example.com.zone
# cd /var/named
# chmod 644 example.com.zone
# chown root.named example.com.zone
# cp named.localhost example.com.rev
# chmod 644 example.com.rev
# chown root.named example.com.rev
3-3. example.com.zone => 정방향 조회 설정파일
# vi /var/named/example.com.zone => 정방향 조회 설정파일
--------------------------------------------------------------
$TTL 1D
@ IN SOA example.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 12.23.34.45 => 루트 IP
ns A 12.23.34.45 => 네임서버 IP
www A 12.23.34.46 => 웹서버 IP
--------------------------------------------------------------
3-4. example.com.rev => 역방향 조회 설정파일
# vi /var/named/example.com.rev => 역방향 조회 설정파일
--------------------------------------------------------------
$TTL 1D
@ IN SOA example.com. root(
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 12.23.34.45 => 루트 IP
45 PTR ns.example.com. => 12.23.34.45 의 도메인 주소
46 PTR www.example.com. => 12.23.34.46 의 도메인 주소
4. 확인
# named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: loaded serial 0
OK
# named-checkzone example.com /var/named/example.com.rev
zone example.com/IN: loaded serial 0
OK
# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones
zone 파일과 영역관리 파일의 문법 오류가 있는지 체크해주는 명령어 입니다.
"named-checkzone {도메인영역} {zone 설정파일 위치}" 형태로 사용 가능하며 OK 가 뜨면 문제 없음
"named-checkconf {도메인 영역 관리 파일 위치}" 형태로 사용 가능하며 아무것도 뜨지 않으면 문제 없음
5. named 실행 및 등록
# systemctl start named
# systemctl enable named
6. 테스트
# systemctl status named
7. 기동로그 체크
# 쉘에서 실행
journalctl -u named
# nslookup [조회할 도메인] [도메인서버]
# 로컬호스트로 조회
nslookup ns.jmlim 127.0.0.1
# NIC 주소로 조회
nslookup ns.jmlim 192.168.100.1
# 쉘에서 실행
nslookup 192.168.100.1 127.0.0.1
8. 방화벽 규칙 - firewalld
첫 번째 단계는 LAN 네트워크를 "신뢰할 수 있는" 영역에 추가하는 것입니다.
firewall-cmd --zone=trusted --add-source=192.168.1.0/24 --permanent
두 가지 서비스를 "trusted" zone에 추가해야 합니다.
firewall-cmd --zone=trusted --add-service=ssh --permanent
firewall-cmd --zone=trusted --add-service=dns --permanent
기본적으로 활성화된 "public" zone에서 SSH 서비스를 제거해야 합니다.
firewall-cmd --zone=public --remove-service=ssh --permanent
다음으로 방화벽을 다시 로드하고 변경한 zone을 나열합니다.
firewall-cmd --reload
firewall-cmd --zone=trusted --list-all
서비스와 소스 네트워크를 올바르게 추가했다면 다음과 같이 나와야 합니다.
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: 192.168.1.0/24
services: dns ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
"public" zone을 나열하면 SSH 액세스가 허용되지 않은 것을 확인할 수 있습니다.
firewall-cmd --zone=public --list-all
다음과 같이 표시됩니다:
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
이러한 규칙은 192.168.1.0/24 네트워크의 호스트로부터 로컬 DNS 서버의 DNS 해결을 가능하게 합니다. 또한 이러한 호스트에서 로컬 DNS 서버로 SSH를 할 수 있습니다.
결론
개별 워크스테이션에서 /etc/hosts를 사용하면 내부 네트워크의 시스템에 액세스할 수 있지만 해당 시스템에서만 사용할 수 있습니다. _bind_를 사용하여 개인 DNS 서버를 추가함으로써 DNS에 호스트를 추가하고, 워크스테이션이 이 개인 DNS 서버에 액세스할 수 있다면 이러한 로컬 서버에 액세스할 수 있습니다.
인터넷에서 기계를 해결해야 하는 필요가 없지만 여러 기기에서 로컬 서버로 로컬 액세스가 필요한 경우, 개인 DNS 서버를 사용하는 것을 고려해 보세요.
댓글목록 0
등록된 댓글이 없습니다.
