我在连续端口上运行了多个服务(监听这些端口),端口范围不受限制(1024+)。有时我需要重新启动这些服务,而其中一个服务恰好使用其他服务的端口作为本地端口来连接数据库。结果,其他服务抱怨无法监听现在繁忙的端口。我需要使用 netstat 手动确定服务,通过重新启动此服务来强制更改端口,这样端口现在就可以被其他服务自由使用。
有什么方法可以防止端口被用作打开,而仅允许其在监听模式下打开?
系统:Linux
当前使用的端口范围是 9000-9100
答案1
通常,这些端口应该已经超出了“临时”端口范围(与非特权端口不同)。该范围由net.ipv4.ip_local_port_range
系统控制,在我的系统上它默认显示 32768–60999。
如果 local_port_range 足够高,则意味着端口 9000 永远不会被自动选择为源端口(尽管它不会阻止程序明确地绑定到该端口)。
您还可以将端口添加到net.ipv4.ip_local_reserved_ports
sysctl(通过 /etc/sysctl.d);此选项采用以空格分隔的各个端口号列表。