Linux whois命令(长文讲解)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观

前言

在 Linux 系统运维、网络开发或网络安全领域,快速获取域名、IP 地址或网络资源的所有权信息是一项基础技能。而 whois 命令正是实现这一目标的利器。它如同一本动态更新的“网络电话簿”,帮助开发者追踪资源归属、排查域名状态或分析网络事件。无论是初学者搭建本地服务器,还是中级开发者调试分布式系统,掌握 whois 命令都能显著提升工作效率。本文将以通俗易懂的方式,从基础概念到实战案例,逐步解析这一工具的核心价值与应用场景。


基础概念解析

什么是 whois 命令?

whois 是一个基于文本的查询工具,其名称源自“who is”,字面意为“谁拥有”。它通过连接全球分布的数据库服务器,获取特定域名、IP 地址或自治系统(AS)的注册信息。这些信息包括注册人姓名、联系方式、注册时间、过期日期以及管理机构等。

形象比喻:可以将 whois 想象为互联网的“户口簿”。就像现实中每栋房子都有产权记录,每个网络资源也必须在 whois 数据库中登记“归属权”。

whois 的工作原理

当用户执行 whois example.com 命令时,系统会:

  1. 解析根服务器:首先查询根域名服务器,确定该域名的顶级域(如 .com)对应的注册商。
  2. 定向查询:根据顶级域信息,连接对应的注册商数据库(如 GoDaddy、Namecheap 等)。
  3. 返回结果:将注册商返回的详细数据以文本形式展示在终端。

这一过程类似于快递员根据地址层层派送包裹,最终找到收件人信息。


核心功能详解

基础语法与常用选项

基础语法

whois [选项] [查询对象]  

常用选项

选项功能描述
-h指定查询目标的 whois 服务器地址
-H以 HTML 格式输出结果(需配合 -h
--verbose显示详细调试信息

示例

whois example.com  

whois -h whois.verisign-grs.com example.com  

场景化应用:域名信息查询

域名注册信息的典型输出

Domain Name: EXAMPLE.COM  
Registry Domain ID: 12345_DOMAIN_COM-VRSN  
Registrar WHOIS Server: whois.example-registrar.com  
Creation Date: 2020-01-01T00:00:00Z  
Expiry Date: 2025-01-01T00:00:00Z  
Registrant Organization: Example Corp  
Registrant Country: US  

关键字段解读

  • Creation Date:域名注册时间,可用于判断域名历史。
  • Expiry Date:域名过期时间,过期前需及时续费。
  • Registrant Organization:注册主体的公司或机构名称。

实战案例
假设某开发者发现自己的网站流量异常,怀疑被仿冒。可通过 whois 查询可疑域名的注册信息,对比注册时间和联系方式,快速判断是否合法。


IP 地址与自治系统查询

IP 地址归属分析

whois 8.8.8.8  

典型输出包含:

  • NetRange:IP 地址段(如 8.8.8.0 - 8.8.8.255)。
  • Organization: Google LLC。
  • Country: US。

自治系统(AS)查询

whois AS15169  

输出将显示该网络的运营商、地理覆盖范围及技术联系人信息。


进阶技巧与案例

自定义查询策略

通过 -h 选项直接访问特定注册商数据库

某些情况下,直接查询可能返回模糊结果。例如,.io 域名需通过 nic.io 服务器:

whois -h whois.nic.io example.io  

结合 grep 筛选关键信息

whois example.com | grep -i "Expiry Date"  

处理复杂查询场景

1. 无效查询的解决

问题:执行 whois invalid-domain.123 后返回“Domain not found”。
解决方案

  • 确认域名拼写是否正确。
  • 检查是否为新顶级域(如 .shop.xyz),可能需指定对应注册商服务器。

2. 批量查询自动化

使用 Shell 脚本批量查询多个域名的过期时间:

#!/bin/bash  
for domain in example1.com example2.org; do  
  echo "Checking $domain..."  
  whois "$domain" | grep "Expiry Date"  
done  

dignslookup 的协同工作

虽然 whois 主要用于归属信息查询,但结合 dig 可深入分析域名解析链:

dig +short example.com NS  

whois ns1.example.com  

常见问题与解决方案

Q1: 查询结果显示“Access Denied”

原因:部分注册商限制非交互式查询(如脚本高频调用)。
解决方法

  • 降低查询频率,或使用 --verbose 选项排查网络问题。
  • 尝试通过 -h 指定备用服务器。

Q2: 输出信息包含无关广告内容

原因:部分免费 whois 服务嵌入推广信息。
解决方法

  • 使用官方注册商服务器(如 -h whois.icann.org)。
  • 通过 sed 过滤广告行:
    whois example.com | sed '/^#.*$/d'  
    

结论

whois 命令作为 Linux 环境下不可或缺的工具,为开发者提供了快速追踪网络资源归属的高效途径。从基础的域名过期时间查询,到高级的 IP 地址溯源与批量自动化分析,它始终扮演着“网络侦探”的角色。掌握其语法、选项及典型应用场景,不仅能提升日常开发效率,更能为网络安全事件的响应与故障排查提供关键线索。

实践建议

  1. whois 添加到你的日常检查清单中,定期监控重要域名的注册状态。
  2. 结合 cron 任务实现自动化监控,例如提前 30 天提醒域名续费。
  3. 学习其他工具(如 whois 的图形界面工具 whowatch)以拓展技能树。

在数字化时代,每一行代码、每一个 IP 都需要被追溯与验证。whois 命令正是这把打开网络真相之门的钥匙,期待你在实践中解锁它的更多价值。

最新发布