É possível configurar um sistema Linux para fornecer mais de 65.535 portas? A intenção seria ter mais de 65 mil daemons ouvindo em um determinado sistema.
Claramente, há portas sendo usadas, portanto, isso não é possível por esses motivos; portanto, pense nisso como um exercício teórico para tentar entender onde o TCP seria restritivo ao fazer algo assim.
Respostas:
Observando a RFC para TCP: RFC 793 - Transmission Control Protocol , a resposta parece não ser devido ao fato de um cabeçalho TCP estar limitado a 16 bits para o campo da porta de origem / destino.
O IPv6 melhora as coisas?
Não. Embora o IPv6 nos dê um espaço de endereço IP muito maior, 32 bits vs. 128 bits, ele não tenta melhorar a limitação do pacote TCP de 16 bits para os números de porta. Curiosamente, a RFC para IPv6: Protocolo da Internet, versão 6 (IPv6) , o campo IP precisava ser expandido.
Então, como você pode obter mais portas?
Uma abordagem seria empilhar endereços IP adicionais usando mais interfaces. Se o seu sistema possui várias NICs, isso é mais fácil, mas mesmo com apenas uma NIC, é possível fazer uso de interfaces virtuais (também conhecidas como aliases ) para alocar mais IPs, se necessário.
NOTA: O uso de aliases foi substituído pelo
iproute2
qual você pode usar para empilhar endereços IP em uma única interface (por exemploeth0
).Exemplo
Fonte: iproute2: Vida após o ifconfig
Referências
fonte
Não.
Então você precisa:
uma
iptables
configuração que redireciona o conteúdo do tráfego ouum "serviço de intermediário de serviço" ou "serviço multiplexador" que aceitará conexões de entrada em uma única porta e a encaminhará para o daemon apropriado "atrás dela". Se você deseja que os protocolos padrão passem sem modificação, pode ser necessário implementar a detecção / reconhecimento de protocolo nesse serviço multiplexador, de maneira que um firewall IDS ou camada 7 ana-analise; completamente possível com a grande maioria dos protocolos.
No segundo item, você pode projetar esse serviço para lidar com mais de 2 ^ 16 "portas", se realmente quiser. Tenho certeza de que o impacto no desempenho será mínimo em comparação com a carga de 2 ^ 16 + ouvintes em execução.
Os daemons no Linux podem estar ouvindo nos soquetes unix existentes no sistema de arquivos, portanto, o seu "serviço multiplexador" pode manter um mapeamento interno da porta externa <-> soquete unix interno. Você provavelmente encontrará um limite de processo do kernel (processos de 32 KB)? Antes de ficar sem inodes em qualquer sistema de arquivos moderno.
fonte
Só porque não há uma boa resposta que eu queira conversar.
Uma maneira de fazer isso seria adicionar uma opção IP que especifique a extensão da porta. A opção deve ser projetada para caber na parte opcional do cabeçalho IP e seria ignorada por saltos desconhecidos.
Você usaria essa opção e suas informações para estender a origem, o destino ou os dois números de porta.
As limitações não funcionarão automaticamente no software existente apenas adicionando a opção de qualquer maneira; elas terão que ser reescritas para tirar proveito da opção, independentemente de como ela é implementada, o software e os firewalls existentes irão ignorar o pacote ou processá-lo normalmente. usando o valor nos campos da porta de origem e de destino.
Em resumo, não é fácil e seria melhor usar um único ouvinte reutilizável e dados contidos na carga útil do pacote.
Você também pode permitir mais facilmente a reutilização de portas no software, o que pode ajudar a superar essa limitação reutilizando as portas do servidor para várias conexões de clientes.
O Rtsp, por exemplo, pode usar o cabeçalho SessionId em conjunto com vários outros cabeçalhos na carga útil do pacote IP para determinar para qual conexão a solicitação foi emitida e agir de acordo, por exemplo, se o soquete do qual a mensagem foi entregue não for o mesmo do soquete. Se o endereço remoto ao qual a sessão corresponde, pode-se permitir que uma sessão seja atualizada com o novo soquete para processamento, negar a mensagem ou várias outras ações, dependendo do aplicativo.
Um servidor HTTP também pode fazer isso ou qualquer outro tipo de servidor.
A principal coisa a lembrar ao permitir a reutilização de portas é que você também deve levar em consideração o endereço IP de origem.
fonte
Sim você pode !
Isso já foi feito antes, por exemplo, o servidor de criptografia Edgehill, com mais de 25.000.000 de deamons em execução online.
fonte