리눅스

[Linux] 리눅스 6주차 DNS, Apache, Nginx, SSL 수업정리

palantirops 2026. 3. 13. 14:41

리눅스 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 설정