Каков максимальный номер порта в Linux?

Каков максимальный номер порта в Linux?

Я хотел бы настроить некоторые службы Linux на нестандартные порты. Какой максимальный допустимый номер порта?

решение1

(2^16)-1, или 0-65,535 (-1 означает, что порт 0 зарезервирован и недоступен). (отредактировано, потому что o_O Tync напомнил мне, что мы не можем использовать порт 0, а Стив Фолли напомнил мне, что вы просили самый большой порт, а не количество портов)

Но вы, вероятно, идете в неправильном направлении. Есть люди, которые спорят за и против нестандартных портов. Я говорю, что они не имеют значения, за исключением самого обычного сканера, а самого обычного сканера можно держать на расстоянии, используя современное программное обеспечение и надлежащие методы брандмауэра, а также надежные пароли. Другими словами, лучшие практики безопасности.

решение2

1-65535 доступны, а порты в диапазоне 1-1023 являютсяпривилегированный: для прослушивания этих портов приложение должно быть запущено от имени пользователя root.

решение3

Хотя 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

Убедитесь, что вы понимаете цель вашего сервера. Слишком большое уменьшение диапазона может привести к другим проблемам.

Удачного кодирования! (или чем бы вы ни занимались)

решение4

Все, кто говорит 65 535, правы.

ОДНАКО!!! с помощью некоторых осторожных манипуляций с настраиваемыми параметрами ядра вы можете заставить Linux использовать больше. Некоторые коммерческие системы UNIX будут запускать службы на технически недопустимых портах без проблем. Очень простой способ обойти некоторые сети, защищенные брандмауэром/ACL! :P

Я использовал второй сервер telnet на tcp/99999, и он всегда работал для меня. Даже в случаях, когда типичные привилегированные порты (1-1024) блокируются ACL или сетевым брандмауэром.

Почти никто не сканирует порты, прослушивающие выше 65 535. Большая часть сетевого оборудования не может проверять ничего за пределами определенного диапазона (0-65 535) и слепо перенаправляет трафик, если только правило не предписывает делать иначе. Теперь, когда у нас есть 64-битные системы, верхний диапазон технически является 64-битными границами. Это не означает, что сети будут пропускать трафик, но обычно они пропускают все, что не запрещено правилом.

Связанный контент