修改预留端口号防止被占用
发表于:2023-01-29 | 分类: tg

给客户端的端口号通常是动态分配的,称为ephemeral port(临时端口)

net.ipv4.ip_local_port_range

在Linux系统上临时端口号的取值范围是通过这个内核参数定义的:net.ipv4.ip_local_port_range (/proc/sys/net/ipv4/ip_local_port_range),默认为32768 - 60999

[root@VM_42 /]# cat /proc/sys/net/ipv4/ip_local_port_range 32768 60999 net.ipv4.ip_local_reserved_ports /proc/sys/net/ipv4/ip_local_reserved_ports (net.ipv4.ip_local_reserved_ports) 是应用程序保留的端口号,不会参与内核动态分配.

端口号动态分配时并不是从小到大依次选取的,而是按照特定的算法随机分配的。临时端口号是这样产生的:生成一个随机数,利用随机数在ip_local_port_range范围内取值,如果取到的值在ip_local_reserved_ports范围内 ,那就再依次取下一个值,直到不在ip_local_reserved_ports范围内为止`

服务监听端口在32768 - 60999之间,可能导致端口号用作临时端口,从而导致服务启动失败,解决方式:

修改临时端口范围 ip_local_port_range,因为一个程序的端口问题修改一个机器的临时端口范围,明显减少了临时端口的使用量。代价大。
修改预留端口ip_local_reserved_ports,即使没有发生冲突也可以预先设置,防止后续端口被占用。

上一篇:
错误解决办法:zipimport.ZipImportError: can't decompress data; zlib not available
下一篇:
k8s删除pvc卡住(解决方法)