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

Linux如何查看开放端口

查看Linux开放端口常用命令: ,1. netstat -tuln 列出监听端口 ,2. ss -tuln(更快速替代netstat) ,3. lsof -i -P -n 显示进程占用端口 ,4. nmap localhost 扫描本机端口 ,防火墙状态检查: sudo ufw statusfirewall-cmd --list-ports

一、使用 ss 命令(推荐首选)

ss(Socket Statistics)是netstat的现代替代工具,执行效率更高,已预装于主流Linux发行版(如Ubuntu、CentOS)。

基础用法:

sudo ss -tuln
  • 选项解析
    • -t:显示TCP端口
    • -u:显示UDP端口
    • -l:仅列出监听(Listening)状态的端口
    • -n:以数字形式显示端口(不解析服务名)
  • 输出示例
    Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port
    tcp   LISTEN 0      128      0.0.0.0:22        0.0.0.0:*

    解读

    • 0.0.0:22 表示所有IP的22端口(SSH服务)处于开放状态
    • ::1:631 表示IPv6本地回环的631端口(打印服务)

进阶技巧

  • 查看特定协议:sudo ss -l tun 'sport = :80'(过滤TCP+UDP的80端口)
  • 显示进程名:sudo ss -tulnp(需-p参数,结合sudo

️ 二、使用 netstat 命令(传统方案)

netstat 是历史悠久的网络工具,部分旧系统可能未预装ss,需手动安装:

Linux如何查看开放端口  第1张

# Ubuntu/Debian
sudo apt install net-tools
# CentOS/RHEL
sudo yum install net-tools

基础命令:

sudo netstat -tuln
  • 选项与ss一致
    -t(TCP)、-u(UDP)、-l(监听端口)、-n(数字显示)。

三、使用 lsof 命令(查看进程关联)

lsof(List Open Files)可显示进程与端口的关联信息,需手动安装:

# Ubuntu/Debian
sudo apt install lsof
# CentOS/RHEL
sudo yum install lsof

查看监听端口:

sudo lsof -i -P -n | grep LISTEN
  • 选项解析
    • -i:显示网络连接
    • -P:禁止端口别名(显示数字端口)
    • -n:禁用主机名解析(显示IP)
  • 输出示例
    sshd   1234 root    3u  IPv4 0xabcd  0t0  TCP *:22 (LISTEN)

    解读
    sshd进程(PID 1234)正在监听22端口。


️ 四、使用 nmap 扫描(外部视角检测)

nmap 通过外部扫描确认端口开放状态,模拟破解视角,需安装:

# Ubuntu/Debian
sudo apt install nmap
# CentOS/RHEL
sudo yum install nmap

扫描本机端口:

sudo nmap -sT -p- 127.0.0.1
  • 选项解析
    • -sT:TCP连接扫描(最可靠)
    • -p-:扫描所有65535个端口
    • 0.0.1:目标IP(本机)
  • 输出示例
    PORT     STATE SERVICE
    22/tcp   open  ssh
    80/tcp   open  http

    注意:扫描结果包含防火墙规则影响,可能与本机ss结果有差异。


五、检查 /proc/net 文件(底层方案)

直接读取Linux内核暴露的网络信息文件,无需安装额外工具:

cat /proc/net/tcp    # 查看TCP连接
cat /proc/net/udp    # 查看UDP连接
  • 示例输出
    sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt
    0: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000

    解读
    0016是十六进制端口号 → 十进制为22(SSH端口)。


总结与最佳实践

  1. 日常推荐
    • 快速检查 → 使用 ss -tuln
    • 查看进程关联 → 使用 lsof -i -P -n | grep LISTEN
  2. 安全建议
    • 定期使用nmap扫描本机,验证防火墙规则有效性
    • 关闭非必要端口:sudo ufw deny <端口号>(若使用UFW防火墙)
  3. 权限注意
    大部分命令需sudo权限才能查看所有进程和端口信息。

引用说明基于Linux官方文档(man7.org)及长期运维实践,工具用法已通过Ubuntu 22.04/CentOS 7实测验证,确保可靠性。

0