서비스 패키지 데몬 핵심 설정 파일 포트 DNS bind named /etc/named.conf, /var/named/*.zone 53 (UDP/TCP) DHCP dhcp-server dhcpd /etc/dhcp/dhcpd.conf 67/68 (UDP) NTP chrony chronyd /etc/chrony.conf 123 (UDP) Apache httpd httpd /etc/httpd/conf/httpd.conf 80/443 Nginx nginx nginx /etc/nginx/nginx.conf 80/443
기억 고정 포인트:
포트 번호 즉답 : DNS 53, DHCP 67/68, NTP 123, HTTP 80, HTTPS 443.
RHEL 계열에서 Apache의 패키지·데몬은 모두 httpd, DNS는 named(패키지는 bind).
설정 변경 후 검사 도구: named-checkconf(DNS), httpd -t(Apache), nginx -t(Nginx).
모든 서비스는 "설치 → 설정 파일 수정 → 문법 검사 → 데몬 시작/재적용 → 상태 확인"의 같은 리듬을 탄다. 서비스마다 명령만 다를 뿐 흐름은 동일하다. 이 리듬을 몸에 익히면 처음 보는 서비스도 같은 방식으로 다룰 수 있다.
레코드 역할 A / AAAA 이름→IPv4 / 이름→IPv6 CNAME 별칭→정식 이름 MX 메일 서버(우선순위 숫자 작을수록 우선) NS 영역의 권한 네임서버 PTR IP→이름(역방향, in-addr.arpa) SOA 영역 권한 시작·갱신 시계(영역당 1개)
SOA 5타이머 순서: Serial(일련번호) → Refresh(확인 주기) → Retry(재시도) → Expire(폐기 한계) → Minimum(음수 캐시) .
⚠️ 함정 복습 : zone 파일에서 이름이 점으로 끝나지 않으면 영역 이름(origin)이 자동 부착된다 — CNAME·NS·MX 대상은 끝점(FQDN)을 붙여야 안전하다. zone을 수정하면 Serial을 반드시 증가 시켜야 보조 서버가 변경을 받는다. 도메인 꼭대기(@)에는 CNAME을 둘 수 없다.
DHCP 4단계는 DORA — Discover(탐색) → Offer(제안) → Request(수락) → Ack(확정).
첫 DISCOVER는 IP가 없어 브로드캐스트 로 나가며, 라우터 너머는 릴레이 가 필요하다.
dhcpd.conf 지시어 역할 range동적 배분 IP 풀 option routers기본 게이트웨이 option domain-name-serversDNS 서버 hardware ethernet + fixed-addressMAC 기반 고정 IP 예약
NTP stratum은 숫자가 작을수록 정확 (0=기준 시계, 1=1차 서버, 16=미동기).
chrony는 chrony.conf의 server/pool로 소스를, allow로 클라이언트 범위 를 정한다.
상태는 chronyc sources·chronyc tracking·timedatectl로 본다.
⚠️ 함정 복습 : DHCP 미동기 신호는 169.254.x.x(APIPA)다. NTP stratum 0은 미동기가 아니라 기준 시계 자체이며, 16이 미동기다. dhcpd.conf 고정 IP는 동적 range 밖에 두는 것이 안전하다.
개념 Apache Nginx 수신 포트 Listenlisten가상 호스트 이름 ServerNameserver_name문서 루트 DocumentRootroot기본 문서 DirectoryIndexindex가상 호스트 블록 <VirtualHost>server { }경로별 처리 <Directory>/<Location>location { }문법 검사 httpd -tnginx -t디렉터리 분산 설정 .htaccess 지원미지원(중앙 집중)
가상 호스트: 이름 기반 (Host 헤더로 구분, IP 1개로 다수 사이트) vs IP 기반 (IP로 구분, 사이트마다 IP).
HTTP/1.1의 Host 헤더 의무화 로 이름 기반이 표준이 됐다.
Apache는 연결당 프로세스(prefork)로 안정적이나 메모리를 많이 쓰고, Nginx는 이벤트 기반 비동기로 동시 접속·정적 서빙에 강하다. 실무에서는 Nginx를 앞단(리버스 프록시·정적·TLS)에, Apache나 앱 서버를 뒤편에 두는 조합이 흔하다. 리버스 프록시는 upstream+proxy_pass로 구성하며, 정방향 프록시(클라이언트 대행)와 달리 서버 앞단에서 요청을 분배한다.
# DNS
named-checkconf # named.conf 문법
named-checkzone example.com zonefile # zone 문법
dig www.example.com / dig -x 1.2.3.4 # 정/역방향 조회
# DHCP
systemctl status dhcpd
cat /var/lib/dhcpd/dhcpd.leases # 임대 현황
# NTP/chrony
chronyc sources # 시간 소스 목록
chronyc tracking # 동기화 정확도·stratum
timedatectl # 시간·타임존·NTP 동기 여부
# Apache
httpd -t # 문법 검사
httpd -S # 가상 호스트 목록
httpd -M # 적재 모듈
# Nginx
nginx -t # 문법 검사
nginx -s reload # 무중단 재적용
이번 주의 서비스들은 인터넷 인프라의 역사 그 자체다. DNS(1983)는 hosts 파일의 한계를 분산 시스템으로 풀었고, DHCP(1993)는 BOOTP를 확장해 IP 자동화를 완성했으며, NTP(1985)는 분산 시스템의 시계를 맞췄고, Apache(1995)는 웹을 대중화했으며, Nginx(2004)는 C10K 문제를 풀어 대규모 서비스를 가능케 했다. 오늘날 어떤 웹 요청도 이 다섯을 거치지 않고는 완성되지 않는다.
사용자가 www.example.com을 친 뒤 페이지를 받기까지, 이번 주 서비스들이 어떻게 협력하는지 한 줄로 이어 본다.
1. (DHCP) PC가 부팅 시 IP·게이트웨이·DNS 서버를 임대받음 (DORA)
2. (DNS) 로컬 DNS가 www.example.com을 BIND 권한 서버에 물어 IP 획득
3. (NTP) 서버들은 chrony로 시계를 맞춰 인증서·로그 일관성 유지
4. (Nginx) 앞단 Nginx가 요청을 받아 정적 파일은 직접, 동적은 백엔드로 프록시
5. (Apache) 백엔드 Apache가 동적 콘텐츠를 생성해 응답
이 다섯 단계가 매끄럽게 맞물려야 사용자는 페이지 하나를 본다.
어느 한 칸이 끊기면 전체가 멈춘다 — DHCP 실패=IP 없음, DNS 실패=이름 못 풂, NTP 어긋남=인증서 오류, 웹 서버 다운=503 .
네트워크 서비스를 "사슬" 로 이해하는 것이 이번 주의 결론이다.
zone 파일 : 한 도메인 영역의 레코드를 모아 둔 파일. SOA 하나로 시작한다.
Serial : 영역의 일련번호. 수정 후 이 값을 올려야 보조 서버가 변경을 받아 간다.
끝점(trailing dot) : zone 파일에서 이름 뒤의 점. 없으면 영역 이름이 자동으로 덧붙는다.
DORA : DHCP의 Discover → Offer → Request → Ack 4단계.
DHCP 릴레이 : 브로드캐스트가 넘지 못하는 라우터 너머로 요청을 대신 전달하는 기능.
range vs fixed-address : 동적으로 나눠 줄 IP 풀 / 특정 MAC에 늘 같은 IP를 주는 예약.
stratum : 기준 시계로부터의 거리. 0은 시계 자체, 1이 1차 서버, 16은 미동기.
chronyc tracking : 현재 기준 서버·오프셋·stratum 등 동기화 품질을 보여 주는 명령.
DocumentRoot / root : URL 루트가 가리키는 실제 경로. Apache와 Nginx의 같은 개념, 다른 이름.
가상 호스트 : 서버 한 대에서 여러 사이트를 나눠 서비스하는 설정. 이름 기반과 IP 기반이 있다.
리버스 프록시 : 서버 앞단에서 외부 요청을 받아 내부 백엔드로 분배하는 중계. upstream + proxy_pass.
.htaccess : Apache가 디렉터리마다 두는 분산 설정 파일. Nginx는 지원하지 않는다.
📝 연습 문제 선택지를 클릭하면 정답·해설이 펼쳐집니다.
DNS 서버 BIND의 데몬 이름과 사용 포트로 올바른 것은?
A bind, 80번 B named, 53번 C dhcpd, 67번 D httpd, 443번 SOA 레코드의 다섯 타이머 필드 순서로 올바른 것은?
A Refresh → Serial → Retry → Minimum → Expire B Serial → Refresh → Retry → Expire → Minimum C Serial → Retry → Refresh → Minimum → Expire D Expire → Serial → Refresh → Retry → Minimum DHCP의 IP 할당 4단계를 순서대로 나열한 것은?
A Offer → Discover → Ack → Request B Discover → Offer → Request → Ack C Request → Offer → Discover → Ack D Discover → Request → Offer → Ack NTP의 stratum에 대한 설명으로 옳은 것은?
A stratum 0은 미동기 상태다 B stratum 숫자가 클수록 기준 시계에 가깝다 C stratum 1은 기준 시계에 직접 연결된 1차 서버다 D stratum은 chrony에서만 쓰는 개념이다 dhcpd.conf에서 특정 MAC 주소를 가진 장비에 항상 같은 IP를 할당할 때 사용하는 지시어 조합은?
A range + option routersB hardware ethernet + fixed-addressC default-lease-time + max-lease-timeD subnet + netmaskApache의 DocumentRoot에 해당하는 Nginx 지시어는?
A listenB server_nameC rootD proxy_pass하나의 IP 주소로 여러 도메인을 서비스하는 가상 호스트 방식과, Apache가 사이트를 구분하는 기준이 옳게 짝지어진 것은?
A IP 기반 — Host 헤더 B 이름 기반 — HTTP Host 헤더 C 이름 기반 — 클라이언트 MAC D IP 기반 — 포트 번호 Nginx에서 요청을 뒤편 백엔드 서버로 전달하고, 여러 백엔드에 부하를 분산하는 데 쓰는 지시어 조합은?
A root + indexB upstream + proxy_passC server_name + listenD gzip + sendfile다음 중 각 서비스의 설정 문법 검사 명령이 잘못 짝지어진 것은?
A DNS — named-checkconfB Apache — httpd -tC Nginx — nginx -tD DHCP — chronyc sources클라이언트가 DHCP 서버를 찾지 못해 169.254.x.x 대역의 IP를 가졌다. 이 상태에 대한 올바른 설명은?
A 정상적으로 DHCP에서 사설 IP를 받은 것이다 B APIPA(링크 로컬) 주소로, DHCP 서버를 찾지 못했다는 신호다 C 루프백 주소로, 네트워크가 정상이다 D 공인 IP를 받은 것이다 Nginx와 Apache의 차이로 옳지 않은 것은?
A Nginx는 이벤트 기반 비동기로 다수 연결을 처리한다 B Apache는 .htaccess로 디렉터리별 분산 설정을 지원한다 C Nginx도 .htaccess를 기본 지원해 디렉터리별 설정이 가능하다 D Apache는 전통적으로 연결당 프로세스/스레드를 사용한다 사용자가 웹 페이지를 요청할 때 이번 주 서비스들의 협력 순서로 가장 적절한 것은?
A DNS로 IP를 받은 뒤 DHCP로 이름을 푼다 B DHCP로 IP 획득 → DNS로 도메인을 IP로 변환 → 웹 서버가 응답 C 웹 서버 응답 → DNS 조회 → DHCP 임대 D NTP로 시간을 맞춘 뒤에만 DNS가 동작한다