Como encaminhar FQDNs para máquinas virtuais? [fechadas]

2

É possível ter dois nomes de domínio apontados para duas VMs diferentes em execução no Ubuntu Server? Meu dilema é que eu só tenho um endereço IP voltado para o público.

Aqui está um gráfico do que estou tentando alcançar:

                /---FQDN1--->VM1
External IP ----
                \---FQDN2--->VM2

Eu percebo que pode haver algumas armadilhas com isso, como ter aplicativos vinculados a portas diferentes para evitar conflitos.

Depois de ler on-line, isso pode ser possível com o iptables, bind e / ou proxy do squid.

    
por Ion B. 15.06.2014 / 05:05

2 respostas

1

Primeiro, é impossível encaminhar portas na camada IP ou de transporte para diferentes máquinas internas com base no domínio que o cliente está acessando. Por causa disso, o que você quer fazer tem que ser feito em um nível mais alto da pilha de rede. Mas você já deve ter lido isso, já que está perguntando sobre proxies.

Movendo uma camada para cima da pilha de rede, você encontra uma grande variedade de protocolos diferentes. Alguns são fáceis de usar com base no nome do host, alguns são impossíveis. Eu só conheço quatro protocolos, que podem ser aproximados dessa maneira. Variando do mais fácil ao mais difícil, eles são:

  • HTTP
  • HTTPS
  • DNS
  • SMTP

Um proxy HTTP padrão pode manipular o protocolo HTTP para você. Ele funciona com qualquer cliente enviando um cabeçalho de host. Este cabeçalho é opcional em HTTP / 1.0 e obrigatório em HTTP / 1.1. Até agora o HTTP / 1.1 tem mais de uma década, e você pode esperar que praticamente todos os clientes o suportem agora.

O HTTPS é um pouco mais complicado. Ele só funcionará com clientes que suportam o SNI. Eu acho que você encontrará uma maioria apoiando isso, mas você pode encontrar uma minoria significativa de clientes que ainda não apóiam o SNI. Você pode encaminhar todos os clientes sem suporte a SNI para um servidor específico, de modo que pelo menos um dos domínios possa funcionar para clientes sem SNI.

Minha recomendação é atribuir um endereço IPv6 público a cada servidor. Dessa forma, os clientes com suporte a IPv6 não recebem as desvantagens do proxy e você pode usar a conectividade IPv6 do proxy para o servidor real. Isso também significa que o proxy pode realmente usar pesquisas de DNS para encontrar o endereço do servidor, o que pode simplificar as coisas.

Eu tenho implementado como um proxy com suporte a http e https, então sei que isso é possível. Mas acho que, para sua configuração, um proxy de prateleira provavelmente é uma escolha melhor. Eu acho que o squid pode fazer isso. Por outro lado, não acho que o iptables e o bind ajudem muito.

    
por 15.06.2014 / 11:45
0

A maneira mais fácil é usar um proxy reverso que faz proxy de suas solicitações para as VMs. (Eu suponho que estamos falando HTTP aqui)

    
por 15.06.2014 / 08:55