* 실습 내용 정리
1. 웹 서버 구축
- 메인 서버(Server)에 httpd 설치 및 실행
- 방화벽에서 HTTP 서비스 접근 허용
- 클라이언트(LClient)에서 서버 IP(192.168.111.100)로 접속하여 Apache 기본 테스트 페이지가 열리는 것 확인
- 이후 서버의 웹 루트 디렉터리(/var/www/html)에 HTML 파일을 작성하여, 브라우저에서 커스텀 웹 페이지가 출력되는지 확인
2. FTP 서버 구축
- Server(B)에 vsftpd 설치
- 방화벽에서 FTP 서비스 허용
- 접속 시 출력될 메시지 /var/ftp/welcome.msg 파일에 작성
- FTP 서비스를 실행한 후, 클라이언트에서 FTP 설치 후 FTP 서버에 접속하여 디렉터리 조회가 가능한지 확인
- 접속 시 설정한 Welcome 메시지가 정상 출력되는 것도 확인
3. DNS 서버 구축 (권한 서버)
- 메인 서버(192.168.111.100)에 BIND 설치
- 도메인 이름 thisislinux.com을 관리하는 권한 DNS 서버 설정
- 존(zone) 파일을 생성하여, www.thisislinux.com은 웹 서버(192.168.111.100), ftp.thisislinux.com은 FTP 서버(192.168.111.200)에 연결되도록 구성
- 구문 검사를 통해 설정 오류가 없는 것을 확인한 뒤, DNS 서비스 실행
- 클라이언트에서 nslookup으로 질의했을 때 올바른 IP 주소가 반환되는 것 확인
4. 캐싱 전용 DNS 서버
- 네트워크 설정에서 각 장비의 DNS 주소 변경
- DNS 서버 자신은 127.0.0.1을 사용하도록 수정
- 클라이언트와 FTP 서버는 192.168.111.100(DNS 서버 IP)을 사용하도록 수정
- DNS 설정 파일(named.conf)을 수정하여 모든 호스트가 질의할 수 있도록 허용하고, 캐싱 기능을 활성화
- DNS 서비스를 재시작한 후, 클라이언트와 서버에서 nslookup 테스트
- 클라이언트에서 www.thisislinux.com 접속 시 웹 서버 페이지가 열리고, ftp.thisislinux.com 접속 시 FTP 서버에 접속되며 Welcome 메시지가 출력되는 것 확인
* 캐싱 DNS 서버란?
DNS 서버는 크게 두 가지로 나눌 수 있다.
- 권한 있는 DNS 서버 (Authoritative DNS)
- 특정 도메인에 대한 공식 정보(존 파일)를 직접 가지고 있는 서버
- 예: thisislinux.com → www.thisislinux.com = 192.168.111.100, ftp.thisislinux.com = 192.168.111.200
- 캐싱 전용 DNS 서버 (Caching DNS)
- 직접 존 파일을 가지고 있지 않음
- 클라이언트 요청을 대신 외부 DNS 서버에 질의 → 응답을 캐시에 저장
- 같은 요청이 반복되면 캐시에서 바로 응답 → 빠른 처리 가능

URL 입력 후 IP 주소 획득 과정 (hosts → DNS)
- 사용자가 브라우저에 URL 입력 (예: www.hanbit.co.kr)
- 시스템은 /etc/host.conf 설정에 따라 우선순위를 확인
- order hosts, bind → 먼저 /etc/hosts, 없으면 DNS 서버 순으로 조회
- /etc/hosts 파일에 등록된 IP가 있으면 바로 사용
- 없을 경우 /etc/resolv.conf에 지정된 DNS 서버로 질의
- DNS 서버가 존재하지 않으면 "호스트 이름을 알 수 없음" 반환
- DNS 서버가 존재하면 IP 주소를 응답받음
- 최종적으로 IP 주소를 획득 → 접속 진행
즉, 로컬 hosts 파일 → resolv.conf 설정된 네임 서버 순서로 이름을 해석

DNS 질의 과정
- PC에서 브라우저에 www.nate.com 입력
- /etc/resolv.conf 에 지정된 로컬 네임 서버(캐싱 DNS)로 질의
- 로컬 네임 서버는 우선 자신의 캐시 DB 확인
- 있으면 바로 응답
- 없으면 Root 네임 서버에 질의 시작
- Root 서버는 "com 네임 서버로 가라" 응답
- 로컬 네임 서버 → com 네임 서버 질의
- com 네임 서버 → "nate.com 네임 서버로 가라" 응답
- 로컬 네임 서버 → nate.com 네임 서버 질의
- nate.com 네임 서버가 최종적으로 www, ftp, mail 각각의 IP 주소 응답
- 로컬 네임 서버가 PC에 IP 전달
- PC는 획득한 IP(예: 111.111.111.111)로 웹 서버에 접속
1. 웹 서버 구축 (Apache httpd)
1) httpd 설치 및 실행

dnf -y install httpd

systemctl start httpd
systemctl enable httpd
systemctl status httpd
2) 방화벽 설정


firewall-config 명령으로 방화벽 설정에 들어와서,
- [설정] - [영구적]
- [영역] - [public]에서 http, https 선택

[옵션] - [Firewall 다시 불러오기]
3) 접속 테스트

