Install
openclaw skills install @thcjp/dns-networking-tool-freeopenclaw skills install @thcjp/dns-networking-tool-freeDNS网络诊断工具免费版为开发者提供日常网络问题排查能力。工具涵盖 DNS 解析查询、端口连通性测试、HTTP 请求诊断和 TLS 证书检查,帮助开发者快速定位网络故障根因。
本版本适合开发环境网络问题排查、DNS 解析异常诊断和日常连通性测试。所有诊断命令均通过 Bash 执行,无需安装额外软件。
支持多种 DNS 记录类型查询和指定服务器查询。
# 基础A记录查询
dig example.com
dig +short example.com
# 查询不同记录类型
dig example.com MX # 邮件服务器
dig example.com CNAME # 别名记录
dig example.com TXT # 文本记录(SPF/DKIM)
dig example.com NS # 名称服务器
dig example.com AAAA # IPv6 地址
# 指定DNS服务器查询
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
# 反向解析
dig -x 93.184.216.34
# 使用nslookup
nslookup example.com
nslookup example.com 8.8.8.8
nslookup -type=MX example.com
输入: 用户提供DNS 解析查询所需的指令和必要参数。 处理: 按照skill规范执行DNS 解析查询操作,遵循单一意图原则。 输出: 返回DNS 解析查询的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作快速检测目标主机端口是否开放。
# 单端口测试
nc -zv example.com 443
nc -zv -w 5 example.com 80 # 5秒超时
# 批量端口扫描
for port in 22 80 443 5432 6379; do
echo -n "Port $port: "
nc -zv -w 2 example.com $port 2>&1
done
# 使用bash内置TCP测试
timeout 3 bash -c 'echo > /dev/tcp/example.com/443' && echo "Open" || echo "Closed"
# 使用curl检测
curl -sI -o /dev/null -w "%{http_code}" https://example.com
输入: 用户提供端口连通性测试所需的指令和必要参数。 处理: 按照skill规范执行端口连通性测试操作,遵循单一意图原则。 输出: 返回端口连通性测试的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作分析 HTTP 请求各阶段耗时,定位慢请求根因。
# 详细请求过程
curl -v https://api.example.com/endpoint
# 各阶段耗时分析
curl -o /dev/null -s -w "
DNS解析: %{time_namelookup}s
TCP连接: %{time_connect}s
TLS握手: %{time_appconnect}s
首字节时间: %{time_starttransfer}s
总耗时: %{time_total}s
HTTP状态码: %{http_code}
响应大小: %{size_download} bytes
" https://api.example.com/endpoint
# 查看响应头
curl -sI https://api.example.com/endpoint
# 跟随重定向
curl -sIL https://example.com
输入: 用户提供curl 请求诊断所需的指令和必要参数。 处理: 按照skill规范执行curl 请求诊断操作,遵循单一意图原则。 输出: 返回curl 请求诊断的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作检查证书有效期和颁发信息。
# 查看证书信息
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | \
openssl x509 -noout -subject -issuer -dates
# 查看证书过期时间
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate
# 验证证书链
echo | openssl s_client -showcerts -connect example.com:443 < /dev/null 2>/dev/null | \
awk '/BEGIN CERT/,/END CERT/' > chain.pem
输入: 用户提供TLS 证书检查所需的指令和必要参数。 处理: 按照skill规范执行TLS 证书检查操作,遵循单一意图原则。 输出: 返回TLS 证书检查的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作# 查看本地DNS配置
cat /etc/resolv.conf # Linux
cat /etc/hosts # 所有平台
# 刷新DNS缓存
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder # macOS
sudo systemd-resolve --flush-caches # Linux(systemd)
ipconfig /flushdns # Windows
# 查看systemd-resolved状态
resolvectl status
输入: 用户提供本地 DNS 缓存管理所需的指令和必要参数。 处理: 按照skill规范执行本地 DNS 缓存管理操作,遵循单一意图原则。 输出: 返回本地 DNS 缓存管理的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:诊断与证书检查、适合开发者日常网、络问题排查、面向开发者的网络、诊断辅助工具、解析调试、请求诊断与、核心能力、请求诊断与时序分、证书有效期检查等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
input_params参数,支持创建/查询/导出操作当域名无法访问时,按步骤排查问题。
#!/bin/bash
TARGET="${1:-example.com}"
echo "=== 网络诊断: $TARGET ==="
# 1. DNS解析检查
echo -n "DNS解析: "
IP=$(dig +short "$TARGET" | head -1)
if [ -n "$IP" ]; then
echo "成功 -> $IP"
else
echo "失败"
echo "尝试使用其他DNS服务器..."
dig +short @8.8.8.8 "$TARGET"
exit 1
fi
# 2. Ping测试
echo -n "Ping: "
ping -c 3 -W 3 "$TARGET" > /dev/null 2>&1 && echo "可达" || echo "不可达(可能被ICMP屏蔽)"
# 3. HTTPS端口检查
echo -n "443端口: "
nc -zv -w 5 "$TARGET" 443 2>&1 | grep -q "succeeded\|open" && echo "开放" || echo "关闭"
# 4. TLS证书检查
echo -n "TLS证书: "
echo | openssl s_client -connect "$TARGET:443" -servername "$TARGET" 2>/dev/null | \
grep -q "Verify return code: 0" && echo "有效" || echo "无效"
echo "=== 诊断完成 ==="
分析 API 请求各阶段耗时,找出瓶颈。
# 详细时序分析
echo "=== API请求时序分析 ==="
curl -o /dev/null -s -w "
DNS解析: %{time_namelookup}s
TCP连接: %{time_connect}s
TLS握手: %{time_appconnect}s
服务器处理: %{time_starttransfer}s
总耗时: %{time_total}s
下载大小: %{size_download} bytes
" https://api.example.com/endpoint
# 判断瓶颈位置
TOTAL=$(curl -o /dev/null -s -w "%{time_total}" https://api.example.com/endpoint)
DNS=$(curl -o /dev/null -s -w "%{time_namelookup}" https://api.example.com/endpoint)
echo "DNS占比: $(echo "scale=2; $DNS/$TOTAL*100" | bc)%"
检查多个域名的证书有效期。
#!/bin/bash
# 证书过期检查脚本
DOMAINS="example.com api.example.com cdn.example.com"
for domain in $DOMAINS; do
echo -n "$domain: "
EXPIRY=$(echo | openssl s_client -connect "$domain:443" -servername "$domain" 2>/dev/null | \
openssl x509 -noout -enddate 2>/dev/null | sed 's/notAfter=//')
if [ -n "$EXPIRY" ]; then
EXPIRY_EPOCH=$(date -d "$EXPIRY" +%s 2>/dev/null || date -j -f "%b %d %T %Y %Z" "$EXPIRY" +%s 2>/dev/null)
NOW_EPOCH=$(date +%s)
DAYS_LEFT=$(( (EXPIRY_EPOCH - NOW_EPOCH) / 86400 ))
echo "$EXPIRY (剩余 ${DAYS_LEFT} 天)"
else
echo "无法获取证书信息"
fi
done
以下场景DNS网络诊断基础版不适合处理:
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求。
在 AI Agent 中描述网络问题:
我的域名 example.com 无法访问,请帮我诊断问题原因。
Agent 会自动运行 DNS 解析、端口测试、证书检查等命令。
根据诊断结果,Agent 提供问题定位和修复建议。
创建网络诊断配置文件 .network-diag.yml:
# 网络诊断配置(免费版)
version: "1.0"
# 默认DNS服务器
dns_servers:
- 8.8.8.8
- 1.1.1.1
- 223.5.5.5
# 常用端口
common_ports:
web: [80, 443]
ssh: [22]
database: [3306, 5432, 6379, 27017]
mail: [25, 465, 587, 993, 995]
# 证书检查
certificate:
warning_days: 30
critical_days: 7
# 超时设置
timeout:
dns: 5
port: 5
http: 30
# 保存诊断日志
diag_log="network-diag-$(date +%Y%m%d-%H%M%S).log"
echo "诊断日志: $diag_log"
{
echo "=== 网络诊断 $(date) ==="
dig +short example.com
nc -zv example.com 443
curl -sI https://example.com
} | tee "$diag_log"
# 临时域名映射测试
echo "203.0.113.50 example.com" | sudo tee -a /etc/hosts
curl -sI https://example.com
# 测试完成后移除
sudo sed -i '/203.0.113.50/d' /etc/hosts
# macOS
brew install bind
# Ubuntu/Debian
sudo apt install dnsutils
# CentOS/RHEL
sudo yum install bind-utils
# 替代方案:使用nslookup
nslookup example.com
# 使用bash内置TCP测试替代
timeout 3 bash -c 'echo > /dev/tcp/example.com/443' && echo "Open" || echo "Closed"
# 或使用curl
curl -sI -o /dev/null -w "%{http_code}" https://example.com
| 能力维度 | 免费版 | 专业版 |
|---|---|---|
| 诊断范围 | 单目标 | 批量多目标 |
| 防火墙分析 | 不支持 | iptables/ufw规则 |
| 代理诊断 | 基础 | 完整代理链分析 |
| 持续监控 | 不支持 | 定时巡检告警 |
| 报告格式 | 文本 | HTML/JSON |
| 历史记录 | 不支持 | 趋势分析 |
按以下顺序排查:
nc -zv example.com 443echo $HTTP_PROXYopenssl s_clientcat /etc/hosts| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| dig/nslookup | 系统工具 | 必需 | 系统自带或安装 dnsutils |
| nc(netcat) | 系统工具 | 推荐 | 系统自带或安装 netcat |
| curl | 系统工具 | 必需 | 系统自带 |
| openssl | 系统工具 | 必需 | 系统自带 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |