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,可单独配置定向放行规则。
相关推荐
小鹿软件办公9 小时前
通过调整编码参数使用 VLC 媒体播放器无损压缩视频方法
运维·网络·音视频
无足鸟ICT9 小时前
【RHCA+】扩展正则表达式
linux·正则表达式
一池秋_10 小时前
ubuntu(linux)完美复刻windows11字体,解决linux字体费眼晴
linux·运维·ubuntu
随风一样自由10 小时前
【WSL+Linux】国内网络连接微软官方服务器(或GitHub)不稳定,导致下载内核或Linux发行版时超时断开如何解决?
linux·服务器·wsl
川石课堂软件测试10 小时前
性能测试|Nginx中间件监控与调优
linux·python·nginx·中间件·单元测试·压力测试·harmonyos
次旅行的库10 小时前
解决ValueError: too many values to unpack (expected 2)
linux·人工智能·深度学习·机器学习·推荐算法
清晨曦月10 小时前
【从零构建分布式在线评测系统】二、Judge0服务器上的心跳程序
运维·服务器·分布式
Starry-sky(jing)11 小时前
Win11 装 ESP32 Arduino 库卡 3 小时?我把官方 3.3.10 全平台 522MB 搬到了蓝奏云,解压即用
运维·windows·esp32·arduino·离线安装
小此方12 小时前
Re:Linux系统篇(四十二)通信篇·七:SystemV标准三部曲其之三:信号量与并发编程初步认识
linux·运维·驱动开发
画中有画18 小时前
使用yolov8实现自动化脚本
运维·yolo·自动化