Ubuntu 系统中端口查询与开放指南

一、查询端口命令(最常用的 4 条)

1. 查看所有监听的 TCP/UDP 端口(推荐)

|----------------------------------------------------------------|
| bash # 简洁版,只看监听状态 ss -tuln # 带进程信息(知道哪个程序占用了端口) sudo ss -tulnp |

  • -t:TCP 端口
  • -u:UDP 端口
  • -l:只显示正在监听的端口
  • -n:不解析域名 / 服务名,直接显示端口号
  • -p:显示占用端口的进程 PID 和名称

2. 查看特定端口是否被占用

|----------------------------------------------------------------------------|
| bash # 比如查看 8008 端口 sudo lsof -i:8008 # 或 sudo netstat -tulpn | grep 8008 |

3. 查看所有网络连接(含已建立的连接)

|-------------------------|
| bash sudo netstat -antp |

4. 查看防火墙放行的端口

|----------------------|
| bash sudo ufw status |

5. 一键罗列服务器所有已开放端口(全新实用命令)

|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 一键查看本机所有已监听、对外开放的端口(最全面) sudo ss -tulpn | grep LISTEN # 极简一键命令:只输出所有开放端口号,干净无冗余 sudo ss -tuln | awk '{print $5}' | cut -d: -f2 | sort -n | uniq |

  • 命令作用 :自动罗列当前服务器 所有正在开放、监听运行 的端口
  • 适用场景:快速排查端口是否开启、是否监听成功、是否存在端口占用冲突
  • 结果说明:有输出=端口正常开放监听;无输出=端口未启动/未开放

|----------------------|
| bash sudo ufw status |

二、开放端口命令(ufw 防火墙)

Ubuntu 默认用 ufw 防火墙,以下是常用命令,包含单端口、连续端口、指定IP端口放行等场景。

1. 开放单个端口(TCP 最常用)

|---------------------------------------------------------------------------------------------------|
| bash # 放行 8008 端口的 TCP 流量 sudo ufw allow 8008/tcp # 放行 UDP 端口(如 5000/udp) sudo ufw allow 5000/udp |

2. 放行一段连续端口范围(新增常用端口段)

|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 放行 8001-8010 全部连续 TCP 端口(项目常用端口段) sudo ufw allow 8001:8010/tcp # 通用模板:放行指定区间端口 sudo ufw allow 起始端口:结束端口/tcp # 放行 39000-40000 之间的所有 TCP 端口 sudo ufw allow 39000:40000/tcp |

3. 允许指定 IP 访问端口(更安全)

|--------------------------------------------------------------------------------------------------|
| bash # 只允许 192.168.0.100 访问 8008 端口 sudo ufw allow from 192.168.0.100 to any port 8008 proto tcp |

4. 关闭(删除)已开放的端口/端口段 & 一键清理重复端口

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 删除单个端口规则(8008/tcp) sudo ufw delete allow 8008/tcp # 删除连续端口段规则(8001-8010/tcp) sudo ufw delete allow 8001:8010/tcp # ===================== 一键清理重复端口规则(Ubuntu原生 100%可用)===================== # 原理:先清空所有8001-8010规则,再重新添加唯一纯净规则,彻底杜绝重复 sudo ufw delete allow 8001:8010/tcp sudo ufw delete allow in proto tcp from 0.0.0.0/0 to any port 8001:8010 # 重设【纯IPv4、无重复、无IPv6干扰】端口段(最稳定) sudo ufw allow in proto tcp from 0.0.0.0/0 to any port 8001:8010 sudo ufw reload # 查看最终干净的规则 sudo ufw status |

  • 常见问题说明 :UFW 官方没有 ufw clean 命令(该命令无效、会报错),所有重复规则只能通过「清空重设」方式清理
  • 重复规则危害:多次放行同一端口,会产生多条重复规则,不影响功能,但规则杂乱、排查困难
  • 纯净规则优势:重设后的8001-8010端口段,仅开放IPv4,状态显示清晰、无冗余规则、无IPv6迷惑展示

