Linux中,使用
dig
命令查看DNS及TTL时间,`dig exampleLinux系统中,可以通过多种方法查看DNS配置及TTL时间,以下是详细介绍:
查看DNS配置
-
查看
/etc/resolv.conf
文件- 命令:
cat /etc/resolv.conf
- 说明:该文件包含了系统当前的DNS服务器配置信息,通常情况下,会看到以
nameserver
开头的行,后面跟着DNS服务器的IP地址。nameserver 8.8.8.8 nameserver 8.8.4.4
- 注意:此文件中的配置可能会被网络管理器或DHCP客户端动态修改。
- 命令:
-
查看网卡配置文件
- Debian/Ubuntu系统:一般位于
/etc/network/interfaces
或/etc/netplan/*.yaml
文件中,可以使用文本编辑器打开查看,其中可能包含DNS相关的配置。 - CentOS/RHEL系统:通常在
/etc/sysconfig/networkscripts/ifcfg<接口名>
文件中查找DNS配置,对于eth0接口,文件为/etc/sysconfig/networkscripts/ifcfgeth0
,在该文件中,可能会有DNS
或DOMAIN
等字段指定DNS服务器。
- Debian/Ubuntu系统:一般位于
-
使用
nmcli
命令(适用于使用NetworkManager的系统)- 命令:
nmcli device show | grep IP4.DNS
- 说明:此命令会显示当前网络设备的DNS服务器地址,输出示例如下:
IP4.DNS: 8.8.8.8,8.8.4.4
- 命令:
-
使用
ip
命令- 命令:
ip route get <域名> | awk '/^via/ {print $2}'
- 说明:该命令通过查询到指定域名的路由来获取正在使用的DNS服务器IP地址,将
<域名>
替换为你要查询的域名,如www.baidu.com
。
- 命令:
查看DNS记录及TTL时间
-
使用
dig
命令- 基本查询
- 命令:
dig <域名>
- 说明:查询指定域名的各种DNS记录,包括A记录、AAAA记录、CNAME记录等,并显示每个记录的TTL时间,查询
www.baidu.com
的命令及部分输出如下:; <<>> DiG 9.16.1Ubuntu <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; >>HEADER<<opcode: QUERY, status: NOERROR, id: 57077 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 10800 IN CNAME www.a.shifen.com. www.a.shifen.com. 300 IN A 123.125.115.110 ;; Query time: 59 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Fri Jul 21 15:30:20 CST 2024 ;; MSG SIZE rcvd: 147
10800
和300
就是对应记录的TTL时间(单位为秒)。
- 命令:
- 查询特定记录类型
- 命令:
dig t <记录类型> <域名>
- 说明:用于查询特定类型的DNS记录,常见的记录类型有A(IPv4地址)、AAAA(IPv6地址)、CNAME(别名)、MX(邮件交换器)等,查询
www.baidu.com
的MX记录的命令为dig t MX www.baidu.com
。
- 命令:
- 查询指定DNS服务器
- 命令:
dig @<DNS服务器IP> <域名>
- 说明:可以从指定的DNS服务器查询域名信息,将
<DNS服务器IP>
替换为你要查询的DNS服务器的IP地址,<域名>
替换为要查询的域名。
- 命令:
- 查询详细过程
- 命令:
dig +trace <域名>
- 说明:此命令会显示DNS查询的详细追踪过程,包括从根DNS服务器开始逐级查询的过程,以及每一步的TTL时间等信息。
- 命令:
- 基本查询
-
使用
nslookup
命令- 基本查询
- 命令:
nslookup <域名>
- 说明:默认情况下,会查询A记录,并显示TTL时间,查询
www.qq.com
的命令及部分输出如下:Server: 192.168.1.1 Address: 192.168.1.1#53 Nonauthoritative answer: Name: www.qq.com Address: 123.125.115.110
Nonauthoritative answer
表示该答案是从缓存或其他非权威服务器获取的。
- 命令:
- 查询特定记录类型
- 命令:
nslookup querytype=<记录类型> <域名>
- 说明:与
dig
类似,可以查询特定类型的DNS记录,查询www.sina.com
的MX记录的命令为nslookup querytype=MX www.sina.com
。
- 命令:
- 查询指定DNS服务器
- 命令:
nslookup <域名> <DNS服务器IP>
- 说明:从指定的DNS服务器查询域名信息,将
<域名>
替换为要查询的域名,<DNS服务器IP>
替换为要查询的DNS服务器的IP地址。
- 命令:
- 基本查询
常见问题与解答
-
问题:如何更改Linux系统的DNS配置?
- 解答:可以通过编辑
/etc/resolv.conf
文件来手动添加或修改DNS服务器地址,也可以使用网络管理工具,如nmcli
(对于使用NetworkManager的系统)或修改网卡配置文件(对于其他系统)来更改DNS配置,具体方法取决于你的Linux发行版和网络管理方式。
- 解答:可以通过编辑
-
问题:为什么有时候查询到的DNS记录的TTL时间与我预期的不一样?
- 解答:TTL时间是由DNS记录的所有者设置的,不同的域名或记录可能有不同的TTL值,如果DNS记录在缓存中,查询时可能会返回缓存中的TTL时间,而不是原始记录的TTL时间。