리눅스 6주차 — DNS, Apache, Nginx, SSL 완벽 정리
이번 주는 DNS 서버 구축부터 웹 서버(Apache/Nginx) 운용, 그리고 SSL 인증서 적용까지 다뤘습니다.
1. DNS 기초 명령어
nslookup — 도메인 IP 조회
# 기본 사용 (시스템 기본 DNS 서버 사용)
nslookup www.naver.com
# 특정 DNS 서버(1.1.1.1, Cloudflare)를 지정해서 조회
nslookup www.naver.com 1.1.1.1
PTR 레코드란?
일반 DNS는 "도메인 → IP"를 조회하지만, PTR 레코드는 반대로 "IP → 도메인"을 알아내는 역방향 조회(Reverse Lookup) 에 사용됩니다.
2. Caching Name Server (캐싱 네임서버)
Caching Name Server는 클라이언트의 DNS 질의를 대신 수행(재귀 질의)하고, 응답 결과를 TTL(Time To Live) 시간 동안 캐시에 저장합니다. 덕분에 같은 질의가 반복될 때 빠르게 응답할 수 있습니다.
설정 파일 수정
vi /etc/named.conf # named 메인 설정파일 편집 (포트 등 수정)
방화벽 및 포트 확인
firewall-cmd --list-all # 방화벽 규칙 전체 확인
netstat -ntlp # 현재 열려 있는 포트 및 프로세스 확인
DNS 설정 디렉터리
cd /var/named # zone 파일들이 위치하는 디렉터리
tail /etc/named.conf # 설정 파일 끝부분 확인
특정 캐싱 네임서버로 dig 질의
# 특정 서버(@IP)를 지정해서 DNS 질의
dig @192.168.80.60 www.google.com
3. Authoritative DNS (권한 네임서버)
Authoritative DNS는 특정 Zone의 원본 데이터를 직접 보유하고 있어, 다른 서버에 묻지 않고 직접 정답을 내려주는 서버입니다.
- Zone: DNS 서버가 관리하는 도메인 단위
- Type 종류: master(주 서버), slave(보조 서버), hint(루트 서버 안내)
Zone 파일 작성 예시
/var/named/ 디렉터리에 zone 파일을 생성합니다.
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2026022101 ; 시리얼 번호 (날짜 기반으로 관리)
3600 ; Refresh
900 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
IN NS ns1.example.com.
ns1 IN A 192.168.80.53
www IN A 192.168.80.100
named 재시작 및 조회 확인
systemctl restart named
# 특정 네임서버에 조회해서 결과 확인
nslookup www.example.com 192.168.4.131
4. CNAME 레코드
CNAME(Canonical Name) 은 도메인에 별칭(Alias)을 붙이는 레코드입니다.
; www.example.com을 실제 도메인인 example.com의 CNAME으로 설정
www IN CNAME example.com.
5. named-chroot (보안 격리)
named-chroot는 chroot 기술을 활용해 named 프로세스의 루트 디렉터리를 제한하는 보안 설정입니다.
효과 설명
| 접근 범위 제한 | 지정된 디렉터리 외부 접근 차단 |
| 시스템 보호 | 전체 파일시스템 접근 불가 |
| 피해 최소화 | 침해 발생 시 영향 범위를 격리 |
6. Apache vs Nginx 비교
구분 Apache Nginx
| 작동 방식 | 프로세스/스레드 기반 | 이벤트 기반 (Event-Driven) |
| 비유 | 손님마다 새 직원 배치 | 한 명이 여러 테이블 동시 관리 |
| 장점 | 다양한 모듈, 안정적 | 적은 메모리로 대규모 접속 처리 |
| 단점 | 접속 폭주 시 무거워짐 | 동적 콘텐츠 처리 다소 까다로움 |
| 주 용도 | 복잡한 기능의 웹사이트 | 대규모 서비스, 리버스 프록시 |
7. Apache 웹 서버 설정
서비스 시작
systemctl enable --now httpd # 부팅 시 자동 시작 + 즉시 시작
systemctl status httpd # 상태 확인
기본 웹 페이지 작성
vi /var/www/html/index.html
<h1>Apache Web Server</h1>
가상 호스트(Virtual Host) 설정
여러 도메인을 하나의 서버에서 운영할 때 사용합니다.
vi /etc/httpd/conf.d/exam.conf
<VirtualHost *:80>
ServerName exam.com
ServerAlias www.exam.com
DocumentRoot /var/www/html/exam
</VirtualHost>
설정 파일 구조
파일/디렉터리 역할
| /etc/httpd/conf/httpd.conf | 메인 설정 파일 |
| /etc/httpd/conf.d/*.conf | 가상 호스트 및 추가 설정 |
| /etc/httpd/conf.modules.d/*.conf | 모듈 로드 설정 |
8. Nginx 웹 서버 설정
Apache 중지 후 Nginx 시작
systemctl stop httpd # Apache 중지 (포트 충돌 방지)
systemctl start nginx # Nginx 시작
systemctl status nginx # 상태 확인 (active 확인)
9. SSL 인증서 적용 (HTTPS)
9-1. 사설 인증서 생성 (Nginx 기준)
# SSL 디렉터리 생성
mkdir -p /etc/nginx/ssl
# 1단계: 개인키(Private Key) 생성
openssl genrsa -des3 -out /etc/nginx/ssl/test.com.key 2048
# 2단계: 인증서 발급 신청서(CSR) 생성
openssl req -new -key /etc/nginx/ssl/test.com.key -out /etc/nginx/ssl/test.com.csr
# 3단계: 1년짜리 자체 서명 인증서(.crt) 발급
openssl x509 -req -days 365 \
-in /etc/nginx/ssl/test.com.csr \
-signkey /etc/nginx/ssl/test.com.key \
-out /etc/nginx/ssl/test.com.crt
# 4단계: 키에서 패스프레이즈(비밀번호) 제거 (Nginx 자동 로드를 위해)
openssl rsa -in /etc/nginx/ssl/test.com.key -out /etc/nginx/ssl/test.com.key
패스프레이즈 제거 이유: Nginx는 서버 시작 시 키 파일을 자동으로 읽어야 하므로, 비밀번호가 걸려 있으면 부팅 시 수동 입력이 필요해집니다.
9-2. Nginx HTTPS 가상 호스트 설정
vi /etc/nginx/conf.d/vhost.conf
server {
listen 443 ssl;
server_name www.test.com;
# 인증서와 키 파일 경로
ssl_certificate /etc/nginx/ssl/test.com.crt;
ssl_certificate_key /etc/nginx/ssl/test.com.key;
# 웹 콘텐츠 경로
root /var/www/test;
index index.html;
}
9-3. 설정 적용
nginx -t # 문법 오류 검사 (먼저 꼭 확인!)
systemctl restart nginx
# 방화벽에 HTTPS(443) 허용
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
정리
주제 핵심 내용
| DNS | nslookup, dig로 조회 / Zone 파일로 직접 도메인 등록 |
| Caching NS | 재귀 질의 후 결과를 TTL 동안 캐시 |
| Authoritative NS | Zone 원본 데이터 보유, 직접 응답 |
| Apache | 프로세스 기반 / VirtualHost로 다중 도메인 운영 |
| Nginx | 이벤트 기반 / 대규모 트래픽에 유리 |
| SSL | openssl로 사설 인증서 생성 → Nginx에 443 설정 |
'리눅스' 카테고리의 다른 글
| [Ubuntu] VirtualBox DHCP IP 할당 불안정 문제 완벽 해결 가이드 (0) | 2026.05.01 |
|---|---|
| Rocky Linux DNS 서버 구축 후 브라우저에서 도메인이 안 열릴 때 해결법 (0) | 2026.04.02 |
| [Linux 7주차 수업정리] Linux 메일 서버 + NIC Bonding 구축 실습 정리 (0) | 2026.03.08 |
| [Linux: 5주차 2차시] Linux 네트워크 서비스 학습 정리 (Samba & DHCP 실습 트러블슈팅) (0) | 2026.02.13 |
| [Linux] 맥북 VMware Fusion에서 Port Forwarding 설정 완벽 가이드 (0) | 2026.02.03 |