Local DNS

DNS có nhiệm vụ phân giải Domain Name thành IP. Ngoài ra có những DNS làm thêm nhiệm vụ khác như chặn các domain có vấn đề…

DNS của ISP thường nhanh hơn các DNS công cộng vì nó cache các domain name mà khách hàng thường dùng và việc trả lại kết quả nhanh còn do khoảng cách địa lý đến máy khách hàng.

Tốc độ trả kết quả còn nhanh hơn nữa nếu DNS được đặt trong cùng mạng cục bộ với máy truy cập và cache theo thói quen truy cập của một nhóm nhỏ người dùng. Các DNS này được gọi là Local DNS.

Local DNS còn giúp đặt tên miền cục bộ, trỏ đến ip trong mạng cục bộ. Điều này giúp giải quyết vấn đề tên miền internet có thể phân giải trong mạng cục bộ.

Dùng RPi để tạo Local DNS rất đơn giản, chỉ với một dòng lệnh cài đặt . Tuy nhiên để tránh xung đột trên cổng 53, trước hết sửa file cấu hình resolved.conf

sudo nano /etc/systemd/resolved.conf

sửa lại dòng cuối thành

DNSStubListener=no

Khởi đông lại systemd-resolved

sudo systemctl restart systemd-resolved
sudo systemctl daemon-reload

Cài đặt dnsmasq

sudo apt-get install dnsmasq

Sau khi cài đặt, sửa file /etc/dnsmasq.conf một chút cho phù hợp với mạng cục bộ. Khởi động lại dnsmasq là xong

service dnsmasq restart

Để kiểm tra hiệu quả của local dns, trên console của RPi chạy dòng lệnh

dig pi.ly-le.info

Kết quả tương tự như sau

; <<>> DiG 9.9.5-9+deb8u11-Raspbian <<>> pi.ly-le.info
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13559
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;pi.ly-le.info. IN A

;; ANSWER SECTION:
pi.ly-le.info. 39218 IN CNAME aaa.bbb.ccc.
aaa.bbb.ccc. 60 IN CNAME zzz.aaa.bbb.ccc.
zzz.aaa.bbb.ccc. 150 IN CNAME ecz-00-00-123-123.compute-1.amazonaws.com.
ecz-00-00-123-123.compute-1.amazonaws.com. 600817 IN A 00.00.000.000

;; Query time: 35 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jun 23 13:44:13 +07 2017
;; MSG SIZE rcvd: 180

Chạy lại lần nữa câu lệnh trên, Query time giảm còn 1 ms vì domain name đã được dnsmasq cache rồi

Thí dụ về dnsmasq.conf

bogus-priv
no-hosts
cache-size=4096
addn-hosts=/etc/hosts.dnsmasq
no-poll

domain-needed
domain=lyle
local=/lyle/
expand-hosts

#strict-order
server=203.162.4.191
server=203.162.4.190
#server=208.67.222.123
#server=208.67.220.123

#dhcp-range=10.0.0.20,10.0.0.80,240h
#dhcp-option=option:netmask,255.255.255.0
#dhcp-option=option:router,10.0.0.1
#dhcp-option=option:dns-server,10.0.0.7

log-facility=/var/log/dnsmasq.log
log-async
#log-queries
log-dhcp

Chú thích

  • dnsmasq có thể chỉ hoạt động trên máy cài đặt thay vì trên local network, nếu không bật tính năng dhcp
  • Kiểm tra local dns bằng câu lệnh host, thí dụ
host local.name
host local.ip
  • Kiểm tra dnsmasq có hoạt động trên đúng port hay không bằng câu lệnh
netstat -nlp |grep dnsmasq

Kết quả nhận được phải tương tự như sau

tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 27538/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 27538/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 27538/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 27538/dnsmasq
udp6 0 0 :::53 :::* 27538/dnsmasq

Leave a Comment

Filed under Software

Leave a Reply

Your email address will not be published. Required fields are marked *