我想在我的配置中添加一个 DNS 服务器(以便使用 opennic)。我搜索了很多,但找不到令人满意的解决方案,而且我对 ubuntu 的解决方案感到迷茫。
我找到了一个不错的教程,图形部分对我来说很有用,但我无法让第一部分工作(当然,我想编写脚本)。http://www.ubuntututorials.com/set-dns-server-ubuntu-12-04/ 当我添加一行“prepend…”并用 检查我的 DNS 地址时
nm-tool
,它没有改变。我是否需要命令来重新启动服务或类似的东西?他们没有这么说。(运行service networking restart
没有帮助)。正如 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 resolvconf
和pip 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
欢迎任何评论!