Subdomínios On The Fly, mas diferentes IPs

1

Minha equipe e eu estamos criando um serviço que, quando solicitado pelo usuário, cria uma nova instância do servidor em tempo real, com um IP diferente para cada nova instância. O problema é que estou me conectando de um cliente via WebSockets para esse servidor recém-criado. Mas eu preciso que ele seja certificado SSL. Então não posso usar apenas o IP.

Então, o que estou pensando é criar um subdomínio para cada uma dessas instâncias do servidor. O único problema aqui é que eu preciso que o subdomínio fique disponível super rápido, e não sei se posso confiar nos tempos de propagação do DNS para isso.

Existe alguma solução para isso? Como ter meu próprio servidor de roteamento que tenha um subdomínio curinga e, em seguida, rotear o tráfego com base nisso? Acho que não posso usar o Apache ou esse tipo de solução porque não é apenas o tráfego HTTP / S que estou manipulando.

    
por Cristian C. 14.11.2017 / 14:25

3 respostas

1

Acabei usando um proxy reverso. Nesse caso, o Traefik era exatamente o que eu precisava.

Eu fiz uma API simples que modifica o arquivo de configuração e tem alguns bons recursos, como solicitar certificados SSL na configuração

Abaixo está a configuração que acabei usando no caso de alguém precisar de algo semelhante.

InsecureSkipVerify = true
defaultEntryPoints = ["https"]

[entryPoints]
    [entryPoints.https]
    address = ":443"
        [entryPoints.https.tls]

[acme]
dnsProvider = "dnsprovider"
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
acmeLogging = true
delayDontCheckDNS = 0
onHostRule = true

[frontends]
  [frontends.frontend0]
  backend = "backend0"
    [frontends.frontend0.routes.main]
    rule = "Host:din0.instance.mydomain.com"
[backends]
  [backends.backend0]
   [backends.backend0.servers.server1]
   url = "wss://165.227.200.126"
    
por 13.02.2018 / 13:16
1

Provavelmente você conhece o intervalo de endereços IP antecipadamente? Você pode criar um padrão xxxxxx.dyn.example.com. IN A para a rede antecipadamente. Isso permite usar o certificado curinga *.dyn.example.com para todos eles sem nenhum problema causado pelo armazenamento em cache do DNS.

    
por 14.11.2017 / 14:40
0

O tempo de propagação do DNS é não é uma coisa real (na maioria dos cenários)

Dependendo de quanto controle você tem sobre o ambiente:

  • Os endereços IP das instâncias do servidor geralmente serão atribuídos a partir de determinados intervalos de IP reservados.
    Simplesmente preencha suas zonas DNS avançadas (e idealmente também reversas) com alguns nomes de host boilerplate correspondentemente previsíveis para cada endereço IP nesses intervalos:
    ip-10-9-8-7.instances.example.com. IN A 10.9.8.7
    e inclua um certificado curinga para *.instances.example.com. no modelo de instância como o certificado do servidor.

  • Quando você realmente não conhece o endereço IP antes e não pode pré-criar os registros, então você estará dependente de quão responsivo seu servidor DNS mestre está começando a responder por um recém criado registros e quão rápido seus servidores de nomes autoritários replicam um registro recém-criado um para o outro. Esse é o único atraso de propagação que importa e realmente depende da implementação do DNS, mas pode ser quase instantâneo. (Nota: também pode ser um processo de mudança manual e levar dias ...)
    Independentemente desses extremos, quando isso não é rápido o suficiente na sua situação: você pode, adicionalmente, emparelhar ainda o endereço IP recém-atribuído com um nome de host padrão em /etc/hosts ...

por 14.11.2017 / 15:25