OpenWrt 上缺省使用 dnsmasq 作为内建 dns server 提供给接入的设备用。因为 dnsmasq 也同时用作 DHCP 服务和 TFTP 服务,对新手来说最好不要过多碰 dnsmasq 的配置。所以本文档的方案是仍然使用 dnsmasq 做 DNS 服务,但是把所有请求转发给本机 unbound。
第一步、在控制台中安装 unbound 和 luci 配置工具
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install unbound ca-bundle
root@OpenWrt:~# opkg install luci-app-unbound
第二步、回到 Web 管理,进入 “Recursive DNS”
第三步、在这里,选中 “Manual Conf:” 和 “Extended Tabs:”,然后 “Save & Apply”
第四步、新变化的界面中,进入 “Files”
第五步、把下面的配置文本复制粘贴进表单,然后 “Save”。注:本配置参考自 https://openwrt.org/docs/guide-user/services/dns/unbound,仅仅是把上游服务器替换成红鱼 DNS 的 IP 地址。
server:
port: 53535
access-control: 10.0.0.0/8 allow
access-control: 127.0.0.0/8 allow
access-control: 192.168.0.0/16 allow
cache-max-ttl: 14400
cache-min-ttl: 900
do-tcp: yes
hide-identity: yes
hide-version: yes
interface: 0.0.0.0
minimal-responses: yes
prefetch: yes
qname-minimisation: yes
rrset-roundrobin: yes
ssl-upstream: yes
use-caps-for-id: yes
verbosity: 1
do-ip4: yes
do-ip6: no
outgoing-port-permit: "10240-65335"
outgoing-range: 60
num-queries-per-thread: 30
msg-buffer-size: 8192
infra-cache-numhosts: 200
msg-cache-size: 100k
rrset-cache-size: 100k
key-cache-size: 100k
neg-cache-size: 10k
target-fetch-policy: "2 1 0 0 0 0"
harden-large-queries: yes
harden-short-bufsize: yes
forward-zone:
name: "."
forward-addr: 118.89.110.78@853 # dns.rubyfish.cn with East-Asia upstream
forward-addr: 47.96.179.163@853 # dns.rubyfish.cn with US-West upstream
第六步、回到 “Settings”,再次 “Save & Apply”。现在 unbound 服务就应该启动起来了,监听 53535 端口。
第七步、现在进入 “DHCP and DNS” 去配置 dnsmasq
第八步、在 “DNS forwardings” 里填入 127.0.0.1#53535
第九步、切换到 “Resolv and Hosts Files” 配置,选中 “Ignore resolv file”,这里解释一下,当前 /tmp/resolv.conf.auto 文件里配置的是 OpenWrt 接入上级网络时自动获得的 DNS 服务器地址。原本 dnsmasq 把本地的 DNS 请求都转发到上级运营商 DNS 的,现在这样配置之后就都转给了红鱼 DNS
最后一步,来到页面的最下方 “Save & Apply”,大功告成!
没有回复内容