Ubuntu 22.04 没有网络,编辑 /etc/resolv.conf 可以恢复网络,但这种方法安全吗?

Ubuntu 22.04 没有网络,编辑 /etc/resolv.conf 可以恢复网络,但这种方法安全吗?

在我的 Ubuntu 22.04 中,我突然没有互联网。尽管 WiFi 已连接。我在 YouTube 视频中偶然发现了此解决方案。我resolv.conf按如下方式编辑了我的文件:

#nameserver ::1
#nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4

现在我有了互联网。我想知道通过这种方法我的系统是否安全?

为什么我必须编辑/etc/resolv.conf才能恢复互联网

我的结果ls -al /etc/resolv.conf是 -

-rw-r--r-- 1 root root 975 May 23 16:27 /etc/resolv.conf

答案1

resolv.conf如果您还没有互联网访问权限,编辑将不会让您访问互联网,但是这次编辑可以解决一个非常具体的问题。

此文件使用 DNS 控制主机名解析。如果您的计算机配置为使用 DNS 服务器(或通过 DHCP 等方式配置),并且该服务器已损坏,则此文件会有所帮助。

具体来说,前两行(已注释掉并禁用)使用本地 DNS 服务器,该服务器可能配置为与上游 DNS 服务器通信。

接下来的两行配置系统使用 Google 的 DNS 服务器(8.8.8.88.8.4.4)。这是否会让您的系统比您系统原本使用的任何未知默认 DNS 服务器更安全或更不安全,这只能是见仁见智了(超出了本文的范围,即使不是,也没有足够的信息)。

另请注意(正如其他针对 Ubuntu 的答案中提到的那样),编辑此文件可能会禁用自动 DNS 网络配置和/或可能会被自动网络配置踩到。

答案2

编辑/etc/resolv.conf文件中添加 DNS 服务器信息可以作为在某些情况下恢复互联网连接的临时解决办法。

然而,它并不被认为是一种安全可靠的长期解决方案。原因如下:

动态 DNS 配置:在现代 Ubuntu 版本中(包括 Ubuntu 22.04),/etc/resolv.conf 文件由系统根据网络配置设置动态生成。手动修改此文件可能会导致冲突或被网络管理器服务、DHCP(动态主机配置协议)或其他网络管理工具覆盖。

网络管理器:Ubuntu 使用网络管理器作为默认网络管理工具,可动态管理网络连接,包括 DNS 配置。网络管理器利用从 DHCP 或其他网络配置源获得的 DNS 服务器设置来处理 DNS 解析。通过手动编辑 /etc/resolv.conf,您可能会干扰网络管理器的功能并导致意外行为。

安全注意事项:/etc/resolv.conf 文件可能包含敏感信息,例如 DNS 服务器地址或搜索域。手动修改该文件可能会带来安全风险或使系统面临潜在攻击。此外,在系统更新或网络重新配置期间,您的更改可能会丢失或被覆盖。

为了确保 Ubuntu 中的 DNS 配置安全可靠,建议使用操作系统提供的标准网络配置工具。以下是一些替代方案:

网络管理器配置:使用网络管理器 GUI 或命令行工具(例如 nmcli)配置 DNS 设置。这允许网络管理器正确管理 DNS 配置并确保一致性。

systemd-已解决:Ubuntu 22.04 及更新版本默认使用 systemd-resolved 作为 DNS 解析器。您可以使用 systemd-resolve 命令或通过修改 /etc/systemd/resolved.conf.d/ 下的相应配置文件来配置 DNS 设置。

DHCP 配置:如果您从 DHCP 服务器获取网络配置信息,请确保正确配置 DHCP 服务器以提供适当的 DNS 服务器地址。这样,您的系统将自动接收正确的 DNS 设置,而无需手动干预。

通过依赖标准网络配置工具,您可以确保您的 DNS 配置保持一致、安全并与系统更新和网络管理服务兼容。

答案3

文件 /etc/resolv.conf 旨在作为 /run/systemd/resolve/stub-resolv.conf 的符号链接,请检查:

ls -al /etc/resolv.conf

如果不是,请更正:

sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf  /etc/resolv.conf

答案4

我的 /etc/resolv.conf 以以下内容开头:

# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.

至关重要的是,它还包含以下内容:

nameserver 127.0.0.53

这是 systemd 解析器正在监听的地址。

如前所述,您可能需要修复符号链接。此问题可能是 dist-upgrade 修改了 /etc/resolv.conf 导致跳过对此文件的更新。

对于桌面,通常,netplan 还包含存根配置:

/etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager

有了这两件事,就可以通过网络管理器应用正确的 DNS 设置。

最后,如果您使用的是 DHCP,请检查您的 DHCP 服务器是否确实提供了有效的 DNS。您可以通过选择 覆盖 DHCP 服务器的 DNS 配置来测试这一点IPv4->Method->Automatic (Address Only)。该设置适用于 DHCP,但使用手动 DNS。更简单的测试是 - 其他设备是否能通过此 Wifi 链接正常工作?

相关内容