5. 重载 / 重启防火墙使规则生效

|----------------------|
| bash sudo ufw reload |

6. 查看防火墙状态

|------------------------------|
| bash sudo ufw status verbose |

三、额外补充(如果你用的是 iptables)

部分 Ubuntu 版本或自定义环境用 iptables,适配单端口、连续端口放行命令如下:

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 放行单个端口 8008/tcp sudo iptables -A INPUT -p tcp --dport 8008 -j ACCEPT # 放行连续端口 8001-8010/tcp sudo iptables -A INPUT -p tcp --dport 8001:8010 -j ACCEPT # 查看规则 sudo iptables -L -n # 保存规则(防止重启失效) sudo iptables-save > /etc/iptables/rules.v4 |

四、实用场景组合命令

场景 1:检查并放行 8008 端口

|--------------------------------------------------------------------------------------------------------------------------------------------|
| bash # 1. 检查端口是否被占用 sudo lsof -i:8008 # 2. 放行端口 sudo ufw allow 8008/tcp # 3. 重载规则 sudo ufw reload # 4. 验证是否生效 sudo ufw status | grep 8008 |

场景 2:批量放行 8001-8010 端口段(项目专用)

|--------------------------------------------------------------------------------------------------------------------------------------|
| bash # 1. 批量放行8001-8010所有TCP端口 sudo ufw allow 8001:8010/tcp # 2. 重载防火墙生效 sudo ufw reload # 3. 查看端口段放行状态 sudo ufw status | grep 8001 |

场景 3:快速排查端口访问问题

|------------------------------------------------------------------------------------------------------------------|
| bash # 1. 本地测试端口是否能连通(以8008为例) curl http://127.0.0.1:8008 # 2. 从外部机器测试端口连通性(本地电脑CMD执行) telnet 192.168.0.197 8008 |

五、关键注意事项

  • 所有端口放行默认适配TCP 协议(网页、项目接口通用),UDP端口需单独配置
  • 连续端口段 8001-8010 放行后,区间内所有端口均可外网访问,适合多模块项目部署
  • 修改防火墙规则后,必须执行 sudo ufw reload 才能生效
  • 宝塔防火墙与系统ufw防火墙需同步放行端口,避免双向拦截导致访问失败
  • 查询端口占用无结果,代表端口空闲,可正常启动项目服务
  • 【重要误区:端口段显示IPv6不等于未开启IPv4】
    Ubuntu UFW 放行连续端口段时,默认同时开放 IPv4 + IPv6,终端仅展示 IPv6 条目是系统显示逻辑,不代表 IPv4 未生效,IPv4 地址可正常访问端口;若需仅保留 IPv4 禁用 IPv6,可单独配置定向放行规则。
相关推荐
反转180度8 小时前
Qt 6 + C++17 实现 SFTP 批量部署:工业设备运维工具实战解析
运维·c++·qt
liuqs3329 小时前
nat123安卓和nat123全端口选型指南,映射工具怎么挑
网络·笔记
xian_wwq9 小时前
【学习笔记】光伏“四可”装置纵密模块--配置方法和原理
笔记·学习
雨辰AI9 小时前
RAG 知识库搭建:基于人大金仓构建信创运维问答机器人|全栈国产化落地完整版
运维·ai·机器人·ai编程
-今昭-9 小时前
Ansible
linux·运维·ansible
星野川崎20610 小时前
电商多店运维:云机长期挂机频繁掉线、账号无故风控原因剖析与解决方案
大数据·运维·云计算·电商
mounter62511 小时前
MACsec 全景解析:从技术演进、核心架构到 DPU 硬件卸载与 K8s 大规模调度实战
linux·kubernetes·linux kernel·kernel·macsec
IT邦德12 小时前
Dify1.6基于ubuntu系统的部署实战
linux·运维·ubuntu
日拱一卒的小田12 小时前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
蓝速科技12 小时前
蓝速科技会议电子门牌规模化部署与运维成本实测
运维·科技