首页 > 其他分享 >你所不知道的端口耗尽(二)

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

时间:2024-03-01 09:00:43浏览次数:42  
标签:端口 端口号 NAT IP地址 耗尽 SNAT 知道

问题背景

在你所不知道的端口耗尽(一)中,介绍了经典的客户端端口耗尽问题,在本篇文章中会介绍另外一种端口耗尽问题,即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的端口
    image

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

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

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

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

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

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

如何解决

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

标签:端口,端口号,NAT,IP地址,耗尽,SNAT,知道
From: https://www.cnblogs.com/kyo-lynn/p/18043640

相关文章

  • 华为交换机ACL关于地址池和端口池的使用
    当ACL下地址和端口太多,需要写很多条的时候,也可以尝试使用地址池和端口池。 aclip-pool1aipadd10.1.1.132ipadd10.1.1.232aclip-pool2bipadd10.2.1.132ipadd10.2.2.232aclport-pool1.porteq80eq8080注意:地址池和端口池命名规则STRI......
  • 在K8S中,nodePort默认端口范围是多少? 为什么是这个端口范围?
    在Kubernetes(K8s)中,NodePort服务类型的默认端口范围通常是30000-32767。这个范围是Kubernetes项目早期设定的标准,并且被广泛接受为默认配置。选择这个端口范围的原因有以下几点:避免冲突:低于30000的端口往往被系统保留给一些知名的网络服务和应用程序使用。设置较高......
  • 在Windows系统中解决端口占用问题
    在Windows系统中,你可以通过以下步骤查询并结束占用8001端口的进程:查询占用8001端口的进程:打开命令提示符(CMD)或者PowerShell,并执行以下命令: netstat-ano|findstr:8001这将列出所有占用8001端口的进程以及它们的PID(进程ID)。结束占用8001端口的进程:使用PID(进程ID)......
  • 各个端口作用以及如何利用
    端口范围一般用到的是1到65535,其中0一般不使用。端口号可分为3大类1、公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。2、注册端口(RegisteredPorts):从1024到49151。它们松散......
  • nginx 反向代理proxy_pass, 同一个端口多个域名的问题
    案例:serverip1:1.2.3.4domain1:aa.com>>指向ip1,port80domain2:bb.com>>指向ip1,port80serverip2:2.2.3.4domain3:cc.com>>指向ip3配置nginx转发到aa.com域名下的服务则需要做如下配置:location/{proxy_set_headerHostaa.com......
  • springboot两种配置文件的使用(举例:端口号、虚拟路径配置)
    1、properties配置文件使用   2、yml配置文件、yaml配置文件 在项目中更常用 在项目中一般yml配置文件更为常用,因为yml层级更加明确、清晰,更为关注数据。 ......
  • Windows如何检测UDP端口的连通性
    在Windows平台上如何检测UDP端口的连通性呢?其实,平时我们遇到检测TCP端口的连通性的情况比较多,遇到检测UDP端口连通性的情况较少。而且检测UDP端口的连通性比较复杂一点。像检测TCP端口是否连通(放开),Windows平台,一般常用的工具有telnet、psping等工具,而检测UDP端口的工具,在Linux平台......
  • 更改pureftpd vsftpd与proftpd的默认端口(转载)
    tp的默认端口是21,但如果启用ftp且开放21端口,经常会受到各种工具尝试破解ftp密码,且说你的ftp密码非常的强大,几乎不能暴力破解,但是工具暴力破解ftp密码时需要消耗系统资源,所以我们干脆更改下ftp的端口,这样就可以防止了各种暴力破解工具的侵扰。下面www.centos.bz把21端口更改为2121......
  • Nginx443端口绑定多域名
    Nginx443绑定多域名1.修改nginx的配置文件server{#基于域名的虚拟主机listen443ssl;server_nametest1.abc.com;ssl_certificate/home/nginx/ssl/test1.abc.com.pem;ssl_certificate_key/home/nginx/ssl......
  • 电脑日常:查看端口占用 ,WAMP建站
    1.查看端口占用程序报错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。说明该端口被某个程序占用。在CMD中输入netstat-aon|find10001查看占用10001端口的进程ID。得到 TCP  0.0.0.0:10001     0.0.0.0:0       LISTENING  ......