Encaminhando uma chamada de diferentes subdomínios para diferentes máquinas internas

1

Como faço o roteamento de tráfego de diferentes subdomínios para diferentes endereços IP internos?

Eu configurei um roteador da Debian que tem um IP público e um nome de domínio apontado para esse IP, eu gostaria que diferentes sub-domínios alcançassem diferentes máquinas internas.

Estou falando de tráfego HTTP, SSH e FTP aqui e tenho o Shorewall e o dnsmasq instalados no roteador.

Por exemplo, a URL: ftp.example.com Gostaria de apontar para uma máquina com o IP interno 192.168.1.10 e, em seguida, dev.example.com Gostaria de alcançar outro IP interno. diga 192.168.1.200

Seria bom se eu pudesse especificar quais protocolos são permitidos em quais sub-domínios e rotear explicitamente cada protocolo e porta para as máquinas internas.

    
por Joelbitar 23.09.2011 / 12:47

2 respostas

5

Para alguns protocolos, isso simplesmente não é possível apenas com o encaminhamento de portas, a menos que você os execute em portas não padrão (portanto, o próprio roteador está na porta 22 para SSH, a máquina interna 1 aparece na porta 23 no IP público, interna máquina na porta 24 e assim por diante) ou ter mais de um endereço público.

HTTP - isso pode ser feito usando um proxy reverso. Tenha algo como o nginx rodando e faça com que todo o tráfego chegue na porta 80 inicialmente, e use o recurso de proxy para fazer pedidos de farm para a máquina relevante de acordo com o (sub) domínio solicitado. Outros servidores da Web também têm recursos de proxy semelhantes (ou seja, o Apache, embora a execução de algo menor como o nginx seja mais eficiente se tudo que você precisa é o recurso de proxy).

HTTPS - Se todos os clientes de conexão suportarem o SNI, você poderá usar o mesmo método mencionado para o HTTP acima. Infelizmente, nenhuma versão do Internet Explorer em execução no Windows XP suporta SNI, portanto, dependendo da base de clientes, isso pode ser um problema. Os navegadores afetados apresentarão seus usuários com erros de certificado. Outro trabalho ao invés de confiar no SNI é obter um certificado que seja válido para todos os nomes que você precisa (ou seja, um certificado multi nome se a teoria for nomes muito diferentes ou um certificado curinga se eles forem todos subdomínios de um único), mas estes são geralmente mais caros que os certificados de nome único.

SSH - não é diretamente possível. Embora você possa apenas SSH no roteador e, em seguida, o SSH na rede a partir daí. Mesmo o encaminhamento de porta e tal funciona através de vários saltos como este, se você conseguir os encantamentos direito. Se você obtiver o SSH funcionando, lembre-se de que SFTP ou SCP são alternativas viáveis ao FTP em muitos casos e conferem benefícios ao FTP.

FTP - Eu não tenho um servidor FTP há algum tempo, então não sou especialista aqui. Pode haver opções de proxy reverso, mas duvido do meu conhecimento de como o protocolo opera. Uma opção aqui seria ter um serviço de FTP e permitir que ele acessasse máquinas diferentes na rede por meio de compartilhamentos de rede (isso pode não ser prático dependendo dos seus requisitos de autenticação, mas para muitas coisas deve ser suficiente). Você também pode considerar o uso de SCP ou SFTP (via SSH), que é mais eficiente e mais seguro que o FTP.

    
por 23.09.2011 / 13:31
0

Você deseja usar um proxy reverso para isso. O mod_proxy do Apache deve resolver o problema.

    
por 23.09.2011 / 13:24