飞牛NAS部署Dnsmasq - 局域网内搭建一台 DNS 服务器

  1. 首先下载镜像 image

  2. 运行镜像 image

  3. 按需配置 image

  4. 配置

场景 A:家庭 NAS,自定义几个域名

no-resolv
no-hosts
bind-interfaces
interface=eth0
port=53

# 上游 DNS
server=223.5.5.5
server=119.29.29.29

# 自定义域名
address=/nas.home/192.168.1.100
address=/home.home/192.168.1.101
address=/docker.home/192.168.1.100

# 日志
log-queries
log-facility=/var/log/dnsmasq.log
cache-size=1000

场景 B:办公网络,带广告过滤

no-resolv
no-hosts
bind-interfaces
interface=eth0
port=53

server=223.5.5.5
server=119.29.29.29

# 自定义本地域名
address=/intranet.corp/192.168.10.50

# 广告过滤(可以从文件加载)
# addn-hosts=/etc/dnsmasq-ads.hosts

# 某些广告域名直接返回 0.0.0.0(或其他 IP)来过滤
address=/ad.doubleclick.net/0.0.0.0
address=/ads.google.com/0.0.0.0

log-queries
log-facility=/var/log/dnsmasq.log
cache-size=2000

场景 C:分流 DNS(部分域名走指定上游)

no-resolv
no-hosts
bind-interfaces
interface=eth0
port=53

# 默认上游 DNS
server=223.5.5.5

# 部分域名走特定 DNS
server=/google.com/8.8.8.8
server=/github.com/1.1.1.1

# 本地域名
address=/nas.local/192.168.1.100

log-queries
log-facility=/var/log/dnsmasq.log
  1. 验证
# 1. 检查容器运行状态
docker ps | grep dnsmasq

# 2. 查看启动日志
docker logs dnsmasq

# 3. 检查端口监听
ss -lun | grep :53

# 4. 查看配置文件是否正确加载
docker exec -it dnsmasq cat /etc/dnsmasq.conf | head -20

# 5. 测试自定义域名
dig @192.168.1.10 nas.home +short
# 期望:192.168.1.100

# 6. 测试公网域名
dig @192.168.1.10 [www.google.com](http://www.google.com/) +short
# 期望:一个 IP 地址

# 7. 查看实时 DNS 查询日志
docker logs -f dnsmasq

# 8. 测试 TCP DNS(可选)
dig @192.168.1.10 nas.home +tcp +short