This page is also available in: English
公共 DNS 服务会对用户的使用进行限流,这会导致访问一些网页时加载时间过长,甚至无法访问。
为了解决这个问题,可以在内网服务器(或路由器)中部署一个 dnsmasq 来进行 DNS 记录缓存,访问过的网址会被自己缓存,当下次再访问的时候就可以非常快的完成 IP 解析,从而加快网页的打开速度。
dnsmasq 是一个轻量级的网络服务工具,主要用于提供 DNS 和 DHCP 服务。它通常用于小型网络环境,比如家庭网络或小型办公室。
假设你的内网服务器(192.168.1.8)已经安装了 Docker,使用下面的 Docker Compose 配置文件即可启动 dnsmasq 容器。
services:
dnsmasq:
image: dockurr/dnsmasq
container_name: dnsmasq
environment:
DNS1: "114.114.114.114"
DNS2: "8.8.8.8"
ports:
- 53:53/udp
- 53:53/tcp
cap_add:
- NET_ADMIN
其中,DNS1 和 DNS2 是上游 DNS,可以根据实际需要进行修改。
# 创建容器
sudo docker compose up -d
如果没有报错,则代表 dnsmasq 容器部署成功,也可以使用以下命令查看容器状态:
# 需要确保在 docker-compose.yml 文件所在目录执行命令
sudo docker compose logs -f
对于 Linux 服务器,比如 Ubuntu server,可能 53 号端口已经被 systemd-resolved
服务占用,解决方法是停用该服务,并创建新的 /etc/resolve.conf
文件,将 nameserver 指向 127.0.0.1 。
# 禁用 systemd-resolved 服务
sudo systemctl disable systemd-resolved
# 停止服务
sudo systemctl stop systemd-resolved
# 备份 resolve.conf 文件
sudo mv /etc/resolve.conf /etc/resolve.bak
# 创建新的 resolve.conf 文件
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
dnsmasq 部署完毕,将路由器的 DNS 修改为内网服务器的 IP 地址,比如:
这样一来,所有连接到这个路由器的设备都会自动使用 dnsmasq 进行 DNS 解析。
虽然,对于从未访问过的网址(没有缓存)的初次访问仍然可能会在解析环境出现访问缓慢的问题,但是只要 dnsmasq 完成了初次解析,再之后的访问都会非常的快的完成解析。
本文发布于 2024-08-17,最近更新 2024-09-23。
本文版权归 torchtree.com 网站所有,未经授权不可转载。