다음과 같은 토폴로지를 구성하여, 리눅스 DNS 서버 설정 실습을 진행해보도록 하자.
- Rocky LINUX1 : 192.168.1.10 (DNS 서버, WEB 서버)
- Rocky LINUX2 : 192.168.1.20 (FTP 서버)
1) 라우터 IP 주소 및 NAT 설정
Router(config)# int f0/0
Router(config-if)# ip add dhcp
Router(config-if)# no shut
Router(config)# int f1/0
Router(config-if)# ip add 192.168.10.254 255.255.255.0
Router(config-if)# no shut
현재, 라우터 인터페이스의 IP 주소 및 NAT 설정 사항은 다음과 같다.
2) 리눅스 IP 주소 설정
192.168.10.10 의 Rocky LINUX 가 DNS 서버로서 동작하도록 다음과 같이 IP 주소를 설정한다.
DNS 서버로서 동작하도록 할 예정이므로 DNS 주 서버로 해당 IP 를 지정한다.
IP 주소 설정이 완료된 후, 외부와의 통신이 정상적으로 이루어지는지 확인한다.
DNS 클라이언트로서 DNS 서버에 질의해야하므로 DNS 주 서버로 Rocky LINUX 2 의 IP 주소를 지정한다.
마찬가지로 IP 주소 설정이 완료된 후, 외부와의 통신이 정상적으로 이루어지는지 확인한다.
3) DNS 서비스 데몬 설치
dnf install bind bind-chroot* -y
service named restart
netstat -lntup | grep named
DNS 서버 데몬을 설치한 후, 서비스가 정상적으로 동작하고 있는지 확인한다. bind-chroot 패키지를 통해, 서비스 데몬과 설치한 사용자만 경로를 알 수 있도록 시스템의 / 루트 디렉토리를 가상 디렉토리로 변환한다. 따라서, bind 패키지의 보안 성능을 향상시킬 수 있다.
3) DNS 환경설정 파일 수정
/etc/named.conf 파일을 다음과 같이 수정한다.
listen-on-port 53 { any; };
allow-query { any; };
DNS 서버로서 동작해야 하므로, 53번 포트를 통해 모든 네트워크 인터페이스로부터 들어오는 DNS 쿼리를 수신하도록 설정한다. 또한, 모든 IP 주소에서 DNS 서버의 쿼리를 수신할 수 있도록 허용한다.
recursion yes;
재귀적 쿼리 처리를 허용한다는 의미로, DNS 서버가 클라이언트로부터 받은 쿼리를 해결하기 위해 다른 DNS 서버에 대한 질의를 수행할 수 있도록 한다.
dnssec-enable no; -> DNSSEC 기능 비활성화
dnssec-validation no; -> DNSSEC 검증 비활성화
DNSSEC는 DNS의 보안을 강화하는 기술로, DNS 응답에 디지털 서명을 추가하여, DNS 쿼리 및 응답이 변조되지 않았음을 보장하는 전자 서명 기반의 보안 프로토콜이다. 단, 해당 기능을 활성화할 경우 서버 성능이 저하될 수 있으므로 본 실습에서는 비활성화한다.
4) zone 파일 지정
/etc/named.conf 파일의 복잡성을 감소시키기 위해, root zone 정보를 제외한 나머지는 /etc/named.rfc1912.zones 에 설정한다. 그 후, /etc/named.conf 파일의 하단에 include 구문을 통해 포함시킨다.
zone "sevas10.com" IN {
type master;
file "sevas10.zone";
allow-update { none; };
};
/etc/named.rfc1912.zones 파일에 도메인을 관리하기 위한 zone 파일을 지정한다.
5) zone 파일 생성
/var/named 디렉토리 하위에 존재하는 named.localhost, named.empty, named.loopback 파일을 활용하여 zone 파일을 생성한다.
DNS 레코드를 정의하는 포맷이 작성되어있는 파일을 활용하여 zone 파일을 생성한다.
cp -a named.localhost sevas10.zone
단, 권한 및 속성까지 그대로 복사해야 하므로 -a 옵션으로 zone 파일을 생성한다.
다음과 같이 WEB, FTP, 네임 서버의 도메인 정보를 작성한다.
- $TTL : Time To Live 의 약자로, 다른 DNS 서버에서 조회할 경우 캐시에 보관할 시간을 지정한다.
- SOA : Start Of Authority 의 약자로, 도메인 관리자 메일 주소 및 일련 번호 등의 DNS 핵심 정보를 지정한다. @ 기호는 /etc/named.conf 파일에 작성되어있는 origin 도메인을 의미하며, 사용자 지정 도메인의 경우 마지막에 반드시 . 온점을 작성해주어야 한다.
- 개별 도메인 : [도메인명][IN][Class][Record Type][우선순위][도메인 or IP 주소] 형식으로 지정한다.
service named restart
파일 수정이 완료되면, DNS 서버 데몬을 재구동한다.
6) DNS 서비스 방화벽 해제
Client 에서도 도메인 조회가 가능하도록 53번 TCP 포트의 방화벽을 해제해주어야 한다.
firewall-cmd --permanent --add-port=53/tcp
firewall-cmd --reload
7) DNS 서버 정상 작동 확인
192.168.1.10 의 IP 주소를 사용하는 DNS 서버가 정상적으로 동작하는지 확인한다.
cat /etc/resolv.conf
단, DNS 서버 주소는 192.168.1.10 로 설정되어있어야 정상 동작하므로 해당 파일을 꼭 확인한다. (/etc/resolv.conf 파일을 직접 수정하는 경우, NetworkManager 서비스 데몬을 돌리면 원본 내용으로 복귀하므로 주의한다.)
nslookup www.sevas10.com
nslookup ftp.sevas10.com
웹 서버와 FTP 서버 도메인이 모두 정상적으로 조회되는 것을 확인할 수 있다.
cat /etc/resolv.conf
마찬가지로, Client 의 DNS 서버 주소 또한 192.168.1.10 로 설정해주어야 한다.
nslookup www.sevas10.com
nslookup ftp.sevas10.com
Client 에서도 웹 서버와 FTP 서버 도메인이 모두 정상적으로 조회되는 것을 확인할 수 있다.
8) 웹 서버 설정
웹 서버의 도메인 주소에 매핑된 IP 주소는 192.168.1.10 이므로 해당 주소를 가진 Rocky LINUX 1 에서 웹 서버를 설정한다.
dnf install httpd*
service httpd restart
netstat -lntup | grep httpd
웹 서비스 사용을 위해, httpd 데몬을 설치한 후 정상적으로 작동하는지 확인한다.
cat /var/www/html/index.html
>
웹 서버 접속 시, 메인으로 출력된 웹 페이지 파일의 내용을 다음과 같이 작성한다.
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
로컬 PC 에서 웹 서버로의 접속이 가능하도록 80번 TCP 포트의 방화벽을 해제한다.
9) FTP 서버 설정
FTP 서버의 도메인 주소에 매핑된 IP 주소는 192.168.1.20 이므로 해당 주소를 가진 Rocky LINUX 2 에서 FTP 서버를 설정한다.
dnf install vsfptd*
service vsftpd restart
netstat -lntup | grep vsftpd
FTP 서비스 사용을 위해, vsftpd 데몬을 설치한 후 정상적으로 작동하는지 확인한다.
firewall-cmd --permanent --add-service ftp
firewall-cmd --reload
로컬 PC 에서 FTP 서버로의 접속이 가능하도록 FTP 서비스의 방화벽을 해제한다.
chroot_local_user=YES
allow_writeable_chroot=YES
최상위 디렉토리를 접속한 사용자의 홈 디렉토리로 설정하며, 쓰기 권한을 부여한다.
uselist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/sevaslist
또한, userlist 파일을 활성화하여 해당 파일 목록에 있는 계정만 접속할 수 있도록 제한한다.
userlist 파일의 내용은 다음과 같으므로, sevas 계정만이 FTP 서버에 접속할 수 있다.
10) 로컬 PC 에서의 웹 서버 및 FTP 서버 접속
로컬 PC 에서 앞서 설정한 DNS 서버를 통해, 웹 서버와 FTP 서버로 접속할 수 있도록 DNS 서버 주소 설정을 다음과 같이 수정한다.
VMnet1 번의 DNS 서버 주소를 192.168.1.10 으로 설정한다.
로컬 PC 의 DNS 서버 설정 또한, 192.168.1.10 주소로 설정한다.
ping www.sevas10.com
ping ftp.sevas10.com
로컬 PC 의 DNS 주소 설정이 완료되었다면, FTP 및 WEB 서버로의 통신이 정상적으로 이루어지는지 확인한다.
웹 브라우저를 통해 WEB 서버의 도메인으로 접속을 시도하면, 앞서 설정하였던 기본 웹 페이지가 출력되는 것을 확인할 수 있다.
마찬가지로, FTP 도메인 이름으로 FTP 서버로의 접속이 가능하다. 또한, 최상위 디렉토리가 접속 계정의 홈디렉토리인 것을 확인할 수 있다.
단, userlist 를 활성화하였으므로 sevas 계정 이외의 계정들은 접속이 제한된다.
*주의*
만약 설정 파일 수정후 서비스 재구동이 되지 않는다면, /var/log/message 파일을 확인해보자.
/etc/vsftpd/vsftpd.conf 파일의 allow_writeable_chroot 필드에 오타가 나서, 서비스 재구동이 이루어지지 않았음을 확인할 수 있다.
파일의 내용을 다음과 같이 수정하면 서비스 재구동이 정상적으로 이루어진다.
공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)
'Network > GNS Practice' 카테고리의 다른 글
[Network / GNS] 이중화 프로토콜 HSRP (0) | 2025.02.20 |
---|---|
[Network / GNS] GNS NAT 주소 변환 실습 (PAT) (0) | 2025.01.31 |
[Network / GNS] GNS DHCP IP 동적 할당 실습 (0) | 2025.01.29 |
[Network / GNS] 클라우드 UDP 상호 연결 실습 (0) | 2025.01.12 |
[Network / GNS] GNS 설치 및 사전 설정 (0) | 2025.01.03 |