当前位置:首页 > Linux > 正文

linux 如何查看网络连接

Linux 中,可使用 netstat -ass -a

使用 netstat 命令

netstat 是一个经典的网络工具,用于显示网络连接、路由表、接口统计等信息,虽然在一些现代 Linux 发行版中已被标记为过时,但它仍然广泛使用。

基本用法

  • 查看所有网络连接:
    netstat -a
  • 显示更详细的信息(包括进程 ID):
    netstat -tulnp
    • -t:显示 TCP 连接。
    • -u:显示 UDP 连接。
    • -l:仅显示监听状态的连接。
    • -n:以数字形式显示地址和端口(不解析主机名)。
    • -p:显示相关进程的 PID 和名称。

示例输出

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program Name
tcp        0      0 0.0.0.0:22              0.0.0.0:               LISTEN     1234/sshd
tcp        0      0 192.168.1.100:80        0.0.0.0:               LISTEN     5678/nginx

表格解析

字段 含义
Proto 协议类型(TCP/UDP)
Recv-Q 接收队列长度
Send-Q 发送队列长度
Local Address 本地地址和端口
Foreign Address 远程地址和端口
State 连接状态(如 LISTEN、ESTABLISHED)
PID/Program Name 相关进程的 PID 和名称

使用 ss 命令

ssnetstat 的现代替代品,功能更强大且性能更好,它的用法与 netstat 类似,但提供了更多选项。

基本用法

  • 查看所有 TCP 连接:
    ss -t
  • 查看所有 UDP 连接:
    ss -u
  • 显示监听状态的连接:
    ss -l
  • 显示详细信息(包括进程):
    ss -tulnp

示例输出

State      Recv-Q Send-Q Local Address:Port             Peer Address:Port             Process
LISTEN     0      128                                           :22                       :                   users:(("sshd",pid=1234,fd 3))
LISTEN     0      100                                           :80                       :                   users:(("nginx",pid=5678,fd 4))

表格解析

字段 含义
State 连接状态(如 LISTEN、ESTABLISHED)
Recv-Q 接收队列长度
Send-Q 发送队列长度
Local Address 本地地址和端口
Peer Address 远程地址和端口
Process 相关进程的信息

使用 ip 命令

ip 是现代 Linux 系统中用于网络管理的工具,可以替代 ifconfig,它也可以用于查看网络连接。

linux 如何查看网络连接  第1张

基本用法

  • 查看所有网络连接:
    ip addr show
  • 查看路由表:
    ip route show
  • 查看特定接口的详细信息:
    ip link show dev eth0

示例输出

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic
       valid_lft 86400sec preferred_lft 86400sec
    inet6 fe80::211:22ff:fe33:4455/64 scope link
       valid_lft forever preferred_lft forever

使用 lsof 命令

lsof(List Open Files)可以显示系统中打开的文件,包括网络连接。

基本用法

  • 查看所有网络连接:
    lsof -i
  • 仅显示指定进程的网络连接:
    lsof -i -a -c nginx

示例输出

COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx     5678 root    6u  IPv4  10100      0t0  TCP :80 (LISTEN)
sshd      1234 root    3u  IPv4  10200      0t0  TCP :22 (LISTEN)

使用 nmap 命令

nmap 是一个网络扫描工具,可以用于查看本地或远程主机的开放端口。

基本用法

  • 扫描本地主机的开放端口:
    nmap localhost
  • 扫描远程主机的开放端口:
    nmap 192.168.1.1

示例输出

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-01 12:00 PDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00011s latency).
Other addresses for localhost (not scanned):::1
Not shown: 996 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http

使用 tcpdump 命令

tcpdump 是一个强大的网络抓包工具,可以实时捕获和分析网络数据包。

基本用法

  • 捕获所有网络数据包:
    tcpdump -i eth0
  • 捕获特定端口的数据包:
    tcpdump -i eth0 port 80

示例输出

12:00:00.123456 IP 192.168.1.100.12345 > 192.168.1.1.80: Flags [S], seq 1234567890, win 65535, options ...

使用 nmcli 命令

nmcli 是 NetworkManager 的命令行工具,用于管理网络连接。

基本用法

  • 查看所有网络连接:
    nmcli connection show
  • 查看特定连接的详细信息:
    nmcli connection show id "Wired connection 1"

示例输出

NAME                UUID                                  TYPE      DEVICE
Wired connection 1  a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6 802.3 Ethernet eth0

FAQs

Q1: netstatss 有什么区别?

A1: ssnetstat 的现代替代品,功能更强大且性能更好。ss 提供了更多选项,例如过滤、统计和扩展信息,而 netstat 在某些发行版中已被标记为过时。

Q2: 如何查看某个进程的网络连接?

A2: 可以使用 ssnetstat 结合 -p 选项来查看某个进程的网络连接。

ss -tulnp | grep nginx

或者使用 lsof

 
0