Можно ли настроить систему Linux так, чтобы она обеспечивала более 65 535 портов? Предполагается, что в данной системе будет прослушиваться более 65 тыс. Демонов.
Очевидно, что используются порты, так что по этим причинам это невозможно, поэтому подумайте об этом как о теоретическом упражнении, пытаясь понять, где TCP будет ограничивать при выполнении чего-то подобного.
Ответы:
Если взглянуть на RFC для TCP: RFC 793 - Протокол управления передачей , ответ может показаться отрицательным из-за того, что заголовок TCP ограничен 16 битами для поля порта источника / назначения.
IPv6 улучшает вещи?
Нет. Несмотря на то, что IPv6 даст нам гораздо большее пространство IP-адресов, 32-битное по сравнению со 128-битным, оно не пытается улучшить ограничение TCP-пакетов в 16 бит для номеров портов. Интересно, что в RFC для IPv6: спецификация интернет-протокола версии 6 (IPv6) поле IP необходимо расширить.
Итак, как вы можете получить больше портов?
Одним из подходов будет стек дополнительных IP-адресов с использованием большего количества интерфейсов. Если ваша система имеет несколько сетевых адаптеров, это проще, но даже с одним сетевым адаптером можно использовать виртуальные интерфейсы (так называемые псевдонимы ) для выделения большего количества IP-адресов, если это необходимо.
ПРИМЕЧАНИЕ: было заменено использование псевдонимов, с помощью
iproute2
которых вы можетеeth0
вместо этого использовать IP-адреса в одном интерфейсе (то есть ).пример
Источник: iproute2: Жизнь после ifconfig
Рекомендации
источник
Нет.
Тогда вам нужно:
iptables
конфигурация , которая перенаправляет на содержание трафика или«служба брокера служб» или «служба мультиплексора», которая будет принимать входящие соединения через один порт и направлять его соответствующему демону «за ним». Если вы хотите, чтобы стандартные протоколы передавались без изменений, вам, возможно, придется реализовать анализ / распознавание протоколов в этой службе мультиплексора таким образом, чтобы брандмауэр IDS или уровня 7 мог анализироваться; полностью возможно с подавляющим большинством протоколов.
По второму пункту вы можете разработать этот сервис для обработки более 2 ^ 16 «портов», если вы действительно этого хотите. Я уверен, что влияние на производительность будет минимальным по сравнению с загрузкой 2 ^ 16+ работающих слушателей.
Демоны в Linux могут прослушивать сокеты Unix, которые существуют в файловой системе, поэтому ваша «служба мультиплексора» может поддерживать внутреннее отображение внешнего порта <-> внутреннего сокета Unix. Скорее всего, вы столкнетесь с лимитом процессов ядра (32 Кбайтные процессы?), Прежде чем исчерпать inode в любой современной файловой системе.
источник
Просто потому, что нет хорошего ответа, я хотел бы вмешаться.
Один из способов сделать это - добавить опцию IP, которая указывает расширение порта. Опция должна быть разработана таким образом, чтобы она помещалась в необязательную часть заголовка IP, и она будет пропущена неизвестными прыжками.
Вы можете использовать эту опцию и ее информационную информацию для расширения номера источника, пункта назначения или обоих портов.
Ограничения не будут автоматически работать в существующем программном обеспечении, просто добавив параметр в любом случае, их придется переписать, чтобы воспользоваться преимуществом параметра, независимо от того, как он реализован, существующее программное обеспечение и брандмауэры будут либо игнорировать пакет, либо обрабатывать его как обычно. используя значение в полях исходного и конечного портов.
Короче говоря, это нелегко сделать, и было бы лучше сделать это с помощью одного многоразового прослушивателя и данных, содержащихся в полезной нагрузке пакета.
Вы также можете упростить повторное использование портов в программном обеспечении, что поможет преодолеть это ограничение путем повторного использования портов сервера для нескольких клиентских подключений.
Например, Rtsp может использовать заголовок SessionId в сочетании с различными другими заголовками в полезной нагрузке IP-пакета, чтобы определить, для какого соединения был отправлен запрос, и действовать соответственно, например, если сокет, из которого было доставлено сообщение, не совпадает с сокетом удаленный адрес, которому соответствует сеанс, тогда можно разрешить обновление сеанса новым сокетом для обработки, запретить сообщение или выполнить множество других действий в зависимости от приложения.
Сервер Http также может сделать этот или любой другой тип сервера.
Главное, что нужно помнить при разрешении повторного использования портов, это то, что вы также должны учитывать исходный IP-адрес.
источник
Да, ты можешь !
Это было сделано раньше, например, сервер шифрования Edgehill, который имеет> 25.000.000 демонов, работающих в сети.
источник