有人可以告诉我是什么sudo echo nameserver 8.8.8.8 > /etc/resolv.conf吗?
我曾经随机断开互联网连接 15 秒到 3 分钟,但在使用此命令后,互联网连接就像一个魅力。我只是好奇这个神奇的命令行做了什么。
ger*_*ijk 29
它替换了Google 公共 DNS 服务在您机器上使用的名称服务器 (DNS) 。如果运行该命令对您有帮助,则您的网络提供的默认设置(DHCP)可能存在 DNS 问题。虽然最好解决问题的根本原因,但这是对您问题的一般性回答。
sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)
sudo 在这种情况下将特权提升为 root。echo只将后面的参数输出到标准输出(在这种情况下它输出nameserver 8.8.8.8)> 将标准输出重定向到常规 Unix shell 中的文件(覆盖它)。/etc/resolv.conf 是写入输出的文件。nameserver 8.8.8.8在/etc/resolv.conf品牌使用具有IP地址,域名服务器系统8.8.8.8的域名解析为IP地址。(实际发生的非常简短的版本)8.8.8.8是Google 发布的关于其公共 DNS 服务正在侦听的地址之一。sudo 错误虽然这个解释听起来有道理,但这行不通,因为你会得到一个错误:
bash: /etc/resolv.conf: Permission denied
Run Code Online (Sandbox Code Playgroud)
为什么?输出重定向由您的 shell(此处:Bash)处理,用于sudo. 类似于数学中的乘法优先于加法。所以,只是echo获得了提升的权限,但你的 shell 没有!要解决这个问题,应该像这样运行这个命令
sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"
Run Code Online (Sandbox Code Playgroud)
或者,通过使用管道并将tee其输出到文件:
echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf #prints to screen as well
Run Code Online (Sandbox Code Playgroud)
在 Ubuntu 上,这只是一个临时更改,因为网络管理器“管理”了该/etc/resolv.conf文件。本地修改将被覆盖。这就是为什么您应该在网络管理器中配置它以使其持久化。
我建议使用网络管理器正确配置您的 PC。我假设您在这里的网络上使用 DHCP(最常见)。然后执行此操作以执行与您正在使用的命令相同的命令:
打开编辑连接:

编辑您正在使用的连接配置文件。

在IPv4 设置选项卡上:
方法:仅自动 (DHCP) 地址
此设置使其对主机的 IP 地址配置执行常规 DHCP 请求,但它会忽略其他非强制性选项,如建议的 DNS 服务器。
8.8.8.8
完毕。
在本地或公司网络中,本地 DNS 服务器可能用于本地主机。通过直接要求 Google 的服务器为您解析名称,您将失去此功能。因此,例如,如果本地 DNS 服务器知道“打印机”是什么,那么您将无法使用该名称的打印机。
因此,请改为修复您的本地 DNS 服务器。如果它只是一个简单的转发器到您的 ISP 损坏的 DNS 服务器并且您无法更改它(例如 ISP 管理的一体式路由器),那么此8.8.8.8解决方案可能是您唯一的选择。
| 归档时间: |
|
| 查看次数: |
57580 次 |
| 最近记录: |