EdgeRouter - DHCP 서버에 dnsmasq 사용하기

download at 2017-08-27T10:57:55Z origin

Overview


기본 EdgeRouter 환경설정은 ISC DHCPD를 백엔드 DHCP 서버로 사용합니다. 1.9.0 버전부터는 dnsmasq가 사용 가능한 옵션으로 추가되었습니다. 해당 기능의 주요 장점은 로컬 호스트네임의 리졸브가 쉬워졌습니다. 이 문서는 dnsmasq를 사용하여 EdgeRouter의 DHCP를 허용하는 방법과 옵션의 자세한 내용을 서술합니다.

book_25x25.png NOTES & REQUIREMENTS: EdgeOS 1.9.0 이상의 펌웨어부터 적용 가능합니다.


Table of Contents



Step 1: DHCP에 dnsmasq 활성화하기


맨위로 가기

현재는 이 기능은 CLI에서 설정해야 하며, 웹 UI의 옵션으로는 설정할 수 없습니다. 다음 명령어를 수행합니다:

configure
set service dhcp-server use-dnsmasq enable
commit
save
exit

Step 2: DNS 포워딩, DHCP, 시스템 설정하기


맨위로 가기

네트워크의 로컬 호스트네임 결정을 허용하려면, 설정을 변경하여 클라이언트가 라우터 주소를 DNS 서버로 이용하고, DNS 포워딩 옵션을 구성하고, 시스템 네임 서버를 세팅해야 합니다. 라우터의 도메인 네임 세팅이 필요하며, 도메인 네임을 dhcp 서버에 추가하여 클라이언트에게 배포하도록 하고, 로컬 호스트네임이 네트워크에서 잘 탐색되도록 합니다.

  1. 시스템 네임 서버를 라우트에 루프백으로 설정하여 요청을 DNS 서버에 포워딩하도록 DNS 포워딩 세팅을 설정합니다.
set system name-server 127.0.0.1
  1. 글로벌 네임 서버를 설정하여 모든 외부 주소 탐색을 수행합니다.
set service dns forwarding name-server 8.8.8.8
  1. VLAN을 포함하여 모든 랜 인터페이스의 수신 주소에 DNS 포워딩을 설정합니다.
set service dns forwarding listen-on eth1
set service dns forwarding listen-on eth1.20
  1. (선택사항) DNS 포워딩 캐시 사이즈를 증가합니다
set service dns forwarding cache-size 400
  1. 시스템 도메인 네임을 설정합니다.
set system domain-name home.local
  1. DHCP 서버의 도메인 네임을 설정합니다.
set service dhcp-server shared-network-name Management subnet 10.0.100.0/24 domain-name home.local
set service dhcp-server shared-network-name Corp subnet 10.0.20.0/24 domain-name home.local
  1. 로컬 장치의 고정 호스트 매핑을 설정합니다. 이 예제에서는 10.0.100.44를 CloudKey로 사용하며, 필요한 모든 장비에 반복합니다.
set service dhcp-server shared-network-name Management subnet 10.0.100.0/24 static-mapping cloudkey ip-address 10.0.100.44
set service dhcp-server shared-network-name Management subnet 10.0.100.0/24 static-mapping cloudkey mac-address 44:d9:e7:9d:5a:4c

커밋과 저장 명령어를 수행하며 설정 내용을 반영합니다.

Note: 퍼블릭 DNS 서버는 클라이언트에서 라우터 주소를 직접 DNS 서버로 사용한다고 설정되지 않습니다. 8.8.8.8 같은 주소를 클라이언트에서 직접 설정하더라도 DCHP 서버에 라우터 주소로 요청되도록 합니다.


Step 3: 임대 내역 확인하기


맨위로 가기

DHCP 임대 내역을 웹 UI에서 볼 수 있는 기능을 추가할 예정입니다. ISC DHCPD를 DHCP로 사용할 때에도 마찬가지입니다. 1.9.1 버전부터는 DHCP 임대 내역을 CLI를 통해서 운용 모드에서 다음의 명령어를 입력하여 확인할 수 있습니다:

cat /var/run/dnsmasq-dhcp.leases

예제:

admin@ubnt:~$ cat /var/run/dnsmasq-dhcp.leases
1486236179 38:c9:86:12:aa:11 10.0.100.9 mbp 01:38:c9:86:12:aa:11
1486235720 c8:69:cd:44:22:ee 10.0.100.157 Apple-TV-3 01:c8:69:cd:44:22:ee
1486214664 80:2a:a8:33:dd:cc 10.0.100.93 AFi-R-HD-D91DC3 *
1486451443 44:d9:e7:9d:5a:4c 10.0.100.44 cloudkey 01:44:d9:e7:9d:5a:ac

