使用 Maradns 修改阿里云服务器的 DNS

2019-10-19 3505点热度 4条评论

用过阿里云服务器的小伙伴可能或多或少遇到过 DNS 解析的问题,比如某些域名解析不了,某些域名解析超时,或者有时候能解析,有时候不能。

这些问题很大一部分原因来自于阿里云服务器默认的 DNS,阿里云默认使用的是内网 DNS,应该跟阿里云公共 DNS(223.5.5.5)是同一个,但这个 DNS 不太稳定,有时候会遇到解析超时,或部分域名无法解析的情况。

解决问题的方法肯定是更换 DNS,如果只是简单的更换 DNS,那是非常简单的,只需要更改/etc/resolv.conf这个文件就可以了。但是更改完 DNS 会遇到另一个问题,就是部分内网域名无法解析,所以就需要指定这些内网域名使用内网 DNS,或者你简单的使用 Hosts 指定下 IP 也可以,但是 Hosts 会存在过期的现象,你也不知道内网 IP 啥时候会变。

小山的解决方案是在服务器搭建一个 DNS 代理,然后把服务器的 DNS 指向 DNS 代理,在 DNS 代理设置指定域名使用指定 DNS 解析,其他域名使用第三方 DNS 解析。

搭建的软件我选择的是:Maradns,一个轻量级的 DNS 服务器,资源占用小,速度快,而且支持 Windows。

Linux 用户还可以选择使用 systemd-resolved,只要把后退 DNS 地址指定为阿里云的内网 DNS 即可。

Maradns Aliyun

下面就教大家如何使用 Maradns 搭建 DNS 代理以及更改阿里云 DNS,以下教程只针对 Linux,Windows 自行变通。

安装/配置 Maradns

前往 https://maradns.samiam.org/download.html 下载 Maradns 源代码,Linux 下载 maradns-x.x.x.tar.bz2 ,Windows 下载 maradns-x.x.x-win32.zip。

下载后解压,然后跳转到源码目录。

输入sudo make && sudo make install编译并安装

安装完他会默认启动,可以先将它关闭:/etc/init.d/maradns stop;/etc/init.d/maradns.deadwood stop

安装完成后就可以开始配置了。

Maradns 有两个核心程序:Maradns 和 Deadwood,Deadwood 可以用作 DNS 代理,所以我们只需要修改 Deadwood 的配置文件即可。

打开 Deadwood 的配置文件/etc/dwood3rc

删除以下行注释(前面的 #)

#upstream_servers = {}
#upstream_servers["."]="8.8.8.8, 8.8.4.4" # Servers we connect to

表示默认的上游 DNS 服务器,大家可以根据需要更改第二行的 DNS 服务器,比如我用的是 DNSPod 和 114 的。upstream_servers["."]="119.29.29.29, 114.114.114.114"

这一步是可选的,给某些域名指定上游 DNS 服务器。

示例:upstream_servers["aliyuncs.com."]="100.100.2.138"

让阿里云内网域名使用内网 DNS 解析,因为其他公共 DNS 无法解析内网域名,注意每个域名后面必须有一个点,多个 DNS 服务器以逗号分割,内网 DNS 可以通过/etc/resolv.conf查看。

修改完成后,启动 Deadwood 测试是否生效:sudo service maradns.deadwood restart

默认 Deadwood 绑定的是 127.0.0.2,可以通过此命令测试:nslookup www.mivm.cn 127.0.0.2,如果提示为找到nslookup命令,使用包管理工具进行安装:sudo yum install bind-utilssudo apt install dnsutils

如果一切正常,修改/etc/resolv.conf的第一个 DNS 服务器为 127.0.0.2,第二个 DNS 服务器别删,只有当第一个服务器解析超时才会用第二个,并设置 Deadwood 为开机启动:chkconfig maradns.deadwood on

Maradns 貌似会自动开机启动,可以通过此命令关闭:chkconfig maradns off

重启系统测试一切是否正常。


如果以上有任何不懂,或者是 Windows 平台的相关问题,欢迎加入 QQ 群与我探讨。

微信公众号二维码

微信扫描二维码关注我们

如果觉得文章有帮助到你,可以点击下方的打赏按钮赞助下服务器费用。

小山

一个什么都不会但要装作很厉害的人

文章评论

  • 小白123

    我是用 maradns3.5 windons版本,电脑是win10的,maradns开启后,将路由器的LAN的DHCP的DNS修改成我电脑的ip,试了baidu.com这些网址是可以实现劫持的,但是有一个我想要劫持的网址却无法实现(具体网址不方便透露),我想知道 maradns 是否在这方面有限制,或者是某些类型的网址无法实现劫持?

    2020-03-16
    • 小山

      @小白123 应该是不会的,它只是个 DNS 服务器实现,不会对域名做出限制。

      2020-03-16
  • LOGI

    怎么知道需要哪些内网

    2019-12-26
    • 小山

      @LOGI 一般看你使用了那些阿里云相关的服务,正常情况下只需要阿里云软件包镜像的内网 IP。

      2019-12-27
  • 此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据