查看: 31|回覆: 1

完整教程:Linux怎么查看服务器开放和启用的端口

[複製鏈接]

5

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-11-26
發表於 2025-8-20 14:52:00 | 顯示全部樓層 |閲讀模式

在 Linux 系统中,可以通过以下方法查看 服务器开放和启用的端口。以下是详细的步骤和工具,适用于不同场景。


1. 使用 ss 查看开放的端口

ss 是一个现代化工具,用于显示网络连接和监听的端口。

1.1 查看正在监听的端口

运行以下命令:

bash

复制

ss -tuln
  • 参数说明
    • -t:显示 TCP 端口。
    • -u:显示 UDP 端口。
    • -l:仅显示监听的端口。
    • -n:以数字形式显示端口号(不解析为服务名称)。

示例输出

apache

复制

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:*
tcp    LISTEN     0      128    127.0.0.1:3306          0.0.0.0:*
udp    UNCONN     0      0      0.0.0.0:123             0.0.0.0:*
  • 解释
    • 0.0.0.0:22:表示所有网络接口上监听的 SSH 服务端口。
    • 127.0.0.1:3306:表示仅在本地监听的 MySQL 服务端口。

2. 使用 netstat 查看开放的端口

如果 ss 不可用,可以使用 netstat(部分系统需安装 net-tools 包)。

2.1 查看监听的端口

运行以下命令:

bash

复制

netstat -tuln
  • 参数说明
    • -t:显示 TCP 端口。
    • -u:显示 UDP 端口。
    • -l:仅显示监听的端口。
    • -n:以数字形式显示端口号。

示例输出

apache

复制

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:3306          0.0.0.0:*               LISTEN
udp        0      0 0.0.0.0:123             0.0.0.0:*

2.2 安装 net-tools(如果未安装)

在部分系统中,netstat 可能缺失,需要手动安装:

bash

复制

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

3. 使用 lsof 查看开放的端口

lsof 是一个强大的工具,可以查看与端口相关的进程。

3.1 查看监听的端口

运行以下命令:

bash

复制

sudo lsof -i -P -n | grep LISTEN
  • 参数说明
    • -i:显示网络连接。
    • -P:显示端口号,而不是服务名称。
    • -n:避免解析域名,加快显示速度。

示例输出

apache

复制

sshd      1234    root    3u  IPv4  123456      0t0  TCP *:22 (LISTEN)
mysqld    2345    mysql   10u IPv4  654321      0t0  TCP 127.0.0.1:3306 (LISTEN)

4. 使用 firewall-cmd 查看防火墙开放的端口

如果服务器使用 Firewalld 作为防火墙,可以通过以下命令查看防火墙规则。

4.1 查看已开放的端口

运行以下命令:

bash

复制

sudo firewall-cmd --list-ports
  • 示例输出

    复制

    22/tcp 80/tcp 443/tcp
    • 表示 TCP 端口 22(SSH)、80(HTTP)、443(HTTPS)已开放。

4.2 查看所有防火墙规则

运行以下命令:

bash

复制

sudo firewall-cmd --list-all
  • 示例输出

    yaml

    复制

    public (active)
    target: default
    icmp-block-inversion: no
    interfaces: eth0
    sources:
    services: ssh http https
    ports: 22/tcp 80/tcp 443/tcp
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:

4.3 开放新端口

如果需要开放额外的端口(如 8080 TCP),可以运行:

bash

复制

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

5. 使用 iptables 查看防火墙规则

如果服务器使用的是 iptables 防火墙,可以通过以下命令查看规则。

5.1 查看所有规则

运行以下命令:

bash

复制

sudo iptables -L -n -v
  • 示例输出

    apache

    复制

    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in     out     source               destination
    100  5000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0     tcp dpt:22
    50   3000 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0     tcp dpt:80

5.2 开放新端口

如果需要新增开放端口(如 8080 TCP),可以运行:

bash

复制

sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

6. 使用 nmap 扫描本地开放端口

nmap 是一个网络扫描工具,可以用于检查本地或远程服务器的开放端口。

6.1 安装 nmap

bash

复制

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

6.2 扫描本地开放端口

运行以下命令:

bash

复制

sudo nmap -sT -p- 127.0.0.1
  • -sT:扫描 TCP 端口。
  • -p-:扫描所有端口(1-65535)。

示例输出

复制

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-16 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
PORT      STATE SERVICE
22/tcp    open  ssh
80/tcp    open  http
443/tcp   open  https
3306/tcp  open  mysql

7. 总结

工具用途命令示例
ss查看监听的端口ss -tuln
netstat查看监听的端口netstat -tuln
lsof查看端口和相关进程`lsof -i -P -n
firewall-cmd查看防火墙开放的端口firewall-cmd --list-ports
iptables查看防火墙规则iptables -L -n -v
nmap扫描本地开放端口nmap -sT -p- 127.0.0.1

通过以上方法,您可以轻松检查 Linux 服务器上开放和启用的端口,并根据需要调整防火墙规则或开放新端口。

---

技能提升

如果你觉得本文有帮助,以下资源可以帮你深入学习:

  1. 趣谈Linux操作系统
    ‍ 刘超 | 轻松理解Linux操作系统核心原理
  2. Linux性能优化实战
    ‍ 倪朋飞 | 别再让Linux性能问题成为你的绊脚石
  3. Nginx核心知识100讲
    ‍ 陶辉 | 全面掌握Nginx核心技术


来源:https://www.cnblogs.com/ljbguanli/p/19048738
回覆

使用道具 舉報

0

主題

720

回帖

4441

積分

琼殿精英

金币
3721
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-5-10 01:52:34 | 顯示全部樓層
哇,写的太详细了!感谢楼主的无私分享~

这几种方法都非常实用,尤其是ss和netstat,我现在天天用。之前一直记不住参数,看完这个总结表格瞬间清晰了 [strong]收藏了[/strong]!

补充一个小经验:如果想同时看到端口对应的进程名称,可以用
  1. sudo ss -tulnp
複製代碼
多加个p参数,这样能看到具体是哪个进程在监听端口,排查问题的时候特别方便。

另外提醒一下新手同学,如果看到某些端口没开放,先别急着怀疑服务没启动,可能是防火墙没放行哦~这时候就可以用楼主的firewall-cmd或者iptables命令检查一下。

总之非常干货,赞一个![emotion]点赞[/emotion]
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部