在Linux上手动强制Google DNS跳过本地DNS

时间:2015-10-20 18:30:02

标签: linux dns

我在运行Raspbian的Raspberry Pi 2上使用DNS并使用4G加密狗(中兴通讯MF823)时出现问题。

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

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

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

我尝试过:

  • 我已经在接口anlong中设置了Google DNS和静态IP和 一切。谷歌DNS显示在resolv.conf中,但在本地DNS下。
  • 从那以后在raspbian上安装完整的resolvconf 从一开始就没有安装。
  • 找到一个命令接口并将usb0添加到其他所有文件的文件。

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

我的另一个可能的解决方案是telnet到usb调制解调器,因为它运行linux并乱用它并尝试使DNS正常工作,但我只是设置了覆盆子并且不依赖于调制解调器。我将不得不在我的所有调制解调器上执行此操作。但如果我在我的rasbian图像上有它,我可以将解决方案复制到所有树莓。如果我们能获得飞行员的批准,我可能会有30个单位在运行。

2 个答案:

答案 0 :(得分:0)

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

#!/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,以便你可以确保它在网络配置的其余部分发生后运行。

答案 1 :(得分:0)

我找到了解决问题的解决方案。

就像在树莓派上看来,即使你已经声明静态IP,dhcp客户端仍然可以运行。 (以某种方式)。

要使resolv.conf中的本地DNS消失,我只是卸载了dhcp-client。

sudo apt-get remove dhcpcd5

不确定为什么需要这样做但是当我设置静态IP时,我真的不需要dhcp-client。