EdgeRouter - DNS 포워딩 개론, 설치와 옵션¶
download at 2017-07-31T20:52:03Z origin
Overview
이 문서는 DNS 포워딩에 대한 설명과 기본 DNS 포워딩 옵션, 예제를 EdgeOS의 CLI를 사용해서 설명합니다. 현재는 DNS 포워딩 옵션은 GUI에서 제한적으로 설정 가능합니다.
NOTES: EdgeOS가 설치된 모든 EdgeRouter 모델에서 적용 가능합니다. 커맨드라인 인터페이스와 기본 네트워킹에 대한 지식이 요구됩니다. 해당 주제에 대한 내용은 관련 문서 섹션의 문서를 확인하시기 바랍니다.
dnsmasq.conf, resolv.conf 파일을 수정하여 dnsmasq 옵션이 다양하게 존재하지만, 직접 파일을 수정하는 것은 이 문서에서 다루지 않습니다.
Table of Contents
Introduction
EdgeOS는 dnsmasq 기반의 DNS 포워딩 서비스를 포함하고 있습니다. dnsmasq 서비스는 백그라운드에서 동작하며 모든 DNS쿼리를 특정 DNS서버로 포워딩하는 역할을 수행합니다. DHCP서버가 글로벌 DNS 서버 주소를 유지하고 있다면 (8.8.8.8과 같은 서버 주소), 혹은 클라이언트가 글로벌 DNS 주소를 알고 있다면 클라이언트는 직접 해당 주소를 글로벌 서버로부터 취득할 수 있습니다.
글로벌 DNS 서버를 사용하는 대신 EdgeRouter의 로컬 DNS 캐시 기능을 활용하고 이 문서에서 기술된 포워딩 기능을 활용할 수 있습니다. 클라이언트는 글로벌 DNS를 알고 있거나 DHCP의 사용 유무에 따라서 DNS 주소를 라우터에서 획득할 수 있습니다. DNS 캐시 정보를 사용하면 클라이언트는 URL의 IP 정보를 손쉽게 얻고 다른 클라이언트보다 빠르게 IP 주소를 획득할 수 있습니다.
로컬 DNS 포워딩을 사용하는 다른 장점은 로컬 호스트네임을 쉽게 얻을 수 있다는 점입니다. 이는 DHCP에서 dnsmasq를 사용하면서도 쉽게 사용할 수 있습니다. 다음 문서를 참조하십시오. EdgeRouter - DHCP 서버에 dnsmasq 사용하기
기본 설정
아래의 단계는 설치 위자드를 사용합니다. 설명을 위하여 많은 내용을 기술하고 있으며 위자드를 사용하고 난 이후에 더 많은 설정이 요구 될 수 있습니다.
A. 캐시 크기
기본 캐시 크기는 150입니다. 라우터에서 하드웨어에 맞는 스펙에 따라서, 환경에 따라서 캐시 크기를 조정 할 수 있습니다. EdgeRouter Lite, EdgeRouter PoE, EdgeRouter X 문서를 참조하십시오.
B. DHCP
일부 ISP는 DHCP를 사용하여 DNS 서버에 WAN 설정을 제공합니다. 이 명령어는 가능하다면 DNS 서버를 사용하여 DNS 포워딩을 가능하도록 합니다. (이 설정은 DHCP기반 WAN을 설치 위자드에서 구성할 경우 기본값으로 설정됩니다.)
set service dns forwarding dhcp eth0
C. 수신할 인터페이스
각 LAN 인터페이스는 할당한 서버에 요청을 포워딩합니다. 이 작업을 위해서는 다음 명령어를 수행하여 환경설정을 세팅합니다:
set service dns forwarding listen-on eth1
이 예제에서는 eth1이 LAN입니다. LAN은 EdgeRouter가 스위치 인터페이스나 VLAN을 사용하는가에 따라서 switch0, eth1.2가 될 수 있습니다.
D. 인터페이스 예외처리 (펌웨어 1.9.7 버전부터 추가되었습니다.)
기본 dnsmasq 포워딩 설정은 모든 WAN 인터페이스에서 요청을 수신합니다. 기본 방화벽 룰을 설치 위자드를 통해 설정하게 되면, 라우터는 모든 인터넷 트래픽을 차단합니다. 필요하다면 해당 인터페이스에 요청을 받을 수 있도록 1.9.7 버전부터는 허용이 가능합니다.
set service dns forwarding except-interface eth0
이 작업을 수행할 때에는 수신 인터페이스에서 제거해야 합니다.
delete service dns forwarding listen-on eth1
E. 네임 서버
내부 요청을 포워딩하는 DNS 서버는 설치위자드를 통해서 환경설정을 마치지 않았다면 직접 구성이 필요합니다. DNS 서버는 8.8.8.8, 4.4.4.4 등이 될 수 있습니다.
set service dns forwarding name-server 8.8.8.8
F. 시스템
DNS 포워딩 네임서버는 이전 단계에서 직접 세팅이 가능하며, 시스템 네임 서버를 사용할 수도 있습니다.
set service dns forwarding system
Note
시스템 네임서버가 루프백 주소라면 라우터의 DNS 포워딩 옵션을 글로벌 DNS 서버 대신에 사용합니다.
커스터마이즈한 DNS 포워딩 옵션
dnsmasq.conf 와 resolv.conf 파일을 수정하여 변경할 수 있는 dnsmasq의 다양한 옵션이 존재합니다. 그러나 직접 이 파일을 수정하는 것은 이 문서에서 다루지 않습니다. 이 섹션에서는 CLI 명령어를 통해서 옵션을 조정하는 방법에 대하여 서술합니다. 이 방법은 안전하게 특정 주소로 향하는 모든 트래픽을 필터링하거나 차단하지 않습니다.
A. URL 을 특정 IP로 포워딩하기
이 예제는 모든 youtube.com으로 향하는 트래픽을 내부 IP 10.0.100.155로 포워딩합니다.
set service dns forwarding options address=/youtube.com/10.0.100.155
B. 도메인을 다른 DNS 서버로 포워딩하기
이 예제는 특정 도메인으로 향하는 모든 DNS 쿼리를 특정 DNS 서버로 포워딩합니다. DNS 서버는 글로벌, 로컬 관계 없이 포워딩합니다.
set service dns forwarding options server=/home.lan/10.0.9.12
테스팅 및 검증
- 포워딩 통계치 확인하기
ubnt@edgerouter:~$ show dns forwarding statistics
----------------
Cache statistics
----------------
Cache size: 300
Queries forwarded: 28
Queries answered locally: 23
Total DNS entries inserted into cache: 109
DNS entries removed from cache before expiry: 0
---------------------
Nameserver statistics
---------------------
Server: 10.0.9.12
Queries sent: 0
Queries retried or failed: 0
Server: 8.8.8.8
Queries sent: 7
Queries retried or failed: 0
Server: 8.8.4.4
Queries sent: 21
Queries retried or failed: 0
- 네임 서버 확인하기
ubnt@edgerouter:~$ show dns forwarding nameservers
-----------------------------------------------
Nameservers configured for DNS forwarding
-----------------------------------------------
8.8.4.4 available via 'statically configured'
8.8.8.8 available via 'statically configured'
/home.lan/10.0.9.12 available via 'optionally configured'
-----------------------------------------------
Nameservers NOT configured for DNS forwarding
-----------------------------------------------
127.0.0.1 available via 'system'
- Dig 결과 확인하기
라우터 주소로 올바르게 주소를 제공하는지 테스트하려면 dig 도구룰 사용하여 올바르게 주소를 DNS포워딩 옵션을 사용하여 URL을 주소로 변환하는지 확인할 수 있습니다. 이 경우에는 라우터 주소는 10.0.20.1입니다.
system:~ admin$ dig youtube.com
; <<>> DiG 9.8.3-P1 <<>> youtube.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48021
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;youtube.com. IN A
;; ANSWER SECTION:
youtube.com. 0 IN A 10.0.100.155
;; Query time: 5 msec
;; SERVER: 10.0.9.1#53(10.0.9.1)
;; WHEN: Mon Jul 24 14:45:33 2017
;; MSG SIZE rcvd: 45
관련 문서
EdgeRouter - DHCP서버에 dnsmasq 사용하기