net-tools是Linux 网络工具集,下面这些命令大多都是这个工具集里的
- CentOS安装:
yum install net-tools - Debian/Ubuntu安装:
sudo apt install net-tools
ifconfig
用于配置和显示 Linux 系统中的网络接口信息。它可以查看网络接口(如以太网接口 eth0、无线接口 wlan0 等)的 IP 地址、子网掩码、MAC地址等参数。
ping
主要用于测试主机之间的网络连通性。它通过发送 ICMP(Internet Control Message Protocol)回声请求数据包到目标主机,并等待目标主机返回回声应答数据包来判断网络是否可达。
- 示例:
ping 192.168.1.1,会不断向 IP 地址为 192.168.1.1 的主机发送 ICMP 数据包,直到手动停止(通常使用 Ctrl + C)。
nc
nc 全称 netcat,是一个在 Linux 中多功能的网络工具,通常用于通过 TCP 或 UDP 读取和写入网络连接,也能作为客户端或服务端用来 debug,测试,网络问题分析。
nc -zv <hostname> <port>
用于检测端口是否打开
- 示例:
$ nc -zv 10.0.0.210 22 # 测试10.0.0.210这台服务器的22号端口是否打开,输出如下内容,代表打开了
Connection to 10.0.0.210 port 22 [tcp/ssh] succeeded!
nc -l <port>
启动一个监听在 1234 端口的服务,任何数据发送在这个端口上将会显示在终端
例如:nc -l 1234
nslookup
用于查询域名系统(DNS)相关的信息,如查询域名对应的 IP 地址,或者查询 DNS 服务器的信息。
nslookup domain [dns-server]
- 不指定dns-server(DNS服务器)参数,则用当前系统默认的dns服务器解析域名,如下图:
系统默认的dns服务器配置在
/etc/resolv.conf
- 指定dns-server(DNS服务器)参数:指定DNS服务器查询域名的IP地址,如下图:
nslookup交互模式
交互模式下的查询
我们先来了解一下DNS存储的记录结构, 如下图:
例如,我们要在交互模式下,查询根域名服务器的服务域名
$ nslookup [22:14:03]
> set type=ns
> .
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
. nameserver = a.root-servers.net.
. nameserver = b.root-servers.net.
. nameserver = l.root-servers.net.
. nameserver = g.root-servers.net.
. nameserver = j.root-servers.net.
. nameserver = e.root-servers.net.
. nameserver = d.root-servers.net.
. nameserver = f.root-servers.net.
. nameserver = i.root-servers.net.
. nameserver = k.root-servers.net.
. nameserver = m.root-servers.net.
. nameserver = h.root-servers.net.
. nameserver = c.root-servers.net.
Authoritative answers can be found from:
dig
dig(Domain Information Groper)是一个用于查询 DNS(Domain Name System)相关信息的命令行工具。它可以帮助用户获取域名对应的 IP 地址、查询 DNS 服务器的信息、查看域名的各种 DNS 记录(如 A 记录、AAAA 记录、MX 记录、NS 记录等)
-
语法:
dig [@server] [name] [type] [class] [options] -
常用参数
-
@server:指定要使用的 DNS 服务器进行查询。如果不指定,
dig会使用系统默认的 DNS 服务器。例如,dig @8.8.8.8 example.com表示使用 IP 地址为 8.8.8.8 的 DNS 服务器来查询example.com域名的相关信息。 -
type:指定要查询的 DNS 记录类型。常见的类型有:
- A 记录:用于查询域名对应的 IPv4 地址。例如,
dig example.com A会返回example.com域名对应的 IPv4 地址。 - AAAA 记录:用于查询域名对应的 IPv6 地址。如
dig example.com AAAA。 - MX 记录:用于查询域名的邮件交换器(Mail Exchanger)记录,即邮件服务器相关信息。例如,
dig example.com MX会显示负责接收example.com域名邮件的邮件服务器列表。 - NS 记录:用于查询域名的权威 DNS 服务器记录。如
dig example.com NS会返回该域名的 DNS 服务器信息。
- A 记录:用于查询域名对应的 IPv4 地址。例如,
-
+short:以简洁的格式输出查询结果。例如,当查询域名的 A 记录时,使用
dig example.com A +short只会返回 IP 地址,而不会显示其他详细的 DNS 信息,这样可以快速获取主要信息。
-
netstat
netstat(network statistics)是一个用于查看网络连接状态、路由表信息、接口统计等多种网络相关信息的命令行工具。它在排查网络问题、监控网络活动和查看网络服务状态等方面非常有用。
常用参数:
-a: 用于显示所有的套接字连接,包括正在监听的和已经建立的连接。-t: 只显示 TCP 连接-u: 只显示 UDP 连接-n: 以数字形式显示地址和端口号,而不是尝试将 IP 地址解析为主机名,将端口号解析为服务名称。这样可以加快命令的执行速度,并且在 DNS 解析出现问题时也能准确显示信息。- 区别如下:
-p: 显示每个网络连接对应的进程 ID(PID)和进程名称
示例:
Active Internet connections (servers and established)
Proto Recv - Q Send - Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.100:4432 192.168.1.200:80 ESTABLISHED
这里0.0.0.0:22表示本地所有 IP 地址的 22 端口正在监听(通常是 SSH 服务),192.168.1.100:4432与192.168.1.200:80之间的连接状态是ESTABLISHED,说明这两个端口之间的 TCP 连接已经建立。
tcpdump
Debian/Ubuntu安装:
sudo apt install tcpdump
CentOS安装:
yum install tcpdump
tcpdump是一款强大的网络数据包分析工具,用于在网络接口上捕获和分析网络数据包。它可以帮助网络管理员、安全分析师和开发人员深入了解网络流量情况,排查网络故障、检测安全威胁等。tcpdump工作在网络协议栈的底层,能够捕获经过指定网络接口的各种协议(如 TCP、UDP、ICMP 等)的数据包。
基本语法和参数
-
语法:
tcpdump [选项] [表达式] -
常用参数
- -i(interface) :指定要捕获数据包的网络接口。例如,
-i eth0表示在以太网接口 eth0 上进行捕获。如果不指定此参数,tcpdump会尝试使用系统默认的网络接口。 - -n:以数字形式显示 IP 地址和端口号,而不是尝试将其解析为主机名和服务名称。这样可以加快捕获速度,并且在 DNS 解析出现问题时也能准确显示信息。例如,
tcpdump -n会直接显示192.168.1.100这样的 IP 地址,而不是尝试解析主机名。 - -v、-vv、-vvv:用于控制输出的详细程度。
-v提供相对详细的信息,-vv更详细,-vvv则会显示非常详细的数据包内容,包括协议头中的各种字段信息。例如,使用tcpdump -v可以看到更多关于数据包的信息,如数据包的长度、生存时间(TTL)等。 - -c(count) :指定要捕获的数据包数量。例如,
tcpdump -c 10 -i eth0表示在 eth0 接口上捕获 10 个数据包后停止。这在只需要查看少量数据包用于分析时很有用。 - -w(write) :将捕获到的数据包保存到文件中,以便后续使用其他工具(如 Wireshark)进行更深入的分析。例如,
tcpdump -w capture.pcap -i eth0会将在 eth0 接口上捕获的数据包保存到名为capture.pcap的文件中。pcap是一种常见的数据包捕获文件格式。
- -i(interface) :指定要捕获数据包的网络接口。例如,
telnet
Debian/Ubuntu安装:
sudo apt install telnet
CentOS安装:
yum install telnet
Telnet 是一种基于 TCP/IP 协议的终端仿真协议,它允许用户通过网络远程登录到其他计算机系统。telnet 命令是用于启动 Telnet 客户端程序,从而建立与远程主机的连接。
-
语法格式
- 基本语法为:
telnet [选项] [主机名或IP地址] [端口号] - 例如:
telnet 192.168.1.100尝试连接到 IP 地址为 192.168.1.100 的主机;telnet example.com 23尝试连接到域名是example.com的主机的 23 端口(Telnet 服务默认端口)。
- 基本语法为:
-
测试服务端口
- 可以使用 telnet 命令来测试服务器上某个服务的端口是否开放。例如,对于一个 Web 服务器,通常 HTTP 服务运行在端口 80。在终端输入
telnet example.com 80,如果连接成功,会看到类似如下的空白屏幕
trying example.com...
Connected to example.com.
Escape character is '^]'.