如何设置 DNS 服务器(如 opennic)

如何设置 DNS 服务器(如 opennic)

我想在我的配置中添加一个 DNS 服务器(以便使用 opennic)。我搜索了很多,但找不到令人满意的解决方案,而且我对 ubuntu 的解决方案感到迷茫。

  1. 我找到了一个不错的教程,图形部分对我来说很有用,但我无法让第一部分工作(当然,我想编写脚本)。http://www.ubuntututorials.com/set-dns-server-ubuntu-12-04/ 当我添加一行“prepend…”并用 检查我的 DNS 地址时nm-tool,它没有改变。我是否需要命令来重新启动服务或类似的东西?他们没有这么说。(运行service networking restart没有帮助)。

  2. 正如 Arch Wiki 中解释的那样(https://wiki.archlinux.org/index.php/Resolv.conf#Use_resolv.conf.head),我们可能会使用 /etc/resolv.conf.head 文件,但随后我们需要安装openresolv包才能运行resolvconf -u。但我希望我未来的脚本无需依赖外部依赖即可运行。

那么,有人能告诉我要编辑什么文件,以及运行什么命令来更新conf吗?

我使用的是 Debian(Mint Debian),但我想知道 Ubuntu 上是否也一样。我读到自 Ubuntu 12.04 以来发生了一些变化,因此网上的很多教程都过时了(特别是写入/etc/dhcp3/dhclient.conf已弃用)。

谢谢 !

答案1

有很多不同的方法,这取决于您到底想要实现什么。

通常,我使用 resolvconf 软件包(请注意,没有点),它允许您在 /etc/network/interfaces 文件中正确配置 DNS。这对于静态配置来说是最佳选择。只需添加一行

dns-nameservers 8.8.8.8 8.8.4.4

到适当的节(= 指定一个给定接口的属性的一组行)。请注意 dns-nameservers 末尾的“s”(不是错误)以及同一行上有两个 IP 地址。

但您也可以使用 resolvconf 在运行时更改 DNS:

回显“ dns-nameservers 8.8.8.8” | resolvconf -a my_DNS

将添加 8.8.8.8 作为 DNS(它会立即运行更新脚本),并且此命令

resolvconf-d 我的DNS

将删除它(再次,立即运行更新脚本)。

如果你希望始终坚持使用你最喜欢的 DNS,最简单的方法是将你自己的行(作为 sudo)添加到文件 /etc/resolv.conf,例如

nameserver 8.8.4.4
nameserver 8.8.8.8

然后更改文件,以便没有人可以覆盖它:

sudo chattr +i /etc/resolv.conf

此时,您拥有一组不可变的 DNS。

请小心,这两个解决方案会发生冲突,因为 resolvconf 软件包会将常规文件 /etc/resolv.conf 转换为 /run/resolvconf/resolv.conf 的符号链接,而 /run/resolvconf/resolv.conf 是 tmpfs 上的文件,与永久文件完全相反,因此您无法对其应用 chattr。

最后,还有许多其他临时解决方案,已在多个论坛上讨论过多次,例如这里。在此页中,提到了当前的 Ubuntu(和 Debian)发行版已将 /etc/dhcp3/dhclient.conf 移至 /etc/dhcp/dhclient.conf,如果您选择此选项,则这是需要修改的适当文件。

答案2

因此我尝试去理解,以下是我编写脚本的意图:https://github.com/vindarel/open-nic

用户只需运行 python opennic-set.py (依赖项:apt-get install resolvconfpip install BeautifulSoup4(在 Ubuntu 中可能默认)),脚本就会执行以下操作:

  • 它会获取距离你最近的 openNic DNS 服务器,
  • 它将名称服务器添加到 /etc/resolvconf/resolv.conf.d/tail,
  • 它运行resolvconf -u以更新,
  • 它测试我们是否可以访问 opennic 的保留 TLD。

立即尝试命令:wget https://raw.github.com/vindarel/open-nic/master/opennic-set.py && python opennic-set.py

欢迎任何评论!

相关内容