У меня есть несколько служб, работающих на последовательных портах (прослушивающих их) в ограниченном диапазоне (1024+). Время от времени мне нужно перезапускать эти службы, и случается так, что одна из служб использует порт другой службы в качестве локального порта для подключения к базе данных. В результате другая служба жалуется на невозможность прослушивать now-busy-port. Мне нужно вручную определить службу с помощью netstat, чтобы принудительно сменить порт, перезапустив эту самую службу, чтобы порт теперь был свободен для использования другой службой.
Есть ли способ запретить использование порта в качестве открывающегося и разрешить его открытие только в режиме прослушивания?
Система: Linux
В настоящее время используется диапазон портов 9000-9100
решение1
Обычно эти порты должны быть уже за пределами диапазона "эфемерных" портов (который не то же самое, что и непривилегированные порты). Диапазон задаетсяnet.ipv4.ip_local_port_range
sysctl, а в моей системе по умолчанию отображается 32768–60999.
Если local_port_range достаточно велик, это означает, что порт 9000 никогда не должен автоматически выбираться в качестве исходного порта (хотя это не мешает программамявнопривязка к этому порту).
Вы также можете добавить свои порты в net.ipv4.ip_local_reserved_ports
sysctl (через /etc/sysctl.d); эта опция принимает список отдельных номеров портов, разделенных пробелами.