诊断工具

curl

curl 命令是一个从服务器传输数据,或者向服务器传输数据的工具,支持多种协议:DICT、FILE、FTP、FTPS、GOPHER、HTTP、HTTPS、IMAP、IMAPS、LDAP、LDAPS、MQTT、POP3、POP3S、RTMP、RTMPS、RTSP、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、TFTP。curl 命令被设计成无需用户交互即可工作的。

更多信息请见 curl(1) — Linux manual page

ubuntu:~$ curl https://httpbin.org/get
{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.58.0",
    "X-Amzn-Trace-Id": "Root=1-629c984a-2e1c3936379071cc3f9b3fc4"
  },
  "origin": "121.5.122.78",
  "url": "https://httpbin.org/get"
}
ubuntu:~$ curl -X POST -d 'name=hello' https://httpbin.org/post
{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "name": "hello"
  },
  "headers": {
    "Accept": "*/*",
    "Content-Length": "10",
    "Content-Type": "application/x-www-form-urlencoded",
    "Host": "httpbin.org",
    "User-Agent": "curl/7.58.0",
    "X-Amzn-Trace-Id": "Root=1-629c98c0-64e567ec62638cda249d4ed5"
  },
  "json": null,
  "origin": "121.5.122.78",
  "url": "https://httpbin.org/post"
}

查看 ip 信息

ss

ss 命令被用于输出 Linux 套接字的统计信息。它显示的信息与 netstat 命令类似,并且可以显示更多的 Tcp 和状态信息。

更多信息请见 ss(8) — Linux manual page

nslookup

nslookup(Name Server Lookup)命令用来从 DNS 中查询域名对应的 ip 地址和其它 DNS 记录信息。

ping

ping 命令用来测试数据包能否通过 IP 网络发送到目标主机。

ping 命令的运行原理是向目标主机发送 ICMP 协议的 ECHO_REQUEST 数据包,等待接收响应的 ECHO_RESPONSE 数据包,然后按响应时间和成功次数估算丢包率和延时。

traceroute

traceroute 命令用来显示数据包在 IP 网络上发送到目标主机的路由信息。

更多信息请见 traceroute(8) — Linux manual page

tcptraceroute

tcptraceroute 命令的效果等同于 traceroute -T 命令。

mtr

mtr 命令是一个将 tracerouteping 功能结合在一起的网络诊断工具。

更多信息请见 MTR 官方文档

tcpdump

tcpdump 命令会打印经过网卡的数据包。

tcpdump -i eth0 -w dump.pcapng 命令表示把经过 eth0 网卡上的数据包保存到 dump.pcapng 文件中,后续可以使用 Wireshark 打开该文件来分析记录网络数据包。

更多信息请见 tcpdump(1) — Linux manual page

iperf3

iperf3 是一种压测 IP 网络中最大带宽的工具。

iperf3 支持调整时序、协议、缓冲区等等相关的各种参数,对于每个测试用例,它都会输出包含吞吐量 / 比特率、丢失等等参数的测试结果。

最后更新于