动态端口范围怎么看
临时端口(ephemeral port)是操作系统在发起对外连接时自动分配的源端口,用完即回收。IANA 建议的动态范围是 49152 到 65535,但这只是建议,Linux 的实际范围由内核参数决定,多数发行版默认是 32768 到 60999。这意味着把 49152 以下一律当成服务端口来写策略,在 Linux 客户端上会直接拦错流量。
基本信息
| 概念 | 临时端口,也称动态端口或短命端口 |
|---|---|
| IANA 建议范围 | 49152 到 65535 |
| Linux 默认 | 32768 到 60999(由内核参数决定) |
| Windows 默认 | 49152 起,共 16384 个 |
| 影响面 | 出站连接的源端口、NAT 与连接数上限 |
典型使用场景
- 编写防火墙规则:确定哪些端口该按服务处理、哪些必须放行
- 排查连接失败:出站连接数量受限时判断是否与端口范围有关
- 容量规划:估算网关或代理能同时承载多少到同一目标的连接
- 系统加固:核对范围是否被改得过窄或保留了大量端口
- 跨平台部署:同一份策略要在 Linux 与 Windows 上都成立
三平台核对方式
| 平台 | 查看方式 | 默认值特征 |
|---|---|---|
| Linux | sysctl net.ipv4.ip_local_port_range | 多数发行版 32768 起 |
| Windows | netsh int ipv4 show dynamicport tcp | 49152 起 16384 个 |
| macOS 与 BSD | sysctl net.inet.ip.portrange.first 等 | 与 Linux 不同,需实测 |
实际核对
实际核对
# Linux:查看本机实际范围
sysctl net.ipv4.ip_local_port_range
# Linux:查看被保留不参与自动分配的端口
sysctl net.ipv4.ip_local_reserved_ports
# Windows:需在管理员命令行执行
netsh int ipv4 show dynamicport tcp
# macOS 与 BSD
sysctl net.inet.ip.portrange.first net.inet.ip.portrange.last有的发行版把默认范围调得更宽,也有的会在范围里保留一段给特定服务使用。核对时应以目标主机上的实际参数为准,而不是照抄某篇文档里的默认值。
故意把动态范围改窄会直接降低单机可建立的出站连接数,在高并发代理或压测场景下会提前触发连接失败。调整这类内核参数前,先在测试环境确认业务连接模型。
排障提示
- 抓包时看到大量高位源端口,属于正常动态分配
- 策略按 IANA 分界书写在 Linux 上不成立
- 连接数异常时把范围与保持时间一起评估
- 变更内核参数后记录数值,便于回溯对比