在 Linux 系统中,端口(Port)是网络通信的逻辑通道,范围从 0 到 65535 。其中 0--1023 被称为 "知名端口"(Well-Known Ports) ,通常由系统服务使用,需要 root 权限才能绑定。
下面列出 Linux 环境中最常见、最实用的端口及其作用,按类别分类,便于理解和运维。
🔑 一、系统与基础服务端口
| 端口 | 协议 | 服务/用途 | 说明 |
|---|---|---|---|
| 22 | TCP | SSH(Secure Shell) | 远程登录、文件传输(scp/sftp),Linux 最重要的管理端口 |
| 23 | TCP | Telnet | 明文远程登录(不安全,已淘汰) |
| 53 | TCP/UDP | DNS(Domain Name System) | 域名解析,UDP 用于查询,TCP 用于区域传输 |
| 123 | UDP | NTP(Network Time Protocol) | 时间同步(如 chrony、ntpd) |
| 161/162 | UDP | SNMP(Simple Network Management Protocol) | 网络设备监控(161 查询,162 告警) |
🌐 二、Web 与 HTTP 相关端口
| 端口 | 协议 | 服务/用途 | 说明 |
|---|---|---|---|
| 80 | TCP | HTTP | 标准 Web 服务(明文) |
| 443 | TCP | HTTPS | 加密 Web 服务(SSL/TLS) |
| 8080 | TCP | HTTP 代理 / 备用 Web 端口 | 常用于开发测试、反向代理后端(如 Tomcat、Gunicorn) |
| 8443 | TCP | HTTPS 备用端口 | 常用于管理界面(如 Jenkins、Kubernetes Dashboard) |
| 3000 | TCP | 开发服务器常用端口 | Node.js(Express)、Grafana 默认端口 |
| 5000 | TCP | Flask 开发默认端口 | Python Flask 应用常用 |
| 8000 | TCP | Django / Gunicorn / FastAPI | Python Web 框架常用部署端口 |
💡 提示:80/443 是浏览器默认端口,访问
http://example.com实际是:80,无需写端口。
🗄️ 三、数据库端口
| 端口 | 数据库 | 协议 | 说明 |
|---|---|---|---|
| 3306 | MySQL / MariaDB | TCP | 最流行的开源关系型数据库 |
| 5432 | PostgreSQL | TCP | 高级开源关系型数据库 |
| 27017 | MongoDB | TCP | NoSQL 文档数据库 |
| 6379 | Redis | TCP | 内存键值存储(缓存/消息队列) |
| 9200 | Elasticsearch | TCP | 分布式搜索与分析引擎(REST API) |
| 11211 | Memcached | TCP/UDP | 分布式内存对象缓存系统 |
📦 四、应用与中间件端口
| 端口 | 服务 | 用途 |
|---|---|---|
| 2181 | ZooKeeper | 分布式协调服务(Kafka/Hadoop 依赖) |
| 9092 | Kafka | 消息队列 broker 端口 |
| 8081 | Nexus / Artifactory | 私有 Maven/PyPI 仓库 |
| 9000 | Portainer / MinIO | Docker 可视化管理 / 对象存储 |
| 8888 | Jupyter Notebook | 数据科学交互式开发环境 |
| 25 / 465 / 587 | SMTP | 邮件发送服务(25 明文,465/587 加密) |
| 110 / 995 | POP3 | 邮件接收(110 明文,995 SSL) |
| 143 / 993 | IMAP | 邮件同步协议(143 明文,993 SSL) |
🛠️ 五、监控与可观测性端口
| 端口 | 服务 | 用途 |
|---|---|---|
| 9090 | Prometheus | 时序数据库 + 监控服务 |
| 9100 | Node Exporter | 主机指标采集器(CPU/内存/磁盘等) |
| 3000 | Grafana | 可视化仪表盘(常与 Prometheus 配合) |
| 3100 | Loki | 日志聚合系统(Grafana Labs) |
| 7946 | Docker Swarm | 容器集群管理通信 |
| 9093 | Alertmanager | Prometheus 告警路由服务 |
🔒 六、安全与防火墙相关
| 端口 | 用途 |
|---|---|
| 所有非标准端口 | 建议在生产环境中限制访问源 IP(如只允许办公网段访问 22、3306) |
| 0.0.0.0 vs 127.0.0.1 |
0.0.0.0:8000→ 所有网络接口可访问(公网暴露! )127.0.0.1:8000→ 仅本机可访问(更安全,配合 Nginx 反向代理) |
🧪 七、如何查看当前监听的端口?
1. 查看所有监听端口
bash
ss -tuln
# 或
netstat -tuln
2. 查看某端口被哪个进程占用
perl
sudo lsof -i :8000
# 或
sudo ss -tulnp | grep :8000
3. 测试端口是否可达(本地)
arduino
curl http://127.0.0.1:8000
telnet 127.0.0.1 8000
4. 测试远程端口连通性(从本地电脑)
yaml
telnet your-ecs-ip 8000
# 或
nc -zv your-ecs-ip 8000
🛡️ 八、安全建议(生产环境)
-
最小开放原则:只开放必要端口(如 Web 服务开 80/443,管理开 22)
-
限制来源 IP:
- SSH(22)只允许公司/家庭 IP
- 数据库(3306)只允许应用服务器 IP
-
避免直接暴露应用端口:
- 不要直接开放 8000、3000 给公网
- 用 Nginx/Apache 反向代理 + HTTPS
-
定期扫描端口:
vbscriptnmap -sV your-server-ip
✅ 总结:高频端口速查表
| 场景 | 推荐端口 | 是否开放公网 |
|---|---|---|
| SSH 远程管理 | 22 | ✅(限 IP) |
| Web 网站 | 80 / 443 | ✅ |
| Flask/Django 后端 | 8000 / 5000 | ❌(应通过 Nginx 代理) |
| MySQL | 3306 | ❌(仅内网) |
| Redis | 6379 | ❌(禁止公网!) |
| Prometheus | 9090 | ❌(或加认证) |
| Grafana | 3000 | ❌(或加认证/反向代理) |
💡 记住 :
"能不开就不开,能限 IP 就限 IP,能走内网就走内网"