Linux

웹서버(Apache)&DNS 서버 구축 기초 실습_[Rocky Linux]

KDY0218 2025. 11. 9. 01:06

서론

VMware 워크스테이션 pro를 이용했다.
서버A는 AlmaLinux 10.0 GUI 그래픽모드 , 서버B는 Rocky 9.6 GUI 그래픽모드 , 서버C는 AlmaLinux 최소설치로 진행했다.
편의상 root 권한으로 진행했다.
서버A (웹서버) 서버B (DNS) 서버C (클라이언트) 로 정했다.

 

목표

웹서버 구축 : Apache(httpd)를 설치하여 기본적인 웹 서비스 환경을 구성
DNS 서버 구축 : BIND(named)를 이용하여 사설 도메인을 관리하는 네임 서버를 구축
서비스 연동 및 검증 : 클라이언트에서 IP 주소가 아닌 도메인 이름으로 웹 서버에 정상적으로 접속되는지 확인한다.

 

 

 

 

 

서버A 웹 서버 구축

1. 패키지 설치 및 서비스 가동

dnf -yq install httpd
systemctl --now enable httpd

 

2. 방화벽 설정 - 웹 서비스(80포트)에 대한 접근을 허용한다.

firewall-cmd --add-service=http
firewall-cmd --runtime-to-permanent

 

3. 웹 서버 작동 확인

curl 192.168.111.100

결과 : 긴 HTML 코드가 출력되면 정상.

 

4. 테스트용 웹 페이지 생성

cd /var/www/html/
echo "werlcome" > index.html
ls
# index.html 파일이 생성되었는지 확인

 

5. 변경된 페이지 확인

curl 192.168.111.132

 

 

 

 

서버B : DNS 서버 구축

1. 패키지 설치 

dnf -y install bind bind-utils

 

2. 메인 설정 파일 수정

vi /etc/named.conf -> DNS 서비스가 외부 요청을 받을 수 있도록 설정한다.

options 블록을 위와 같이 수정한다. any,none,any

파일의 가장 아래쪽 마지막 줄에 위와 같이 도메인에 대한 영역 설정을 추가한다.

여기까지 추가하고 저장하고 나온다.

 

Zone 파일 생성

cd /var/named
cp -p named.empty 4gl.io.db
# -p 옵션은 파일 소유권(named:named)을 유지하기 위해 중요합니다.

 

 

Zone 파일 설정

vi 4gl.io.db
www    IN    A    192.168.111.132 -> vi 안에 들어가서 써야될 문장

파일의 가장 마지막 줄에 웹서버 (서버A)의 레코드를 추가한다.

추가설명 : 누군가 www.4gl.io를 를 찾으면 192.168.111.132로 안내하라는 의미이다.

 

 

 

 

 

서비스 시작 및 방화벽 설정

systemctl restart named
systemctl enable named
오류 발생 시 설정 파일 오타 확인 필요하다.

 

 

 

서버B에서 DNS 테스트

서버B가 자기 자신에게 DNS 질의를 하도록 설정하여 테스트

자기 자신을 네임서버로 지정한다.

echo "nameserver 192.168.111.133" > /etc/resolv.conf 
nslookup www.4gl.io -> 테스트 수행

 

결과 : 서버B에서 응답하고 Address에 서버A 주소가 나오면 성공이다.

 

 

 

 

 

 

클라이언트(서버C) 에서 최종확인

클라이언트 서버에서 도메인 주소로 웹 서버에 접속되는지 확인해본다.

 

DNS 서버 지정

클라이언트가 우리가 만든 DNS 서버(서버B) 를 사용하도록 설정

vi /etc/resolv.conf
nameserver 192.168.111.133 -> 기존 nameserver 주소 위에 추가하거나 수정

 

접속 테스트

웹브라우저나 curl 명령어로 접속을 시도해본다.

curl www.4gl.io

접속 성공!

 

최소 설치 모드에서는 그래픽 웹 브라우저가 없기때문에, 텍스트 기반의 웹 요청 도구인 curl 을 사용해서 확인했다.

웹서버(서버A)에서 만들어둔 index.html 파일의 내용이 그대로 출력된 것이다.

 

[Client] → [DNS 서버에게 IP 물어봄] → [192.168.111.132 알아냄] → [웹 서버에 접속] → [페이지 내용 받아옴] 

위 순서로 모든 과정이 작동했다.

 

*** welcome 오타.. ***

 

** 궁금하신 부분 댓글 남겨주시면 아는 선에서 최대한 빠르게 답변 남겨드리겠습니다.

** 틀린 부분 있을시 댓글로 남겨주시면 더 공부하겠습니다.