
2025.1.20更新日志
更新DNSPod地址
更新GoogleDNS请求方式
我之前是通过旁路由打开mosdns做dns解析及分流,但是我平时经常爱折腾加上openwrt插件太多兼容性问题,导致openwrt经常挂掉,然后家里就断网了。
所以一个稳定且强大的DNS服务器无疑是家庭网络中不可缺少的一环。
因此,我为您准备了一篇详细的指南,搭建一个独立的dns服务器及ui显示界面,从而提高网络的稳定性和响应速度。
项目介绍
mosdns:一个 DNS 转发器
项目地址:https://github.com/IrineSistiana/mosdns
easymosdns:基于Mosdns的精准DNS分流策略,仅需几分钟即可搭建一台支持ECS的无污染DNS服务器。
https://github.com/pmkol/easymosdns
Prometheus:是云原生计算基金会项目,是一个系统和服务监控系统
项目地址:https://github.com/prometheus/prometheus
grafana:用于监控和可观察的开源平台
项目地址:https://github.com/grafana/grafana
exsi安装debian12系统
网上有保姆级教程,我这里就不介绍了。
固定ip地址
nano /etc/network/interfaces
把网卡的dhcp改成static,address是ip地址,netmask是子网掩码,gateway是网关
iface ens192 inet static
address 10.0.0.222
netmask 255.255.255.0
gateway 10.0.0.1
dns-nameservers 127.0.0.1
iface ens192 inet6 dhcp
更完玩重启服务器,随后用ssh通过修改完的ip地址登录
reboot
easymosdns安装步骤
首先,我们需要安装easymosdns。
我会把脚本打包放在文章底部。
该过程简洁明了,只需遵循以下几个步骤:
上传脚本dns-ui到root目录下

脚本权限修改
首先,为安装脚本授予可执行权限:
chmod +x dns-ui.sh
执行安装脚本
然后,执行脚本以启动安装过程:
./dns-ui.sh
脚本中包含了常用的组件以及docker等
重启easymosdns服务
应用配置后重启服务以确保更改生效:
mosdns service restart
确认安装成功
最后,检查服务状态以验证安装是否成功:
mosdns service status

至此mosdns的安装已完成
安装grafana和Prometheus
创建启动文件的配置
接下来我们需要创建并配置启动文件:
mkdir -p /home/docker/prometheus/
之后,将先前下载好的prometheus.yml文件移至此配置文件夹内。

进入docker文件夹下
cd /home/docker
上传docker-compose.yml文件

# docker-compose.yml
version: '3'
services:
grafana:
image: grafana/grafana-oss:latest
container_name: grafana
restart: always
user: root
network_mode: host
volumes:
- /home/docker/grafana/data:/var/lib/grafana
- /home/docker/grafana/panels:/etc/dashboards
- /home/docker/grafana/provisioning/dashboards:/etc/grafana/provisioning/dashboards
- /home/docker/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
user: root
network_mode: host
volumes:
- /home/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
Docker安装相关文件
docker-compose up -d
可通过一下命令查看docker容器是否已运行
docker ps

可视化配置步骤
Grafana软件配置
以Grafana为例,我们可以进行如下几步配置来优化您的可视化体验:
修改默认数据库地址
打开Grafana,将默认数据库地址更改为:
http://localhost:9090



修改默认语言
根据您的偏好,调整界面语言设置。

面板导入
根据需要,导入dns.json监控面板配置文件。

逐行启用
逐项启用并配置相应的面板选项。


日志文件优化
为了保持系统的整洁和高效运行,我们可以通过定期清理日志文件来优化性能:
crontab -e
在文件末尾添加以下内容,以定时清理DNS服务的日志文件:
0 5 * * * sudo truncate -s 0 /etc/mosdns/mosdns.log && /etc/mosdns/rules/update-cdn
通过上述步骤,您不仅可以减少家庭网络中的断网情况,还能获得一个更加稳定、高效的DNS服务。
如何使用DNS服务器
家里想使用dns服务器的可以网关指向这个服务器的ip地址
如果想整个网络环境都是用,那可以主路由套娃的形式指向这个dns服务器
- 最新
- 最热
只看作者