LClient 가상머신 브라우저에서 192.168.111.100 접속되는 것 확인

다시 Server 가상머신에서 /var/www/html/index.html 작성

브라우저에서 127.0.0.1 접속되는 것 확인
웹서버 구축 완료
2. FTP 서버 구축 (vsftpd)
FTP 서버는 Server(B) (192.168.111.200)에서 운영.

dnf install -y install lynx
1) vsftpd 설치

dnf install -y install vsftpd
2) 방화벽 설정

firewall-cmd --permanent -add-service=ftp
- FTP 서비스의 방화벽 설정 허용
firewall-cmd --reload
- 설정 내용 적용
3) 배너 메시지 설정


nano /var/ftp/welcome.msg

nano /etc/vsftpd/vsftpd.conf
- banner_file=/var/ftp/welcome.msg 추가하여 배너 파일 경로 지정
4) 서비스 실행

systemctl restart vsftpd
systemctl enable vsftpd
systemctl status vsftpd
FTP 서버 구축 완료
3. DNS 권한 서버 구축 (thisislinux.com 도메인 설정)
Server(192.168.111.100)에서 BIND를 설치하고 thisislinux.com에 대한 권한(Authoritative) DNS를 구성하였다.
1) bind 설치

dnf -y install bind bind-chroot
2) /etc/named.conf 편집

zone "thisislinux.com" IN {
type master;
file "thisislinux.com.db";
allow-update { none; };
};

named-checkconf 명령으로 구문 검사
아무것도 안 나오면 틀린 문법이 없다는 것이다.
3) 정방향(포워드) 존 파일 생성

cd /var/named
touch thisislinux.com.db

nano thisislinux.com.db

named-checkzone [도메인명] [설정파일명] 명령으로 구문 검사
4) 방화벽 설정

firewall-config에서 dns 서비스 허용

[옵션] - [Firewalld 다시 불러오기]
5) 서비스 실행

네임 서비스 재시작 및 작동 확인
DNS 서버 구축 완료
4. 캐싱 DNS 설정
같은 Server(192.168.111.100)가 권한 서버 + 캐싱 DNS 역할을 함께 수행하도록 구성하였다.
1) DNS 주소 변경
(1) Server(B) (FTP 서버)

FTP 서버도 DNS 질의를 반드시 중앙 DNS 서버에 위임해야 하므로,
nmtui에서 DNS를 192.168.111.100으로 변경

다시 Active 해주기

nslookup 명령으로 확인

/etc/resolv.conf 파일 확인
(2) LClient (사용자 PC)

사용자가 웹/FTP에 접속할 때, 직접 IP 입력이 아닌 도메인 이름을 쓰도록 DNS 서버를 지정.

브라우저에서 192.168.111.100 접속 확인
(3) Server (DNS+Web 서버)

DNS 서버 자신은 외부 DNS 대신 자기 자신(localhost)을 사용하도록 해야 한다.

/etc/resolv.conf 파일 확인
2) /etc/named.conf 수정
권한 DNS 서버를 캐싱 DNS로도 동작하도록 수정하였다.
Server 가상머신을 캐싱 전용 네임 서버로 구축하기 위해 캐싱 전용 네임 서버와 관련된 설정 파일인 /etc/named.conf를 열어 수정한다.


- listen-on : 모든 IP에서 요청 수신
- allow-query { any; }; : NAT 네트워크 내 모든 호스트가 DNS 요청 가능
- dnssec-validation no; : 실습 환경에서 DNSSEC 검증 비활성화(외부 도메인 질의 실패 방지)
VMware 프로그램의 네트워크 주소 안에 있는 모든 컴퓨터가 네임 서버를 사용할 수 있게 수정하였다.
systemctl restart named까지 하기.
5. 확인
1) 클라이언트에서 웹 서버 접속

Server(B)에서 nslookup 결과

LClient nslookup 결과

LClient 브라우저에서 http://www.thisislinux.com 접속 확인
IP가 아닌 thisislinux.com으로 웹 서버에 접속이 잘 된다.
2) 클라이언트에서 FTP 서버 접속

LClient에서 ftp 명령어를 사용할 수 있도록 ftp 패키지 설치.
설치 후 root에서 exit로 빠져나와 일반 사용자 계정에서 테스트 진행.

ftp ftp.thisislinux.com 접속 성공
- Connected to ftp.thisislinux.com (192.168.111.200).
220 (vsFTPd 3.0.3)
Name (ftp.thisislinux.com:test): test
331 Please specify the password.
Password:
230 Login successful.

Server(B) (FTP 서버)에서 vsftpd 재시작

LClient로 가서, 다시 ftp ftp.thislinux.com 하면
welcome 메시지가 나오는 것을 확인.
캐싱 DNS 서버 구축 끝.
'OS > Linux' 카테고리의 다른 글
| [Linux 서버] FTP 서버 구축 (0) | 2025.09.05 |
|---|---|
| [Linux 서버] 메일 서버 구축 (0) | 2025.09.05 |
| [Linux 서버] 디스크 관련 명령어 정리 (0) | 2025.09.04 |
| [Linux 서버] Shell Script로 RAID 구현 자동화 (0) | 2025.09.02 |
| [Linux 서버] Shell Script Programming (0) | 2025.09.02 |