Existe uma maneira de encaminhar uma porta com base no subdomínio? [duplicado]

2

Basicamente, quero ter algo assim:

name1.mydomain.com:1234 - > my.internal.ip.address: 10001
name2.mydomain.com:1234 - > my.internal.ip.address: 10002
name3.mydomain.com:1234 - > my.internal.ip.address: 10003
name4.mydomain.com:1234 - > my.internal.ip.address: 10004
name5.mydomain.com:1234 - > another.internal.ip.address: 10001
name6.mydomain.com:1234 - > another.internal.ip.address: 10002

Pode estar no nível do roteador, no nível do servidor de DNS interno ou até mesmo em alguma outra máquina na rede local executando algum aplicativo que apenas passe o tráfego para a máquina adequada na porta correta.

Mais esclarecimentos: não é o tráfego HTTP, mas nosso próprio protocolo personalizado (nosso próprio aplicativo cliente / servidor usando o Remoting no .NET)

    
por Davy8 21.12.2009 / 22:36

2 respostas

4

OK, vamos esclarecer alguma confusão aqui ...

Primeiro, não há exigência explícita em sua pergunta de que todos esses nomes sejam resolvidos para o mesmo endereço IP - portanto, você pode atribuir um bloco de endereços ao seu dispositivo de roteador, ter a configuração dos registros DNS para fornecer um único endereço IP. para um mapeamento do nome para o endereço IP e, em seguida, use DNAT (Destination Network Address Translation) para encaminhar o tráfego para dispositivos internos.

Vou continuar supondo que você não tem a capacidade de lançar uma pilha de endereços IP no problema.

Em geral, para um protocolo arbitrário rodando dentro de TCP ou UDP (porque outros protocolos que rodam sobre IP não necessariamente possuem nenhum conceito de portas), você não pode fazer o que quer fazer, porque não existe garantir que haja qualquer informação dentro do "fluxo" de tráfego para permitir que tal roteamento ocorra. Certos protocolos, em uma tentativa de contornar este mesmo problema, fazer incorporam informações de nome em seu protocolo (como HTTP, com o Host header) e, para esses protocolos, são geralmente proxies que receberão uma solicitação, determinarão o nome que foi apresentado e, em seguida, rotearão a solicitação para um local apropriado. Alguns desses proxies foram mencionados em outras respostas, e se estes não forem suficientes, você sem dúvida receberá respostas apropriadas se nos informar qual o protocolo da camada 7 que você está tentando fazer proxy.

No entanto, a grande maioria dos protocolos não faz nenhuma identificação baseada em nome de seu destino pretendido, e para aqueles que você não tem opção a não ser usar endereços IP para controlar o fluxo de tráfego para diferentes endpoints internos .

EDITAR : Se você está definindo seu próprio protocolo, deve ser possível incorporar o nome do host ao qual você está se conectando em algum lugar, e então você terá que escrever seu próprio proxy (possivelmente como um plug-in para algum software existente) para receber essas solicitações, mapeá-las para o back-end correto e passá-las adiante.

    
por 21.12.2009 / 23:06
1

não - você não pode fazê-lo por um protocolo genérico, embora possa ser feito para protocolos específicos - por exemplo, http colocando proxy reverso que toma decisão não apenas com base no endereço IP / porta, mas também - nome de domínio solicitado.

    
por 21.12.2009 / 22:40