Я хотел бы настроить некоторые службы Linux на нестандартные порты - какой самый высокий допустимый номер порта?
(2 ^ 16) -1 или 0-65 535 (-1 означает, что порт 0 зарезервирован и недоступен). (отредактировано, потому что o_O Tync напомнил мне, что мы не можем использовать порт 0, а Стив Фолли напомнил мне, что вы запрашивали самый высокий порт, а не количество портов)
Но вы, вероятно, ошиблись. Есть люди, которые выступают за и против нестандартных портов. Я говорю, что они не имеют значения, кроме самого обычного сканера, а самый случайный сканер можно предотвратить, используя новейшее программное обеспечение и надлежащие методы брандмауэра, а также надежные пароли. Другими словами, лучшие практики безопасности.
1-65535 доступны, а порты в диапазоне 1-1023 являются привилегированный единицы: приложение должно быть запущено от имени пользователя root, чтобы прослушивать эти порты.
Хотя 1-65535 являются допустимыми портами TCP, и правда, что 1-1023 предназначены для хорошо известных служб портов. Вы можете столкнуться со случайными проблемами с вашими собственными службами, если они запускаются после установки временного порта. Для тех, кто может не знать, эфемерные порты - это те, которые подключены локально для удаленных конечных точек (или что-то в этом роде). Итак, если вы напишете службу TCP, которая прослушивает порт 20001. У вас может быть все хорошо сегодня ... и завтра. Но однажды ваша служба может запуститься и попытаться привязаться к 20001, и она потерпит неудачу, потому что она была взята как временный порт. Выход есть. Вы должны попросить своего администратора или себя изменить системную политику временного диапазона портов на вашем сервере. В системах Linux это делается в два этапа:
Необходимо выполнить оба шага, если вы не планируете перезагрузку (в этом случае шаг Dynamic не нужен). Чтобы установить диапазон от 40000 до 65535, сделайте следующее:
Динамический
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
или
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
Постоянный
Добавьте в /etc/sysctl.conf следующее:
net.ipv4.ip_local_port_range = 40000 65535
Чтобы прочитать текущую настройку или подтвердить изменение:
/sbin/sysctl net.ipv4.ip_local_port_range
Результат будет примерно таким:
net.ipv4.ip_local_port_range = 9000 65500
Убедитесь, что вы понимаете цель своего сервера. Слишком большое сокращение диапазона может привести к другим проблемам.
Удачного кодирования! (или что ты делаешь)