在linux系统管理和网络故障排查中,能够快速准确地检查DNS服务器地址和服务器自身的IP地址是一项基础且至关重要的技能,DNS(域名系统)负责将人类可读的域名(如www.google.com)解析为机器可读的IP地址,而服务器的IP地址则是其在网络中的唯一标识,掌握相关的命令行工具,不仅能提高工作效率,还能在关键时刻帮助定位和解决复杂的网络问题,本文将详细介绍在Linux环境下,如何通过一系列命令来查询这两项关键网络信息。
查看DNS服务器IP地址
DNS配置通常存储在特定的配置文件中,或由系统服务动态管理,以下是几种最常用的查询方法。
检查
/etc/resolv.conf
文件
这是最传统也是最直接的方法。
/etc/resolv.conf
文件是Linux系统解析器的主要配置文件,其中包含了系统用于查询域名的DNS服务器地址。
打开终端,使用以下命令查看文件内容:
cat /etc/resolv.conf
通常如下所示:
# This file is managed by man:systemd-resolved(8). Do not edit.#nameserver 8.8.8.8nameserver 8.8.4.4search localdomain
在这个例子中,
nameserver
关键字后面紧跟的IP地址(和)就是系统当前配置的DNS服务器地址,需要注意的是,在现代许多Linux发行版(如Ubuntu 18.04+、Debian 9+)中,此文件通常由
systemd-resolved
或
NetworkManager
服务自动管理,直接手动编辑此文件可能在系统重启后被覆盖。
使用
systemd-resolve
命令
对于使用
systemd-resolved
作为DNS解析服务的系统,
systemd-resolve
是一个更可靠、更现代的工具,它可以提供更详细的DNS状态信息。
执行以下命令:
systemd-resolve --status
该命令会输出详细的网络接口和DNS配置信息,在输出中找到 “DNS Servers” 部分,即可看到当前正在使用的DNS服务器地址。
GlobalDNSSEC NTA: 10.in-addr.arpa...Link 2 (ens33)Current Scopes: DNSDNS Servers: 192.168.1.1DNS Domain: home
此例中,网络接口配置的DNS服务器是。
使用命令
如果系统使用
NetworkManager
来管理网络连接,(NetworkManager Command-Line Interface)是查询DNS配置的理想工具。
执行以下命令并过滤DNS相关信息:
nmcli dev show | grep 'DNS'
输出结果会清晰地列出每个网络接口的DNS服务器配置。
IP4.DNS[1]:192.168.1.1IP6.DNS[1]:fe80::1
使用或命令
(Domain Information Groper)和(Name Server Lookup)是强大的DNS查询工具,虽然它们的主要功能是查询特定域名的DNS记录,但它们在执行查询时也会显示所使用的DNS服务器。
直接执行命令而不带任何参数:
在输出的顶部,可以看到类似以下信息:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1;; QUESTION SECTION:;.INNS;; ANSWER SECTION:.3600000 INNSa.root-servers.net....;; Query time: 12 msec;; SERVER: 127.0.0.53#53(127.0.0.53)<-- 这里显示的是查询的DNS服务器;; WHEN: Mon Oct 26 10:30:00 CST 2025;; MSG SIZErcvd: 239
这里的
SERVER: 127.0.0.53#53
表明命令将查询发送到了本地的
systemd-resolved
存根解析器,后者再根据配置转发到上游的DNS服务器。
查看服务器自身的IP地址
获取服务器自身的IP地址同样重要,它分为内网IP和公网IP。
使用命令
命令是现代Linux系统中替代老旧的标准网络配置工具。(或简写为)用于显示所有网络接口的地址信息。
输出信息会列出所有网络接口(如、、),你需要找到主要的网络接口(通常不是回环接口),并查看其行。
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever2: ens33: mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic noprefixroute ens33valid_lft 86395sec preferred_lft 86395sec
在此例中,接口的IP地址是。
使用命令
命令不仅可以显示或设置主机名,还可以用来快速查看IP地址。
hostname -I
这个命令会直接列出所有非回环的IP地址,非常简洁,适合在脚本中使用。
查询公网IP地址
如果服务器位于NAT之后,上述方法只能查到内网IP,要获取公网IP,需要借助外部服务,可以使用或等工具访问专门提供此服务的网站。
curl ifconfig.me# 或者curl ipinfo.io/ip# 或者使用DNS查询方式dig +short myip.opendns.com @resolver1.opendns.com
这些命令会向远程服务器发起请求,并返回你的公网IP地址。
命令小编总结表
为了方便快速查阅,下表小编总结了上述关键命令:
| 目的 | 命令 | 说明 |
|---|---|---|
| 查看DNS配置文件 |
cat /etc/resolv.conf
|
传统方法,但可能被服务自动管理。 |
| 查看systemd-resolved状态 |
systemd-resolve --status
|
适用于使用systemd的现代系统。 |
| 通过NetworkManager查看 |
nmcli dev show | grep 'DNS'
|
适用于使用NetworkManager的系统。 |
| 通过DNS查询工具查看 | 或 | 查看查询实际使用的DNS服务器。 |
| 查看服务器所有IP | 或 | 现代标准命令,信息详细。 |
| 快速查看服务器IP |
hostname -I
|
简洁输出,适合脚本。 |
| 查看服务器公网IP |
curl ifconfig.me
|
需要互联网连接,借助外部服务。 |
相关问答FAQs
问题1:为什么我编辑了
/etc/resolv.conf
文件,添加了新的DNS服务器,但重启后配置又恢复原样了?
解答:
这是因为您的系统很可能使用了
systemd-resolved
或
NetworkManager
这样的网络管理服务,这些服务会动态生成和管理
/etc/resolv.conf
文件,以确保网络配置的一致性和正确性,当您手动编辑后,系统重启或网络服务重启时,它会根据其自身的配置源(如Netplan配置文件、NetworkManager连接配置等)重新覆盖该文件,要进行永久性的DNS修改,您应该修改这些服务的上游配置文件,在使用Netplan的Ubuntu系统上,应编辑
/etc/netplan/
目录下的YAML配置文件;在使用NetworkManager的系统上,则可以通过
nm-connection-editor
图形工具或命令来修改连接的DNS设置。
问题2:命令显示了多个IP地址,、和一个地址,我应该使用哪一个?
解答: 这几个地址有不同的用途:
在绝大多数情况下,您应该关注并使用那个私有网络地址(如),这才是服务器在局域网中的有效身份标识,如果服务器直接连接公网,那么它将拥有一个公网IP地址。








![z441h (z441H一25一200的详细参数,no_ai_sug:false}],slid:101903305213433,queryid:0x1855cae364f05f9)](https://www.kuidc.com/zdmsl_image/article/20260115032716_29319.jpg)





发表评论