Linux和Unix主机命令示例
如何使用主机命令行实用程序来验证Linux和类似Unix的操作系统上的DNS设置?
如何使用dig命令查找主机名的IP地址或者IP地址的主机名?
host是一个简单且必不可少的命令行工具。
它用于以下目的:
- 执行DNS名称查找。
- 查找主机的IP地址,反之亦然。
- 列出并验证各种类型的DNS资源记录,例如NS和MX名称。
- 验证ISP dns服务器和Internet连接。
- 验证垃圾邮件和黑名单记录。
- 验证dns服务器问题并进行故障排除。
语法
基本语法:
host ip-address-here host host-name-here host host-name-here [DNS-Server-Name-Here] host [options] IPAddress | Hostname [DNS-Server-Name-Here]
DNS记录类型列表
使用host命令之前,您应该了解DNS资源记录的常见类型。
以下是最常见的资源记录:
类型 | 目的 | 示例 |
---|---|---|
A | IPv4 IP地址 | 192.168.1.5 或者75.126.153.206 |
AAAA | IPv6 IP地址 | 2607:f0d0:1002:51 :: 4 |
CNAME | 规范名称记录(别名) | cdn.theitroad.org 是www.theitroad.com 的别名 |
MX | 电子邮件服务器主机名 | smtp.theitroad.local 或者mx1.theitroad.com |
NS | 名称(DNS)服务器名称 | ns1.theitroad.local 或者ns-243.awsdns-30.com |
PTR | 指向规范名称的指针。通常用于实现反向DNS查找 | 82.236.125.74.in-addr.arpa |
SOA | 有关DNS区域的权威信息 | 请参见下文 |
TXT | 文本记录 | 请参见下文 |
默认情况下,主机命令仅查找A,AAAA和MX记录。
host命令示例
让我们看看如何在Linux和Unix上使用host命令。
您需要提供主机名或者IP地址作为参数,以获取有关该主机的各种信息。
打开终端应用程序,然后执行以下命令。
查找主机名的IP地址
要查找名为wks05的主机的地址,请运行:
host wks05
输出示例:
theitroad.local has address 192.168.1.5
要显示名为google.com或者theitroad.local的域的地址,请执行:
host google.com
或者
host www.theitroad.local
输出示例:
www.theitroad.local has address 75.126.153.206 www.theitroad.local 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.theitroad.local.
如何选择DNS查询类型?
如下传递-t选项以指定查询类型:
host -t query Hostname|IPAddress
要查询域theitroad.local的NS记录类型,请执行:
host -t ns theitroad.local
输出示例:
theitroad.local name server ns-1075.awsdns-06.org. theitroad.local name server ns-1947.awsdns-51.co.uk. theitroad.local name server ns-243.awsdns-30.com. theitroad.local name server ns-866.awsdns-44.net.
要查询CNAME记录类型,请执行
host -t CNAME s0.theitroad.org
输出示例:
host -t CNAME s0.theitroad.org
要查询域的SOA记录类型,请输入
host -t SOA theitroad.local
输出示例:
theitroad.local 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记录类型,执行:
host -a theitroad.local
或者
host -v theitroad.local
-a选项显示任何类型的dns记录
显示DNS区域名称的SOA记录
传递-C选项以显示该区域所有列出的权威名称服务器中区域名称的SOA记录。
这对于在权威名称服务器上比较SOA记录很有用。
语法为:
$ host -C theitroad.local
通过TCP/IP强制查询
默认情况下,主机命令在进行查询时将使用UDP协议。
查询名称服务器时,传递-T选项以使用TCP连接。
这对于查看名称服务器是否可以在TCP上运行以及防火墙是否允许通过TCP进行查询很有用:
host -T IPAddress host -T theitroad.local host -a -T google.com
指定UDP数据包的重试次数
如果您在unraialbe网络上,则可以设置Packat的重试编号。
在此示例中,尝试重试三次以找出名为example.com的域的IP地址:
host -t a -R 3 example.com
使用IPv4或者IPv6传输
要使用IPv4查询传输,只需将-4
选项传递给host命令:
host -4 IP|Host host -4 example.com
要使用IPv6查询传输,只需将-6
选项传递给host命令。
这对于测试启用了IPv6的名称服务器是否正常工作很有用:
host -6 IP|Host host -6 example.com
如何列出名为example.com的域中的所有主机?
传递-l选项以列出域中的所有主机名和服务器。
仅当您仅从从属服务器(辅助)和/或者主dns服务器IP地址进行查询时,此方法才有效。
作为DNS服务器管理员,您无需打开区域文件即可获取域中所有主机的列表:
# Note must be on slave/master server where AXFR is alowed ## host -l example.com
请注意,AXFR是一种特殊的资源记录类型。
它用于权威性区域传输,即,将整个区域文件从主名称服务器传输到辅助名称服务器。
host命令选项
以下是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 | 设置内存调试标志(跟踪 |