如何在 Ubuntu 服务器中配置我的 DNS 设置?

Ast*_*sky 133 server dns dnsmasq

根据此页面,它似乎很简单。但是,/etc/bind在 Ubuntu 12.04.3 LTS 服务器的默认安装中不存在。

那么,在不安装任何其他软件的情况下,如何在 ubuntu 服务器上配置 DNS 并删除 dnsmasq?我对sudo&很熟悉nano

Nul*_*let 169

设置 DNS 服务器

/etc/network/interfaces如果要通过命令行更改 DNS 服务器,则需要配置该文件。

它应该是这样的:

# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.X.X
netmask 255.255.255.0
gateway 192.168.X.X
dns-nameservers X.X.X.X 
Run Code Online (Sandbox Code Playgroud)

如果您有多个 DNS 服务器,只需在每个服务器之间添加一个空格:

dns-nameservers X.X.X.X Y.Y.Y.Y Z.Z.Z.Z
Run Code Online (Sandbox Code Playgroud)

只需将 Xs、Ys 和 Zs 替换为您自己选择的 DNS 服务器的 IP,完成后,运行此命令以更新设置:

sudo ifdown eth0 && sudo ifup eth0
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • 尝试了@Nullet 解决方案,但得到了这个错误,`longtth@long-ubuntu-14:~$ sudo ifdown eth0 && sudo ifup eth0``接口eth0 未配置``RTNETLINK 回答:文件存在``无法启动eth0。`你能帮我修一下吗? (5认同)
  • 这是我的情况:我打开了此答案中指示的文件,其中只有前 3 行。我粘贴了其余部分。我运行了命令,我得到了这个: ifdown: interface eth0 not configured RTNETLINK 答案:文件存在无法启动 eth0。我收到的输出到此结束。如果有人有任何想法,请随时回复。我想知道:一般来说,我应该用什么来替换地址和网关中的 X? (2认同)
  • @Mr.Hyde 你不应该在终端输入这些行,你必须把它们写在 `/etc/network/interfaces` 文件中。 (2认同)
  • Ubuntu Server 22.04 中似乎不存在该文件。 (2认同)

小智 18

我使用 Ubuntu 20.04,不幸的是其他答案都不适合我。

因此,我将在下面分享我解决问题的方法:

首先安装resolvconf(如果尚未安装)

sudo apt update
sudo apt install resolvconf
Run Code Online (Sandbox Code Playgroud)

检查 resolvconf 服务是否已启动并启用

sudo systemctl status resolvconf.service
Run Code Online (Sandbox Code Playgroud)

如果服务未启用,可以使用以下命令启动并启用:

sudo systemctl start resolvconf.service
sudo systemctl enable resolvconf.service
Run Code Online (Sandbox Code Playgroud)

现在编辑 resolv.conf.d/head 配置文件

sudo nano /etc/resolvconf/resolv.conf.d/head
Run Code Online (Sandbox Code Playgroud)

并将您的 DNS 地址添加到其中(例如,我使用 Google Public DNS、8.8.8.8 和 8.8.4.4)

nameserver 8.8.8.8 
nameserver 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

现在强制 resolvconf 在使用 -u 调用时运行更新脚本

sudo resolvconf --enable-updates 
Run Code Online (Sandbox Code Playgroud)

现在运行更新

sudo resolvconf -u
Run Code Online (Sandbox Code Playgroud)

resolv.conf现在,如果您使用以下命令检查文件的内容

cat /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

您必须查看您的 DNS 配置。如果没有,请尝试以下命令并再次检查

sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
Run Code Online (Sandbox Code Playgroud)

参考


Ale*_*vić 17

但是,如果您使用的是较新的 Ubuntu 版本,您可能正在使用resolvconf(一个管理 /etc/resolv.conf 内容的包)。

为了设置重新启动后不会被删除的 dns-nameservers,请将它们添加到

sudo nano /etc/resolvconf/resolv.conf.d/base 
Run Code Online (Sandbox Code Playgroud)

喜欢

nameserver x.x.x.x
nameserver x.x.y.y
Run Code Online (Sandbox Code Playgroud)

并且只要这样做

sudo resolvconf -u
Run Code Online (Sandbox Code Playgroud)


小智 12

20.04 Focal Fossa开始,Ubuntu Server 使用systemd-resolved来管理名称服务器配置。/etc/resolv.conf 是静态文件,不应编辑。

要配置解析器,您可以在 netplan 配置文件中设置它,如下所示:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s25:
      addresses:
        - 192.168.0.100/24
      gateway4: 192.168.0.1
      nameservers:
          search: [mydomain, otherdomain]
          addresses: [1.1.1.1, 8.8.8.8, 4.4.4.4]
Run Code Online (Sandbox Code Playgroud)

有关如何使用 netplan 系统的更多信息,请参阅 Ubuntu 有关网络配置的文章。


Pab*_*chi 6

网络管理器 TUI:nmtui

除了使用此替代方案nmcli connection edit之外,您可能还喜欢使用 的更多ncurses方法nmtui,这是 GNOME 的CLI TUI的替代方案nm-connection-editor

nmtui 主窗口截图

屏幕截图编辑连接

注意:这个答案与 Ubuntu Desktop 更相关,但由于合适的问题被标记为与此问题重复(错误地,IMO),所以我将其发布在这里。