端口号参考表
按用途分组的常见服务默认端口,标清 TCP / UDP 和是否容易撞端口。公共 DNS 服务器地址单独列在最后,那是 IP 不是端口,别混着填。
显示 74 / 74 条|全部 74 条里,有 26 条属于常见冲突项
端口清单
「常见冲突」标的是这个端口经常被多个程序抢,装完起不来时先怀疑这些;点最右边的按钮复制端口号。
| 端口 | 协议 | 服务 | 用途说明 | 常见冲突 | 复制 |
|---|---|---|---|---|---|
| 80 | TCP | HTTP | 网页服务的默认端口,浏览器输入裸域名时默认走它。 Web 与代理 | 是 | |
| 443 | TCP | HTTPS | 带 TLS 的网页服务,现在所有正式站点基本都在它上面。 Web 与代理 | 是 | |
| 8080 | TCP | HTTP 备用 | Tomcat、Jenkins、各种反向代理的备用 HTTP 端口,本地开发也常占用。 Web 与代理 | 是 | |
| 8443 | TCP | HTTPS 备用 | 备用 HTTPS 端口,常见于 Tomcat 和网关管理界面。 Web 与代理 | 是 | |
| 3128 | TCP | Squid 代理 | Squid 等 HTTP 正向代理的默认端口。 Web 与代理 | 否 | |
| 1080 | TCP/UDP | SOCKS 代理 | SOCKS 代理常用端口,TCP 走连接、UDP 走转发。 Web 与代理 | 否 | |
| 22 | TCP | SSH / SFTP | 加密远程登录和文件传输,服务器必开,也是爆破攻击的重灾区。 远程与传输 | 是 | |
| 23 | TCP | Telnet | 明文远程登录,密码在网络里裸奔,除了网络设备调试不该再用。 远程与传输 | 是 | |
| 3389 | TCP | RDP | Windows 远程桌面,暴露到公网是勒索病毒最爱的入口之一。 远程与传输 | 是 | |
| 5900 | TCP | VNC | 跨平台远程桌面,老版本默认不带认证或认证很弱。 远程与传输 | 否 | |
| 21 | TCP | FTP 控制 | FTP 的命令通道,凭据和文件内容都是明文。 远程与传输 | 否 | |
| 20 | TCP | FTP 数据 | FTP 主动模式下的数据通道,被动模式改用随机高位端口。 远程与传输 | 否 | |
| 69 | UDP | TFTP | 极简文件传输,无认证,常用于刷固件和 PXE 引导。 远程与传输 | 否 | |
| 873 | TCP | rsync | rsync 守护进程端口,用来做增量同步和备份。 远程与传输 | 否 | |
| 25 | TCP | SMTP | 服务器之间投递邮件用的端口,家宽出口通常被封。 邮件 | 是 | |
| 110 | TCP | POP3 | 老式收信协议,默认把邮件下载到本地再从服务器删除。 邮件 | 否 | |
| 143 | TCP | IMAP | 主流收信协议,邮件留在服务器上多端同步。 邮件 | 否 | |
| 465 | TCP | SMTPS | 一上来就走 TLS 的邮件提交端口(隐式 TLS)。 邮件 | 否 | |
| 587 | TCP | SMTP 提交 | 客户端提交邮件用的端口,先明文再 STARTTLS 升级,是推荐用法。 邮件 | 否 | |
| 993 | TCP | IMAPS | IMAP over TLS,收信首选。 邮件 | 否 | |
| 995 | TCP | POP3S | POP3 over TLS。 邮件 | 否 | |
| 3306 | TCP | MySQL / MariaDB | 最常见的开源关系型数据库,别让它直接对公网监听。 数据库与缓存 | 是 | |
| 5432 | TCP | PostgreSQL | PostgreSQL 默认端口,配 pg_hba.conf 限制来源比改端口有用。 数据库与缓存 | 是 | |
| 1433 | TCP | SQL Server | SQL Server 默认实例端口,命名实例会走动态端口。 数据库与缓存 | 是 | |
| 1521 | TCP | Oracle | Oracle 监听器端口,多实例时按服务名区分。 数据库与缓存 | 是 | |
| 27017 | TCP | MongoDB | MongoDB 默认端口,历史上大量实例无认证直接暴露,是泄露事故常客。 数据库与缓存 | 是 | |
| 27018 | TCP | MongoDB 分片 | 分片集群里 mongos 和 shard 之间用的另一个默认端口。 数据库与缓存 | 否 | |
| 6379 | TCP | Redis | Redis 默认端口,无密码且开着危险命令时等于把 shell 送人。 数据库与缓存 | 是 | |
| 11211 | TCP/UDP | Memcached | 内存缓存,默认无认证,还长期被用来放大 UDP 反射攻击。 数据库与缓存 | 是 | |
| 9200 | TCP | Elasticsearch HTTP | ES 的 REST 接口,早期版本默认无认证,暴露公网会被直接拖数据。 数据库与缓存 | 是 | |
| 9300 | TCP | Elasticsearch 节点间 | 集群内部节点通信,只应开在可信内网。 数据库与缓存 | 否 | |
| 9042 | TCP | Cassandra CQL | Cassandra 的原生协议端口,客户端默认连它。 数据库与缓存 | 否 | |
| 7000 | TCP | Cassandra 节点间 | Cassandra 集群内部通信;这个端口也常被别的文件服务占用,容易撞。 数据库与缓存 | 是 | |
| 7001 | TCP | Cassandra JMX / WebLogic | Cassandra 用来开 JMX 监控,同时也是 WebLogic 控制台的默认端口,两件事别混。 数据库与缓存 | 是 | |
| 2181 | TCP | ZooKeeper | ZooKeeper 客户端端口,Kafka 等一批中间件靠它做协调。 数据库与缓存 | 否 | |
| 5672 | TCP | AMQP / RabbitMQ | RabbitMQ 的 AMQP 0-9-1 端口,业务消息走它。 数据库与缓存 | 否 | |
| 15672 | TCP | RabbitMQ 管理界面 | RabbitMQ 的 Web 管理控制台,默认凭据一定要改。 数据库与缓存 | 否 | |
| 9092 | TCP | Kafka | Kafka broker 的默认端口,客户端和节点都连它。 数据库与缓存 | 是 | |
| 8086 | TCP | InfluxDB | InfluxDB 的 HTTP API 端口。 数据库与缓存 | 否 | |
| 5984 | TCP | CouchDB | CouchDB 的 HTTP API 端口,自带一个管理界面。 数据库与缓存 | 否 | |
| 2379 | TCP | etcd 客户端 | etcd 的客户端端口,Kubernetes 的全部状态都存在这里,泄露等于交出集群。 数据库与缓存 | 否 | |
| 2380 | TCP | etcd 节点间 | etcd 集群成员之间同步数据用的端口。 数据库与缓存 | 否 | |
| 1883 | TCP | MQTT | 物联网最常用的消息协议端口,默认不加密。 消息与流 | 否 | |
| 8883 | TCP | MQTT over TLS | 加密版 MQTT,公网设备应该走它。 消息与流 | 否 | |
| 61616 | TCP | ActiveMQ | ActiveMQ 的 OpenWire 协议端口。 消息与流 | 否 | |
| 445 | TCP | SMB | Windows 文件共享,永恒之蓝和大量勒索病毒都从它进来,公网绝不能开。 文件与共享 | 是 | |
| 139 | TCP | NetBIOS 会话 | 老式 Windows 共享的会话服务,和 445 功能重叠。 文件与共享 | 否 | |
| 137 | UDP | NetBIOS 名称服务 | 局域网里做名称解析,只在老式网段还有用。 文件与共享 | 否 | |
| 138 | UDP | NetBIOS 数据报 | NetBIOS 的广播数据报服务。 文件与共享 | 否 | |
| 2049 | TCP/UDP | NFS | 网络文件系统,默认按 IP 或 UID 信任,配置不当等于匿名共享。 文件与共享 | 否 | |
| 9090 | TCP | Prometheus | Prometheus 的 Web 界面和查询接口端口。 监控与观测 | 否 | |
| 3000 | TCP | Grafana | Grafana 默认端口,同时也是大量 Node 前端脚手架的默认端口,本地常冲突。 监控与观测 | 是 | |
| 9093 | TCP | Alertmanager | Prometheus 生态里负责去重和分发的告警组件。 监控与观测 | 否 | |
| 8123 | TCP | ClickHouse HTTP | ClickHouse 的 HTTP 查询接口,原生 TCP 协议走 9000。 监控与观测 | 否 | |
| 8088 | TCP | Hadoop YARN | YARN 资源管理器的 Web 界面端口。 监控与观测 | 否 | |
| 2375 | TCP | Docker API(明文) | 未加密的 Docker 守护进程接口,谁能连上谁就能以 root 起容器挂载主机目录。 容器与编排 | 是 | |
| 2376 | TCP | Docker API(TLS) | 加密版 Docker API,仍要配合证书双向认证才安全。 容器与编排 | 否 | |
| 6443 | TCP | Kubernetes API | K8s API Server,集群的唯一入口,必须配好 RBAC 和证书。 容器与编排 | 否 | |
| 10250 | TCP | kubelet API | 节点上 kubelet 的接口,能读日志、执行命令,暴露到公网极危险。 容器与编排 | 否 | |
| 10255 | TCP | kubelet 只读端口 | kubelet 的只读接口,无认证即可读节点信息,新版本已默认关闭。 容器与编排 | 否 | |
| 10257 | TCP | kube-controller-manager | 控制器管理器的指标与健康检查端点。 容器与编排 | 否 | |
| 10259 | TCP | kube-scheduler | 调度器的指标与健康检查端点。 容器与编排 | 否 | |
| 8500 | TCP | Consul HTTP | Consul 的 HTTP API 和控制台,也提供 DNS 服务。 容器与编排 | 否 | |
| 8600 | TCP/UDP | Consul DNS | Consul 内置的 DNS 解析端口,做服务发现用。 容器与编排 | 否 | |
| 4646 | TCP | Nomad HTTP | Nomad 的 HTTP API 和界面。 容器与编排 | 否 | |
| 4647 | TCP | Nomad RPC | Nomad 节点间的 RPC 通信。 容器与编排 | 否 | |
| 4648 | TCP | Nomad Serf | Nomad 用于集群成员发现和健康检查的 gossip 端口。 容器与编排 | 否 | |
| 3000 | TCP | 前端开发服务器 | Next.js、NestJS 等脚手架的默认端口,和 Grafana 默认端口相同,本地两个都跑就会撞。 开发与构建 | 是 | |
| 4200 | TCP | Angular CLI | Angular 开发服务器默认端口。 开发与构建 | 否 | |
| 5000 | TCP | Flask / Registry | Flask 开发服务器默认端口,也是老版本 Docker Registry 的端口。 开发与构建 | 是 | |
| 5173 | TCP | Vite | Vite 开发服务器默认端口,取这个名字是为了避开上面几个常被占用的端口。 开发与构建 | 否 | |
| 8000 | TCP | Python / Django | Python 自带的 http.server 和 Django 开发服务器默认端口。 开发与构建 | 是 | |
| 8081 | TCP | Nexus / 备用 HTTP | Nexus 仓库、Metro 打包器等都用它,也常被拿来当第二套 Web 服务。 开发与构建 | 否 | |
| 9000 | TCP | PHP-FPM / MinIO / Portainer | PHP-FPM 默认端口,也是 MinIO、Portainer 的界面端口,还和 ClickHouse 原生协议撞。 开发与构建 | 是 |
公共 DNS 服务器地址
下面这些是解析服务器的 IP 地址,不是端口。填在系统或路由器的 DNS 设置里,用途是换一个解析器。
| 服务商 | IP 地址 | DoH | DoT | 说明 |
|---|---|---|---|---|
| Google Public DNS | 支持(443) | 支持(853) | 全球可用,历史最久,支持 DoH 和 DoT。 | |
| Cloudflare | 支持(443) | 支持(853) | 主打速度和隐私承诺,不记录查询日志,支持 DoH 和 DoT。 | |
| Quad9 | 支持(443) | 支持(853) | 带恶意域名拦截,企业环境常用。 | |
| OpenDNS | 支持(443) | 支持(853) | 老牌服务,带家长控制和钓鱼拦截选项。 | |
| 114 DNS(国内) | 不支持 | 不支持 | 国内常见的公共解析,其中 114.114.114.110 等还有拦截版。 | |
| 阿里 DNS | 支持(443) | 支持(853) | 国内解析快,对国内站点友好。 | |
| 腾讯 DNSPod | 支持(443) | 不支持 | 国内常用,域名解析线路覆盖较好。 | |
| 百度 DNS | 不支持 | 不支持 | 国内公共解析,带基础的安全拦截。 |
普通 DNS 走 UDP 53 端口,明文可被篡改和窥探;DoT 把查询包在 TLS 里,固定走 853 端口;DoH 把查询伪装成普通的 HTTPS 请求,走 443 端口,因此在只放行 443 的网络里也能用。三者填的都是 IP 或域名,不是端口,端口只是它们各自的传输通道。
使用说明
表里列的是各服务的默认端口,也就是「照官方文档装完不动配置」时的样子。默认端口的价值在于排查方便——看到 3306 就知道多半是 MySQL、看到 6379 多半是 Redis;但生产环境里把它们照搬到公网是很危险的。改默认端口只能降低被自动扫描撞上的概率,全端口扫描几分钟就能扫完,改端口改变的只是「被顺手扫到」和「被认真扫到」的区别。真正决定安全的是认证、授权和网络边界:服务有没有设强密码、有没有做最小权限、安全组有没有只放行必要来源。
有几个端口值得单独点名。6379 的 Redis、27017 的 MongoDB、9200 的 Elasticsearch,在很多部署里默认不设认证或者认证很弱,只要监听地址是 0.0.0.0 且安全组放行,就等于把数据直接给了公网:Redis 未授权可以写文件,接着写 SSH 公钥或计划任务拿到 shell;MongoDB 和 Elasticsearch 未授权会被整库拖走或加密勒索,这类事故几乎每年都在发生。2375 更特殊,它是未加密的 Docker API,连上就能起一个挂载了主机根目录的容器,等于跳过所有认证直接接管主机;需要远程操作 Docker 时应该用 2376 配双向证书,而且仍然只开在内网。相比之下,把数据库和缓存绑到 127.0.0.1、只让本机的应用连,比改端口有用得多。
连不上时按四层排查最省时间:第一层看服务有没有真的在监听,用 ss -lntp 看地址和端口;第二层看监听地址是不是 127.0.0.1,如果只监听本机,外部怎么放行都没用;第三层看本机防火墙(firewalld、ufw、iptables);第四层看云主机的安全组和网络 ACL。四层都通了还不通,再考虑运营商封端口,家宽的 25、80、443 经常被封。另外绑定 1024 以下的端口需要 root 或 CAP_NET_BIND_SERVICE 能力,容器里还被内核参数限制,所以开发服务不要直接绑 80,让反向代理去接低端口更省事。
端口冲突大多出在开发环境。Grafana 和大量 Node 脚手架都用 3000,Python 自带的 http.server 和旧版 Docker Registry 都用 5000,PHP-FPM、MinIO、ClickHouse 抢 9000,Hadoop YARN 和别的服务又都爱用 8088。给项目留一个环境变量覆盖端口的口子,比事后挨个改配置文件快得多;要给本地服务挑一个不容易撞的号,可以用随机端口生成避开这份表里的默认值。部署到云上之前,先确认安全组只放行了真正要对外的那几个端口,用子网划分计算把内网段规划清楚,再照着Docker 命令速查把容器的端口映射写明白。
最后说清公共 DNS 那一栏为什么要和端口分开。8.8.8.8、1.1.1.1 这些是解析服务器的 IP,填在系统或路由器的 DNS 设置里表示「用谁家来解析」;而端口是查 DNS 时用的传输通道:最基础的查询走 UDP 53,响应过长或做区域传送时切到 TCP 53,DoT 把查询包在 TLS 里固定走 853,DoH 把查询伪装成普通 HTTPS 请求走 443。三者的区别是「怎么问」:普通 DNS 明文可被窥探和篡改,DoT 和 DoH 都做了加密,DoH 因为走 443,在只放行 443 的网络里也能用。把 IP 和端口写成一栏,就等于把「找谁问」和「怎么问」混成了一件事。
常见问题
把默认端口改掉,能提高安全性吗?
只能降低被自动扫描撞上的概率,不算安全措施。全端口扫描几分钟就能跑完,改端口只是把「顺手被扫到」变成「被认真扫到」,攻击者一旦连上,该没密码还是没密码。真正起作用的是认证、授权和网络边界:绑内网地址、安全组只放行必要来源、给服务设强密码和最小权限。改端口可以做,但要当成「减少噪音」,不是「上了道锁」。
为什么说 6379、27017、9200、2375 这几个端口最危险?
因为对应的服务在很多部署里默认不设认证或认证很弱。Redis 未授权时可以写文件,进而写 SSH 公钥或计划任务拿到 shell;MongoDB 和 Elasticsearch 未授权会被整库拖走或加密勒索;2375 是未加密的 Docker API,连上就能起一个挂载主机根目录的容器,等于直接接管主机。它们的共同点是:只要监听在 0.0.0.0 且安全组放行,就等于把数据和控制权交给公网。
监听 127.0.0.1 和监听 0.0.0.0 有什么区别?
127.0.0.1 只接受本机发起的连接,外网和同内网的其他机器都连不上;0.0.0.0 表示在所有网卡上监听,能不能被连到就只剩防火墙和安全组这一道防线了。数据库、缓存、管理界面这类没有跨机需求的服务,一律绑 127.0.0.1 或具体的内网地址,这一步比改端口有用得多。
两个服务端口撞了,报 address already in use,怎么查?
先用 ss -lntp(或 lsof -i :端口)看是谁占着,再决定改哪一边。脚手架默认端口尤其容易撞:Grafana 和大量 Node 项目都用 3000,Python 自带的 http.server 和旧版 Docker Registry 都用 5000,PHP-FPM、MinIO、ClickHouse 抢 9000。所以项目一开始就把端口写成环境变量,留出覆盖的口子,比事后挨个改配置省事。
绑定 1024 以下的端口为什么直接报权限错误?
因为 0 到 1023 是特权端口,Linux 上绑定它需要 root 或 CAP_NET_BIND_SERVICE 能力,容器里还常被内核参数 net.ipv4.ip_unprivileged_port_start 拦着。用开发服务器直接绑 80 报错是正常的,标准做法是让服务跑在高位端口,前面放一个反向代理接 80 和 443,而不是给服务加 root。
端口开着,外面就是连不上,该按什么顺序排查?
按四层查:服务有没有真的在监听(ss -lntp 看地址和端口);监听地址是不是 127.0.0.1(只监听本机时外部必然连不上);本机防火墙(firewalld、ufw、iptables)有没有放行;云主机的安全组和网络 ACL 有没有放行。如果四层都通了还不行,再考虑运营商封端口——家宽的 25、80、443 经常被封,公司网络的出口也可能做了限制。
表里协议写成 TCP/UDP 是什么意思?
表示这个服务在两种传输层协议上都可能监听。DNS 最典型:普通查询走 UDP 53,响应过长或做区域传送时切到 TCP 53;NFS 和 Memcached 也是两种都支持。排查时如果只放行了 TCP,就容易出现「部分请求正常、部分请求卡住」的怪现象,这时候记得把 UDP 也放行。
公共 DNS 那一栏为什么没有端口号?
因为 8.8.8.8、1.1.1.1 这些是解析服务器的 IP 地址,不是端口。你在系统或路由器里填的是「用谁家来解析」;端口是查 DNS 时的传输通道:普通查询走 53,DoT 走 853,DoH 走 443。把 IP 和端口写在一栏里,等于把「找谁问」和「怎么问」混成一件事了。