Linux必须要掌握的常用网络命令

1,948 阅读6分钟

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]

  1. 不指定dns-server(DNS服务器)参数,则用当前系统默认的dns服务器解析域名,如下图:

系统默认的dns服务器配置在 /etc/resolv.conf

image.png

  1. 指定dns-server(DNS服务器)参数:指定DNS服务器查询域名的IP地址,如下图:

image.png

nslookup交互模式

交互模式下的查询

我们先来了解一下DNS存储的记录结构, 如下图:

image.png

例如,我们要在交互模式下,查询根域名服务器的服务域名

$ 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 服务器信息。
    • +short:以简洁的格式输出查询结果。例如,当查询域名的 A 记录时,使用dig example.com A +short只会返回 IP 地址,而不会显示其他详细的 DNS 信息,这样可以快速获取主要信息。

netstat

netstat(network statistics)是一个用于查看网络连接状态、路由表信息、接口统计等多种网络相关信息的命令行工具。它在排查网络问题、监控网络活动和查看网络服务状态等方面非常有用。

常用参数:

  • -a: 用于显示所有的套接字连接,包括正在监听的和已经建立的连接。
  • -t: 只显示 TCP 连接
  • -u: 只显示 UDP 连接
  • -n: 以数字形式显示地址和端口号,而不是尝试将 IP 地址解析为主机名,将端口号解析为服务名称。这样可以加快命令的执行速度,并且在 DNS 解析出现问题时也能准确显示信息。
    • 区别如下:

image.png

  • -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:4432192.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是一种常见的数据包捕获文件格式。

telnet

Debian/Ubuntu安装: sudo apt install telnet

CentOS安装:yum install telnet

Telnet 是一种基于 TCP/IP 协议的终端仿真协议,它允许用户通过网络远程登录到其他计算机系统。telnet 命令是用于启动 Telnet 客户端程序,从而建立与远程主机的连接。

  1. 语法格式

    • 基本语法为:telnet [选项] [主机名或IP地址] [端口号]
    • 例如:telnet 192.168.1.100尝试连接到 IP 地址为 192.168.1.100 的主机;telnet example.com 23尝试连接到域名是example.com的主机的 23 端口(Telnet 服务默认端口)。
  2. 测试服务端口

  • 可以使用 telnet 命令来测试服务器上某个服务的端口是否开放。例如,对于一个 Web 服务器,通常 HTTP 服务运行在端口 80。在终端输入telnet example.com 80,如果连接成功,会看到类似如下的空白屏幕
trying example.com...
Connected to example.com.
Escape character is '^]'.