Cài đặt
sudo apt install dnsmasq dnsutils
sudo service dnsmasq status
dnsmasq tự động khởi chạy sau khi cài đặt
Cấu hình /etc/dnsmasq.conf
Giả sử LAN ip tĩnh của máy tính RPi mà dnsmasq đang chạy là 192.168.1.11
sudo nano /etc/dnsmasq.conf
# dnsmasq lắng nghe yêu cầu DNS tại đây
listen-address=::1,127.0.0.1,192.168.1.11
# nghe từ mạng có dây và không dây
interface=eth0
interface=wlan0
# domain của dnsmasq server
domain=example.lan
# chuyển truy vấn khi không tìm thấy, cho
# Google's nameservers
server=8.8.8.8
server=8.8.4.4
# đặt ip tĩnh cho tên miền
address=/example.lan/127.0.0.1
address=/example.lan/192.168.1.11
address=/domain.here/192.168.1.100
address=/another.here/192.168.1.101
Save (Ctrl + X Y) rồi kiểm tra lỗi file cấu hình
sudo dnsmasq --test
Soạn thảo /etc/resolv.conf
sudo nano /etc/resolv.conf
# đặt localhost là nameserver duy nhất
nameserver 127.0.0.1
Đặt thuộc tính để /etc/resolv.conf không bị NetworkManager thay đổi
sudo chattr +i /etc/resolv.conf
Nếu dùng option no-resolv thì không cần bước này.
Soạn thảo /etc/hosts
127.0.0.1 dnsmasq
192.168.1.11 dnsmasq
192.168.1.1 gateway
192.168.1.100 domain.here
192.168.1.101 another.here
Các khai báo trong file /etc/hosts có tác dụng trỏ IP tới domain name và ngược lại.
Khởi động lại và mở firewall cho DNS
sudo service dnsmasq restart
# giả sử đã cài đặt ufw, mở port 53 cho IN và OUT
sudo ufw allow in from 192.168.1.0/24 to 192.168.1.11 port 53 proto udp
sudo ufw allow out from 192.168.1.0/24 to 192.168.1.11 port 53 proto udp
Kiểm thử hoạt động của dnsmasq
sudo dig example.lan
Xem thêm phần kiểm thử tại Domain name cho camera | My RPi (lyle.info)
Chú thích
Nếu vì lý do nào đó, dnsmasq không giành được quyền làm DNS chính trong mạng LAN, chúng ta phải cài đặt để dnsmasq làm DNS trên client đang dùng
Hoặc cài đặt DNS ở router