【问题标题】:Forcing Google DNS manually on Linux skipping local DNS在 Linux 上手动强制使用 Google DNS 跳过本地 DNS
【发布时间】:2015-10-20 18:30:01
【问题描述】:

我在运行 Raspbian 并使用 4G 加密狗 (ZTE MF823) 的 Raspberry Pi 2 上遇到 DNS 问题。

当我的程序发布到网站时,我从一开始就遇到了问题,我得到了自动 200 OK 响应,但没有发送任何数据。

我发现问题出在 USB 4G 加密狗给树莓派的 DNS 地址上。一旦我在 resolv.conf 中更改为 Google 的 DNS,它就会重新开始工作。 所以我想我只使用 Google DNS 而不会打扰。 但是在重新启动时,有时当 4G-dongle 将网络更改为 3G 时,旧的本地 DNS 会被写回 resolv.conf。我猜是 4G-dongle 正在将数据发送到 Linux,而 linux 会自动将它放在文件的顶部。

我在互联网上找到了很多关于 resolv.conf 和 DNS 的信息,但我没有找到任何关于如何强制 Linux 仅使用 Googel DNS 8.8.8.8 和 8.8.4.4 的信息。

我尝试过的:

  • 我已经在接口中设置了 Google DNS 以及静态 ip 和 一切。 google DNS 显示在 resolv.conf 中,但位于本地 DNS 下。
  • 在 raspbian 上安装了完整的 resolvconf,因为它是 从一开始就没有安装。
  • 找到一个对接口进行排序的文件,并将 usb0 添加到所有其他文件之上。

那么有人对此有任何想法吗?

我的另一个可能的解决方案是远程登录到 USB 调制解调器,因为它正在运行 linux 并在其中乱七八糟,并尝试让 DNS 正常工作,但我宁愿只是设置树莓派而不依赖于调制解调器。我必须在我所有的调制解调器上这样做。但如果我在我的 rasbian 图像上有它,我可以将解决方案复制到所有覆盆子。如果我们能得到试点的批准,我可能会运行 30 个单位。

【问题讨论】:

标签: linux dns


【解决方案1】:

一种可能的解决方案是编写一个脚本并让它在启动时执行。不优雅,但它可能会起作用,它看起来像

#!/bin/bash
#Script to set DNS to Google DNS Servers
echo "nameserver 8.8.8.8 \n nameserver 8.8.4.4" > /etc/resolv.conf

然后保存该文件并将以下内容添加到相应的 rcX.d 中,其中 X 是您的运行级别。

ln -s /path/to/script SXX.setGoogleDNS

其中 XX 是您希望它开始的顺序。我的建议是高 90 年代,这样您就可以确保它在网络配置的其余部分发生后运行。

【讨论】:

  • 感谢您的回答
【解决方案2】:

我找到了一个解决问题的方法。

似乎在树莓派上,即使您声明了静态 IP,dhcp 客户端仍然运行。 (不知何故)。

为了让 resolv.conf 中的本地 DNS 消失,我刚刚卸载了 dhcp-client。

sudo apt-get remove dhcpcd5

不太确定为什么需要这样做,但由于我正在设置静态 IP,因此我并不真正需要 dhcp 客户端。

【讨论】:

    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2015-06-26
    • 2010-11-06
    • 1970-01-01
    相关资源
    最近更新 更多