* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
(pfSense 홈랩 방화벽 ⑦)
'cozlab.app' 같은 이름을 IP로 바꿔 주는 게 DNS다. pfSense는 Unbound라는 DNS Resolver를 기본 탑재하는데, 이걸 그대로 쓰면 내 네트워크의 모든 기기가 pfSense를 통해 이름을 조회하게 된다. 그 길목을 쥐고 있으면 할 수 있는 게 많아진다.
DNS over TLS로 조회 암호화
보통 DNS 조회는 평문이라 중간에서 다 들여다볼 수 있다. DNS over TLS(DoT)를 켜면 pfSense가 상위 DNS와 암호화된 통로로 대화한다. Services > DNS Resolver에서 Forwarding 모드를 켜고, 상위 서버를 TLS로 지정하면 된다.
# DNS Resolver > Custom options 예시 (Cloudflare + Quad9 을 TLS로)
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 1.1.1.1@853#cloudflare-dns.com
forward-addr: 9.9.9.9@853#dns.quad9.net
호스트 오버라이드
내부에서만 쓰는 이름(예: nas.home)을 특정 IP로 고정하고 싶으면 Host Override에 이름과 IP를 넣으면 된다. 공인 도메인을 내부에서만 사설 IP로 답하게 하는 ‘스플릿 DNS‘(외부는 공인 IP, 내부는 직접 접속)도 여기서 만든다. 그리고 특정 도메인을 0.0.0.0으로 덮어써서 광고 도메인을 막는 것도 같은 원리인데, 본격적인 차단은 뒤의 pfBlockerNG 편에서 다룬다.
직접 해보기
- DNS Resolver에서 DoT(forward-tls-upstream) 설정을 넣고 저장·적용한다.
- 클라이언트에서 이름 조회가 되는지 확인한다.
- Host Override로
test.home → 클라이언트 IP를 추가하고 조회해 본다.
# 클라이언트에서 pfSense가 응답하는지 확인
$ nslookup cozlab.app 192.168.10.1
$ nslookup test.home 192.168.10.1 # 오버라이드한 이름
✅ 확인 — 클라이언트에서
nslookup이 pfSense(192.168.10.1)로 정상 응답하고, 호스트 오버라이드한 이름이 지정 IP로 나오면 성공이다. DoT가 왜 필요한지 한 줄로 말해 보자.
Resolver vs Forwarder — 뭘 고를까
Unbound의 두 모드는 성격이 반대다. 표로 보면 선택이 쉽다.
| Resolver(재귀) | Forwarder | |
|---|---|---|
| 동작 | 루트부터 직접 조회 | 상위 DNS에 통째로 위임 |
| 프라이버시 | 상위에 안 넘김 | 상위가 조회를 다 봄 |
| 속도 | 첫 조회 느림(캐시 후 빠름) | 상위 캐시로 빠를 수 있음 |
그래서 결정 가이드는 이렇게 접힌다 — ① 상위 사업자(통신사 등)에게 조회 내역을 안 넘기는 게 우선이면 기본값인 Resolver 유지. ② 경로상 도청(평문 DNS)이 더 걱정이면 Forwarder + DoT로 신뢰하는 상위(Cloudflare·Quad9)에 암호화로 위임. 둘은 ‘누구에게 보이느냐’의 트레이드오프라 정답이 없고, 나는 홈랩에선 ②를 쓴다 — 통신사 구간 평문이 더 싫어서다.
DoT가 진짜 켜졌는지 확인하는 법
설정을 저장했다고 끝이 아니다 — 조회가 실제로 853 포트(TLS)로 나가는지 확인해야 한다. 두 가지 방법:
# ① pfSense 쉘/패킷 캡처에서 — 밖으로 나가는 DNS가 853인지 확인
tcpdump -ni port 853 # 조회할 때마다 패킷이 보이면 OK
tcpdump -ni port 53 # 여기가 조용해야 한다(평문 유출 없음)
② 상위를 Cloudflare로 지정했다면 브라우저에서 1.1.1.1/help를 열면 ‘Using DNS over TLS’가 Yes로 표시된다. ①에서 53 포트로 새는 패킷이 보인다면 — 어떤 기기가 pfSense를 안 거치고 직접 외부 DNS를 찍고 있는 것이니, 그 기기의 DNS 설정이나 강제 리다이렉트 규칙을 살펴볼 차례다.
DNS라는 길목 — 광고·추적 차단의 관문
모든 기기가 pfSense DNS를 거치니, 이 길목에서 광고·추적·악성 도메인을 차단할 수 있다(pfBlockerNG). DNS를 쥐면 네트워크 전체 정책을 한곳에서 편다. 그래서 기기들이 DHCP(6편)로 pfSense DNS를 쓰게 만드는 게 중요하다 — 길목을 내가 쥐고 있어야 뭐든 할 수 있다.
여기까지가 '한 덩어리' 네트워크의 기본이다. 다음 편에서는 이 네트워크를 여러 개로 쪼개는 VLAN을 다룬다. IoT와 게스트를 내 메인망에서 격리하는 실전 주제다.
자주 묻는 질문 (FAQ)
Unbound와 Forwarder 중 뭘 쓰나요?
기본은 Unbound(Resolver)로 루트부터 직접 조회해 프라이버시에 유리합니다. 특정 상위 DNS를 강제하고 싶을 때만 Forwarder를 씁니다.
DoT(DNS over TLS)는 왜 켜나요?
DNS 질의를 암호화해 중간에서 엿보거나 변조하는 걸 막습니다. ISP의 DNS 감시·조작을 피하고 싶을 때 유용합니다.

답글 남기기