1. 들어가기 전에 — DNS란 무엇인가
DNS(Domain Name System) 는 사람이 읽기 쉬운 도메인 이름(google.com)을 컴퓨터가 통신에 사용하는 IP 주소(142.250.196.110)로 변환해 주는 시스템입니다. 인터넷의 “전화번호부” 역할을 합니다.
pfSense에서 DNS가 중요한 이유
pfSense는 단순한 방화벽이 아니라 게이트웨이 + DHCP 서버 + DNS 서버 역할을 동시에 수행할 수 있습니다. 따라서 내부 네트워크 클라이언트들이 인터넷에 접속할 때 어떤 DNS 서버를 사용할지를 pfSense에서 통제할 수 있습니다.
pfSense가 DNS를 처리하는 두 가지 서비스
pfSense는 DNS 처리를 위해 두 가지 서비스를 제공하며, 둘 중 하나만 활성화해야 합니다.
| 구분 | DNS Resolver (Unbound) | DNS Forwarder (dnsmasq) |
|---|---|---|
| 동작 방식 | 직접 루트 서버부터 재귀 질의 수행 | 상위 DNS 서버로 단순 전달(forwarding) |
| 기본 활성화 | ✅ 기본값 (pfSense 2.2 이후) | ❌ 비활성화 |
| 보안성 | DNSSEC, DNS over TLS 지원 | 상대적으로 단순 |
| 본 문서 다루는 범위 | 개념만 언급 | 다른 포스팅에서 상세히 다룸 |
⚠️ 두 서비스는 모두 53번 포트를 사용하므로 동시에 켤 수 없습니다. DNS Forwarder를 켜려면 DNS Resolver를 먼저 꺼야 합니다.
2. pfSense DNS 설정 위치 — 계층(Hierarchy) 구조
pfSense에서 DNS를 설정할 수 있는 곳은 여러 군데이며, 이들 사이에는 우선순위(계층) 가 존재합니다. 강의에서 강조한 핵심 개념입니다.
질의(Query)가 처리되는 순서
┌─────────────────────────────────────────────┐
│ 1. Host Overrides (호스트 단위 직접 매핑) │ ← 가장 우선
├─────────────────────────────────────────────┤
│ 2. Domain Overrides (도메인 단위 매핑) │
├─────────────────────────────────────────────┤
│ 3. DHCP 정적 매핑 (Static Mappings) │
├─────────────────────────────────────────────┤
│ 4. System > General Setup의 DNS Servers │ ← 최종 폴백
└─────────────────────────────────────────────┘즉, 클라이언트가 myserver.local을 질의하면 pfSense는
호스트 → 도메인 → DHCP → 시스템 DNS 순서대로 답을 찾아갑니다.
3. 대체 DNS 서버 지정하기
3-1. 기본 동작
- pfSense는 기본적으로 별도의 DNS 설정 없이도 동작합니다.
WAN 인터페이스가 DHCP/PPPoE로 IP를 받을 때, ISP가 제공하는 DNS 서버가 자동으로 할당되기 때문입니다. - 하지만 특정 DNS를 강제로 사용하고 싶다면(예: Google DNS, Cloudflare DNS, 사내 DNS) 수동으로 지정할 수 있습니다.
3-2. 설정 경로
System → General Setup → DNS Server Settings
3-3. 주요 항목 설명
① DNS Servers
- 사용할 DNS 서버의 IP 주소를 입력합니다.
- IPv4와 IPv6 모두 입력 가능합니다.
- 여러 개의 DNS 서버를 등록할 수 있으며, “Add DNS Server” 버튼으로 항목을 추가합니다.
- 예시: DNS 제공자 IPv4 IPv6 Google
8.8.8.8,8.8.4.42001:4860:4860::8888Cloudflare1.1.1.1,1.0.0.12606:4700:4700::1111Quad99.9.9.92620:fe::fe
💡 팁: 주(primary) DNS 외에 보조(secondary) DNS도 등록해 두면 한쪽이 장애가 나도 끊김 없이 동작합니다.
② Gateway 선택
각 DNS 서버 옆에 어떤 게이트웨이를 통해 나갈지 지정할 수 있습니다.
- WAN이 여러 개일 때(다중 회선) 특정 DNS 질의를 특정 회선으로 보내고 싶을 때 사용합니다.
- 일반적인 단일 WAN 환경에서는
none(기본값)으로 두면 됩니다.
③ DNS Server Override (체크박스)
- 체크 시: WAN 인터페이스가 DHCP/PPP로 받은 ISP의 DNS를 자동으로 사용합니다.
- 체크 해제 시: 위에서 직접 입력한 DNS만 사용합니다.
사내 DNS 필터링이나 광고 차단 DNS를 강제하고 싶으면 반드시 체크 해제해야 합니다.
그렇지 않으면 ISP DNS가 우선시되어 의도와 달라질 수 있습니다.
④ Disable DNS Forwarder (체크박스)
- pfSense 자체가 호스트네임 해석을 할 때 위에서 지정한 DNS만 사용하도록 강제합니다.
- 일반적으로는 체크하지 않습니다.
3-4. 기억할 포인트
- 기본값으로 두면 ISP DNS가 자동 적용됨
- 직접 지정하려면 DNS Server Override 체크 해제가 필수
- IPv4/IPv6 둘 다 등록해 두는 것이 안정적
- 주/보조 서버를 함께 등록할 것
4. DNS Forwarder 설정하기
4-1. DNS Forwarder의 역할
pfSense의 DNS Forwarder(dnsmasq 기반)는:
- 클라이언트의 DNS 질의를 받아 상위 DNS 서버로 전달
- DHCP로 등록된 호스트네임을 자동으로 DNS로 해석 가능하게 만듦
- 관리자가 수동으로 등록한 호스트/도메인 매핑을 우선 적용
즉, 내부 네트워크용 간이 DNS 서버처럼 활용할 수 있습니다.
4-2. 설정 경로
Services → DNS Forwarder
⚠️ 활성화하기 전에 DNS Resolver가 꺼져 있는지 먼저 확인하세요.
4-3. 주요 옵션 상세
① Enable
DNS Forwarder를 켜는 메인 스위치입니다.
② DHCP Registration
- 체크 시: DHCP로 IP를 받은 모든 클라이언트의 호스트네임이 자동으로 DNS에 등록됩니다.
- 예: 사무실 PC
john-pc가 DHCP로 IP를 받으면, 다른 PC에서john-pc.localdomain으로 접근 가능.
③ Static DHCP
- DHCP의 정적 매핑(Static Mapping) 에 등록된 항목을 DNS에 자동 반영합니다.
- 서버나 프린터처럼 IP가 고정된 장비를 호스트네임으로 부르고 싶을 때 유용합니다.
④ Prefer DHCP
- 호스트네임 해석 시 DHCP 매핑을 수동 등록 목록보다 먼저 조회합니다.
- 강의에서 “흥미로운(interesting) 설정”이라고 추천한 옵션입니다.
⑤ Query DNS servers sequentially (순차 질의)
- 체크 시: 등록된 DNS 서버를 순서대로 하나씩 질의 (첫 번째 실패 → 두 번째 시도)
- 체크 해제 시(기본): 모든 DNS 서버에 동시 병렬 질의 → 가장 빠른 응답 채택
- 일반적으로는 기본값(병렬)이 빠르지만, 특정 DNS 서버를 우선시하고 싶다면 순차 모드를 선택합니다.
⑥ Require domain (도메인 필수)
- 점(.)이 없는 단순 이름(예:
printer)은 상위 DNS로 전달하지 않습니다. - 강의에서 권장하지 않는다고 언급된 옵션입니다.
→ Linux/FreeBSD의/etc/hosts에 등록되지 않은 단순 이름이 해석 실패할 수 있기 때문입니다.
⑦ Do not forward private reverse lookups
192.168.x.x,10.x.x.x같은 사설 IP에 대한 역방향(PTR) 질의를 외부로 보내지 않습니다.- 외부로 사설 IP 정보가 새는 것을 방지하는 보안 옵션이라 권장됩니다.
⑧ Listen Port
- DNS Forwarder가 수신하는 포트. 기본값 53.
- 매우 특수한 경우가 아니면 변경하지 않는 것이 권장됩니다.
⑨ Interfaces
- DNS Forwarder가 요청을 수신할 인터페이스 선택.
- 일반적으로 LAN과 Localhost를 선택합니다.
- WAN을 선택하면 외부에서도 DNS 질의를 받게 되어 보안 위험(오픈 리졸버)이 생기므로 주의.
⑩ Strict Interface Binding (엄격한 인터페이스 바인딩)
- 체크 시: 위에서 선택한 인터페이스의 IP 주소에만 바인딩합니다.
- 체크 해제 시(기본): 모든 인터페이스에 바인딩한 뒤 패킷 단위로 필터링합니다.
- CARP(고가용성) 환경에서 필요할 수 있으나, 일반 환경은 기본값 유지.
4-4. Host Overrides (호스트 오버라이드) — 가장 중요
DNS 계층에서 가장 우선순위가 높은 항목입니다.
특정 호스트네임을 원하는 IP로 강제 매핑할 수 있습니다.
| 입력 항목 | 예시 | 설명 |
|---|---|---|
| Host | mail | 호스트 이름 |
| Domain | company.local | 도메인 |
| IP | 192.168.1.10 | 매핑할 IP |
| Description | 사내 메일서버 | 메모 |
| Aliases | webmail, smtp | 같은 IP를 가리킬 별칭 |
활용 예시
mail.company.local→192.168.1.10으로 강제 지정- 외부 도메인을 내부 IP로 위장(스플릿 호라이즌 DNS)
- 광고 도메인을
0.0.0.0으로 보내 차단
4-5. Domain Overrides (도메인 오버라이드)
특정 도메인 전체의 질의를 별도의 DNS 서버로 보냅니다.
- 예:
company-internal.com도메인 질의는 사내 Active Directory DNS(10.0.0.5)로 전달 - 외부에서 해석할 수 없는 사내 도메인을 처리할 때 필수
5. DNS 처리 흐름 — 전체 그림
클라이언트(PC)가 mail.company.local을 질의했을 때 pfSense에서 일어나는 일:
[클라이언트]
│ "mail.company.local 알려줘"
▼
[pfSense DNS Forwarder/Resolver]
│
├─ 1. Host Overrides에 있는가? → 있으면 즉시 응답
│
├─ 2. Domain Overrides에 해당하는가? → 해당 DNS로 전달
│
├─ 3. DHCP 등록 호스트인가? → DHCP 정보로 응답
│
└─ 4. 위 모두 해당 없음
│
▼
[System > General Setup의 DNS Servers]
│
▼
외부 DNS (8.8.8.8 등)로 질의
│
▼
응답을 받아 클라이언트에 전달6. 실전 체크리스트
✅ 가정/소규모 사무실 권장 설정
- [ ] DNS Resolver 사용 (기본값 유지)
- [ ] System > General Setup에 보조 DNS로
1.1.1.1,8.8.8.8정도 등록 - [ ] DNS Server Override는 환경에 맞게 결정
- [ ] 사설 IP 역방향 조회 외부 전달 차단
✅ 사내 서버가 있는 환경
- [ ] DNS Forwarder 또는 DNS Resolver 활성화
- [ ] DHCP Registration + Static DHCP 체크 → 호스트네임 자동 등록
- [ ] 주요 사내 서버는 Host Overrides에 명시적으로 등록
- [ ] Active Directory가 있다면 Domain Overrides로 AD DNS에 전달
✅ 보안 강화 시
- [ ] DNS Forwarder의 Interfaces에서 WAN 제외 → 오픈 리졸버 방지
- [ ] Do not forward private reverse lookups 체크
- [ ] DNS Resolver의 DNSSEC 활성화 (해당 서비스 사용 시)
7. 자주 하는 실수 & 팁
| 실수 | 결과 | 해결 |
|---|---|---|
| DNS Resolver와 Forwarder 둘 다 켬 | 서비스 시작 실패 | 하나만 활성화 |
| WAN을 DNS 수신 인터페이스에 포함 | 오픈 리졸버 → DDoS 악용 위험 | LAN/Localhost만 선택 |
| DNS Server Override 체크된 채로 외부 DNS 지정 | ISP DNS가 우선되어 무시됨 | 체크 해제 |
| Listen Port를 53 외로 변경 | 클라이언트가 DNS 못 찾음 | 기본 53 유지 |
| 호스트네임에 점(.) 누락 | Require domain 체크 시 해석 실패 | 체크 해제 또는 FQDN 사용 |
8. 핵심 요약 (한 줄 정리)
- pfSense DNS는 DNS Resolver(재귀, 기본) 또는 DNS Forwarder(전달) 중 하나로 동작한다.
- DNS 설정 위치는 여러 곳이며 Host → Domain → DHCP → System DNS 순으로 우선 적용된다.
- 외부 대체 DNS는 System > General Setup에서 지정하고, DNS Server Override 체크를 해제해야 강제 적용된다.
- DNS Forwarder는 DHCP 호스트 자동 등록과 사내 DNS 매핑(Host/Domain Override)에 매우 유용하다.
- WAN을 DNS 수신 인터페이스로 두지 말 것 — 보안상 치명적.