Usamos um serviço cuja API rejeitará solicitações, a menos que o IP de origem tenha sido previamente incluído na lista de permissões. Eles nos dão apenas 3 slots, o que é um problema porque temos mais de 3 máquinas que precisam usar a API.
Qual é a técnica mais comum para solucionar esse problema?
Nota: não estou tentando fazer nada contra os Termos e Condições da API de terceiros. Estamos usando o ResellerClub e entrei em contato para pedir mais slots, mas eles responderam:
Solicito que você gentilmente encaminhe seus servidores para alguns conjuntos de IPs.
Daí esta pergunta.
Pensamentos:
- Eu estava pensando que poderíamos resolver o problema executando uma espécie de proxy que atua como um intermediário. Em vez de fazer solicitações de API para terceiros, nós as fazemos para nosso proxy, que devolve a solicitação para terceiros, para que todas as solicitações pareçam vir de um IP aos olhos deles. Existe um software comum para fazer esse tipo de coisa? Parece mais simples fazer isso do que os pensamentos abaixo, mas estou errado?
- O uso de "uma instância NAT" é algo que devo investigar? por exemplo , http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html . Parece complicado - Não existe uma solução mais simples? (Executar uma instância extra com complexidade de rede extra é uma pena).
- Como usamos o Docker, o Weave pode ser relevante?
- Podemos anexar um IP estático ao gateway VPC? Eu vi que é possível com o AWS Storage Gateway ( source ) - não tenho certeza sobre um vpc igw regular?
Nossa arquitetura: Usamos AWS e temos nossas instâncias em uma VPC rodando atrás de um ELB. Frequentemente criamos novas instâncias sem saber os endereços IP com antecedência. Executamos software idêntico em todas as máquinas. As máquinas rodam CoreOS e nosso app roda em containers Docker.
Uma infraestrutura bastante comum é aquela em que nenhum dos servidores de aplicativos reais possui endereços IP IPv4 públicos, eles estarão em um intervalo de rede privada RFC 1918 atrás de um balanceador de carga e qualquer solicitação de saída que eles fizerem será:
Pensei em postar uma atualização, pois o projeto agora foi concluído com sucesso usando uma instância NAT.
Agora que a instância NAT está configurada, a sensação inicial de complexidade passou e ela realmente parece bastante simples - ainda mais limpa do que antes (porque ser forçado a usar sub-redes privadas é um aumento de segurança).
As instruções oficiais de configuração da instância NAT da AWS funcionaram bem: http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html . Usamos a AMI fornecida pela Amazon para inicializar a instância NAT. Tendo passado pelo processo, percebi o quão "padrão da indústria" é, talvez até "melhor prática".
As desvantagens:
t2.small
não é muito caro e o AMI padrão não precisa ser modificado, portanto, não é um grande fardo de manutenção)..ssh/config
e lendo "ProxyCommand
", poderá tornar as coisas 100% transparentes para que o uso simplesmentessh server1
funcione.