Linux 和 Unix host 命令示例
host命令是一个易于使用的命令行实用程序,用于在 Linux、macOS、BSD 和类 Unix 系统下执行 DNS 查找。我们可以使用它来查找或将 DNS 名称转换为 IP 地址,反之亦然。让我们看看 Linux 和类 Unix 系统上的 host 命令示例,其中包含开发人员和系统管理员日常使用案例,用于排除 DNS 和网络问题。
- 执行 DNS 名称查找。
- 查找主机的 IP 地址或反之亦然。
- 列出并验证各种类型的 DNS 资源记录,例如 NS 和 MX 名称。
- 验证 ISP DNS 服务器和 Internet 连接。
- 验证垃圾邮件和黑名单记录。
- 验证并排除 DNS 服务器故障。
句法
基本语法如下:
让我们详细看一些Linux主机命令示例。
$ host ip-address-here
$ host dns-host-name-here
$ host host-name-here {DNS-Server-Name-Here}
$ host [options] IPAddress | Hostname [DNS-Server-Name-Here]
DNS 记录类型列表
在使用 host 命令之前,您应该了解 DNS 的常见资源记录类型。以下是最常见的资源记录:
类型 | 目的 | 示例 |
---|---|---|
一个 | IPv4 IP 地址 | 192.168.1.5或者75.126.153.206 |
高级 | IPv6 IP 地址 | 2607:f0d0:1002:51::4 |
别名记录 | 规范名称记录(别名) | s0.example.org是 d2m4hyssawyie7.cloudfront.net |
墨西哥 | 电子邮件服务器主机名 | smtp.example.com或者mx1.example.com |
国家标准 | 名称 (DNS) 服务器名称 | ns1.example.com或者 ns-243.awsdns-30.com |
优先权 | 指向规范名称的指针。 主要用于实现反向 DNS 查找 |
82.236.125.74.in-addr.arpa |
面向服务架构 | 有关 DNS 区域的权威信息 | 见下文 |
TXT | 文字记录 | google-site-verification=oQAwJ5x8VLFhvc1DNXq_pHA0r2sF88et2Dv6hWNjzhg |
默认情况下,host 命令仅查找 A、AAAA 和 MX 记录。
主机命令示例
让我们看看如何在 Linux 和 Unix 上使用 host 命令。您需要提供主机名或 IP 地址作为参数来获取有关该主机的各种信息。打开终端应用程序并输入以下命令。
查找主机名的 IP 地址
要查找名为 wks05 的主机的地址,请键入 host 命令,然后键入主机名,然后按 [Enter] 键。例如:
$ host wks05
以下是 host 命令的示例输出:
wks05 has address 192.168.1.5
要显示名为 google.com 或 example.com 的 Internet 域名的地址,请键入:
$ host google.com
或
$ host www.example.com
host 命令的另一个示例输出:
www.example.com has address 75.126.153.206 www.example.com has IPv6 address 2607:f0d0:1002:51::4
查找 IP 地址的主机名
要查找地址为 192.168.1.254 的主机,请键入:
$ host 192.168.1.254
主机命令示例的输出示例:
254.1.168.192.in-addr.arpa domain name pointer router.localdomain.
本例中查找域名whois地址为75.126.153.206,运行:
$ host 75.126.153.206
206.153.126.75.in-addr.arpa domain name pointer www.example.com.
如何使用 host 命令选择 DNS 查询类型?
传递-t以下选项以在 Linux 和 Unix 中使用 host 命令指定 DNS 查询类型。例如:
$ host -t {query} {Hostname|IPAddress}
要查询域 example.com 的 NS(名称服务器)记录类型,请输入:
$ host -t ns example.com
示例输出:
example.com name server ns-1075.awsdns-06.org. example.com name server ns-1947.awsdns-51.co.uk. example.com name server ns-243.awsdns-30.com. example.com name server ns-866.awsdns-44.net.
要查询CNAME记录类型,请键入
在 Linux 或 Unix 机器中使用 host 命令如下:
示例输出:
$ host -t CNAME s0.example.org
host -t CNAME s0.example.org
要查询域的SOA记录类型,请输入
在 Linux 中运行主机命令如下:
示例输出:
host -t SOA example.com
example.com has SOA record ns-1075.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
要查询域的TXT记录类型,请输入
输入主机命令如下
示例输出:
$ host -t txt google.com
google.com descriptive text "v=spf1 include:_spf.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"
提示:查询域的ANY类型记录,输入:
通过-a或-v选项:
或
$ host -a example.com
$ host -v example.com
-a 选项显示任何类型的 DNS 记录
$ host -a example.com
$ host -v -a example.com
$ host -v -a www.example.com
显示DNS 区域名称的SOA记录
传递-C选项以显示该区域的所有列出的权威名称服务器中区域名称的 SOA 记录。这对于比较权威名称服务器上的 SOA 记录很有用。语法为:
$ host -C example.com
示例输出:
Nameserver 205.251.192.243: example.com has SOA record ns-1075.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 Nameserver 205.251.196.51: example.com has SOA record ns-1075.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 Nameserver 205.251.199.155: example.com has SOA record ns-1075.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400 Nameserver 205.251.195.98: example.com has SOA record ns-1075.awsdns-06.org. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
强制通过 TCP/IP 进行主机命令查询
默认情况下,Unix 和 Linux 上的 host 命令在进行查询时将使用 UDP 协议。传递选项-T以在查询名称服务器时使用 TCP 连接。这对于查看名称服务器是否通过 TCP 工作以及防火墙是否允许通过 TCP 进行查询很有用:
$ host -T IPAddress
$ host -T example.com
$ host -a -T google.com
指定 UDP 数据包的重试次数
如果您的网络不稳定,您可以设置数据包的重试次数。在此示例中,尝试在三次重试中找出名为 example.com 的域的 IP 地址:
$ host -t a -R 3 example.com
使用 Linux 主机命令的 IPv4 或 IPv6 传输
想要使用 IPv4 查询传输?那么将-4选项传递给 Linux host 命令,如下所示:
只使用 IPv6 查询传输怎么样?尝试将选项传递给 host 命令。这对于测试启用 IPv6 的名称服务器是否正常工作很有用:
$ host -4 IP|Host
$ host -4 example.com
-6
$ host -6 IP|Host
$ host -6 example.com
如何列出名为 example.com 的域中的所有主机?
传递-l选项以列出域中的所有主机名和服务器。这仅在您从从属(辅助)和/或主 DNS 服务器 IP 地址进行查询时才有效。作为 DNS 服务器管理员,您可以获取域中所有主机的列表,而无需打开区域文件:
请注意,AXFR 是一种特殊的资源记录类型。它用于权威区域传输,即将整个区域文件从主名称服务器传输到辅助名称服务器。
# Note must be on slave/master server where AXFR is alowed ##
$ host -l example.com
Linux 主机命令选项
以下是 Linux 或类 Unix 操作系统上 host 命令的所有重要选项的摘要:
选项 | 用法 |
---|---|
-a | 它相当于-v -t ANY期权。 |
-c | 指定非 IN 数据的查询类 |
-C | 比较权威名称服务器上的 SOA 记录 |
-d | 相当于 -v |
-l | 使用 AXFR 列出域中的所有主机 |
-i | IP6.INT 反向查找 |
-N | 更改根查找完成之前允许的点数 |
-r | 禁用递归处理 |
-R | 指定 UDP 数据包的重试次数 |
-s | SERVFAIL 响应应该停止查询 |
-t | 指定查询类型 |
-T | 启用 TCP/IP 模式 |
-v | 启用详细输出 |
-w | 指定永远等待答复 |
-W | 指定等待答复的时间 |
-4 | 仅使用 IPv4 查询传输 |
-6 | 仅使用 IPv6 查询传输 |
-m | 设置内存调试标志(跟踪|记录|使用情况) |
相关媒体
本教程还提供简短视频格式:
总结
您了解了 Unix 和 Linux 主机命令示例和语法。有关更多信息,请使用 man 命令或 --help 选项查看主机命令手册页,如下所示:
$ man host
$ host --help