你所不知道的端口耗尽(二)

问题背景

在你所不知道的端口耗尽(一)中,介绍了经典的客户端端口耗尽问题,在本篇文章中会介绍另外一种端口耗尽问题,即SNAT端口耗尽

什么是SNAT

SNAT是源网络地址转换(Source Network Address Translation)的缩写,它是网络地址转换(NAT)的一种形式。SNAT主要用于将内部网络的私有IP地址转换为外部网络可见的公共IP地址。在互联网通信中,源IP地址通常是内部设备的私有IP地址,它不会被互联网上的其他设备识别。通过使用SNAT,网关设备可以将这些私有地址转换为一个或多个已注册的公共IP地址,使得内部设备能够与外部网络进行通信而无需直接暴露它们的私有IP地址。

端口是有限的

因为IPv4地址的不足,NAT技术非常普遍,它也加剧了端口号的需求。每个IPv4地址最多可以拥有65535个端口(0-65535,但0-1023通常保留给特定用途,所以实际可用端口更少)。因为每个NAT映射都需要一个独立的端口,所以在有大量内部设备和外部通信时,可能会发生端口耗尽事件。当所有端口号都被占用时,新的网络连接将无法建立,这会导致网络服务不可用或性能下降。

拓展阅读 1 - Azure的出站连接方法

  • 使用Load Balancer的前端IP地址建立出站连接,每个IP地址可提供64K的端口

  • 将 NAT 网关关联到子网,NAT 网关具有高度的可扩展性和可靠性,没有 SNAT 端口耗尽的问题。

  • 将公共 IP 分配到虚拟机,未使用 SNAT

拓展阅读 2 - SNAT port可以同时用于TCP和UDP

SNAT(源地址转换,或称为源NAT)通常工作在网络层上,因此它是独立于传输层协议的。这意味着SNAT既可以用于TCP(传输控制协议)也可以用于UDP(用户数据报协议),甚至其他传输层协议。

拓展阅读 3 - 如果目标端口不同,则可以将一个 TCP SNAT 端口用于到同一目标 IP 的多个连接

在TCP连接中,一个连接由四个元组来唯一确定:源IP地址、源端口号、目标IP地址和目标端口号。只要这四个元素中的任意一个不同,就可以创建一个新的唯一连接。因此,如果内部设备都使用同一个外部IP地址(SNAT后的地址)连接到同一个目标IP的不同目标端口,它们可以共享同一个源端口号。

如何解决

  • 新增IP
  • 考虑用NAT Gateway
  • 修改应用程序以重复使用连接
  • 修改应用程序以使用连接池

👇欢迎扫码关注我的公众号👇

相关推荐
2501_916008899 小时前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
zx11545011 小时前
前后端开发必备的计算机网络知识
计算机网络
砚凝霜1 天前
软考网络工程师|第 1 章 计算机网络基础 完整备考笔记
网络·笔记·计算机网络
TechEdu2026061 天前
[计算机科学]计算机网络原理
计算机网络·计算机科学
谙弆悕博士2 天前
系统集成项目管理工程师教程(第3版)笔记——第2章:信息技术发展
笔记·计算机网络·信息安全·学习方法·业界资讯·软考·系统分析师
ttod_qzstudio2 天前
【软考备考】计算机网络详解:OSI/TCP-IP 分层 + IP 子网划分,一篇拿下网络模块(附 10 道练习)
网络·tcp/ip·计算机网络·软考
2301_808414382 天前
计算机网络基础
计算机网络
Lhappy嘻嘻2 天前
网络(四)|全网最细网络层原理:IP 协议、IP 地址分类、子网划分、路由转发、NAT 穿透详解
java·笔记·网络协议·计算机网络
儒雅的烤地瓜4 天前
计算机网络 | 网络诊断双刃剑:Tracert路由追踪实战与Windows防火墙端口配置指南
tcp/ip·计算机网络·wireshark·防火墙·powershell·cmd
2501_915106325 天前
TraceEagle 代理抓包教程 本机和手机的 HTTPS 抓包方法
网络协议·计算机网络·网络安全·ios·adb·https·udp