Step 4: 테스팅


맨위로 가기

문제가 발생하낟면, 장치의 로컬 IP에 핑부터 시작하십시오, 그 다음에는 호스트 네임, 도메인 네임으로 차례차례 시도하십시오. 이 예제에서는 CloudKey를 고정 호스트 매핑 세팅으로 DHCP 서버에서 설정한 구성을 사용합니다.

ubnt-MBP:~ admin$ ping 10.0.100.44
PING 10.0.100.44 (10.0.100.44): 56 data bytes
64 bytes from 10.0.100.44: icmp_seq=0 ttl=63 time=3.849 ms
64 bytes from 10.0.100.44: icmp_seq=1 ttl=63 time=3.047 ms
^C
--- 10.0.100.44 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 3.047/3.448/3.849/0.401 ms
ubnt-MBP:~ admin$ ping cloudkey
PING cloudkey.home.local (10.0.100.44): 56 data bytes
64 bytes from 10.0.100.44: icmp_seq=0 ttl=63 time=4.823 ms
64 bytes from 10.0.100.44: icmp_seq=1 ttl=63 time=2.883 ms
^C
--- cloudkey.home.local ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 2.883/3.853/4.823/0.970 ms
ubnt-MBP:~ admin$ ping cloudkey.home.local
PING cloudkey.home.local (10.0.100.44): 56 data bytes
64 bytes from 10.0.100.44: icmp_seq=0 ttl=63 time=4.181 ms
64 bytes from 10.0.100.44: icmp_seq=1 ttl=63 time=5.441 ms
^C
--- cloudkey.home.local ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.181/4.811/5.441/0.630 ms

라우터 주소를 사용하여 주소를 변환하는 것이 잘 동작하는지 확인하기 위해서는 dig 도구를 사용하여 서버가 제대로 주소를 변환하는지 확인할 수 있습니다. 이 경우에는 라우터 주소가 10.0.20.1 입니다.

ubnt-MBP:~ admin$ dig cloudkey.home.local

; <<>> DiG 9.8.3-P1 <<>> cloudkey.home.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17501
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;cloudkey.home.local. IN A

;; ANSWER SECTION:
cloudkey.home.local. 86400 IN A 10.0.100.44

;; Query time: 3 msec
;; SERVER: 10.0.20.1#53(10.0.20.1)
;; WHEN: Mon Feb  6 10:06:19 2017
;; MSG SIZE  rcvd: 60

참고사항


맨위로 가기

  • DNS 포워딩이 EdgeRouter에 구성되어 있으면, 로컬 호스트는 자동으로 주소 변환을 hostfile-update를 활성화하지 않고 ISC DHCPD를 사용하는 것처럼 수행합니다. 위의 예제에서는 ping mdp를 수행할 수 있었고, 10.0.100.9로 주소 변환이 수행 될 것입니다. dnsmasq가 활성화 되어 있다면 hostfile-update는 무시합니다.
  • dnsmasq가 활성화 되어 있다면, DHCP 서버는 "listen-on" 인터페이스 역할을 수행하여 EdgeRouter의 DNS 포워딩을 수행합니다. 수신 인터페이스가 설정되어 있지 않다면 DNS 포워딩을 수행하지 않고, dnsmasq는 모든 인터페이스에 대하여 수신을 진행합니다.
  • dnsmasq가 활성화 되어있다면 DHCP 장애극복과 선택 파라미터와 같이 특정 ISC DHCP 설정이 무시됩니다. dnsmasq를 사용할때 특정 옵션이 필요하다면 DNS 포워딩 설정에 아래의 명령어를 수행하여 파라미터에 세팅을 하여야합니다:
set service dns forwarding options ...
  • dnsmasq가 활성화 되어 있다면, 인증 세팅은 모든 공유 네트워크에 적용됩니다. 모든 공유 네트워크에 인증이 활성화 되지 않았다면, 모든 네트워크에 적용 되지 않습니다.
  • dnsmasq를 사용할 때에는 "static-maaping" 환경설정의 영향을 받는 엔트리가 고정적으로 dnsmasq의 A 레코드에 설정한대로 변환됩니다. 고정 매핑 엔트리를 갖는 클라이언트가 DHCP 요청을 다른 클라이언트 이름과 함께 요청한다면 클라이언트 네임은 무시됩니다.

관련 문서


맨위로 가기

EdgeRouter - EdgeRouter에서 DHCP 서버 설정하기