Conecte o EC2 ao servidor local por meio de VPN

… Este artigo não está completo e será continuado mais tarde …

Usamos Amazon Virtual Private Cloud (VPC) para servir nosso produto de banco de dados, aplicativo, cache, Logstash, escalonamento automático e muito mais.

Porém, temos um requisito adicional onde o aplicativo deve ser executado na máquina local ou na rede de cada região, conforme diagrama abaixo:

Cenário

A nova arquitetura deve suportar as seguintes regras:

1) Cada computador local é acessível através da rede privada.

Por exemplo, Jacarta local (192.168.123.110) pode usar o SSH Local New York com seu IP privado (192.169.1.2) ou Riyadh local (10.20.30.40) pode abrir o aplicativo no navegador usando o IP privado Delhi local (10.10.230.10)

2) O aplicativo no computador local pode acessar o banco de dados no EC2 local.

** Nosso banco de dados não é aberto ao público, ele só pode ser acessado entre a sub-rede EC2 (rede privada). precisamos criar um banco de dados de replicação e failover em que o mestre estará no local, mas sincronizará automaticamente com o banco de dados EC2. Caso o EC2 seja desligado o aplicativo pode funcionar ou se houver grande problema de força no local, ainda temos backup na nuvem e nuvem * *

3) Os logs do aplicativo precisam ser enviados ao servidor Logstash

Usamos o logstash para centralizar e gerar relatórios das atividades do aplicativo, mas o logstash não é aberto ao público, ele apenas autoriza a sub-rede local EC2

4,5,6 e muitos mais que não preciso contar tudo aqui.

Felizmente, a Amazon forneceu o conceito aqui , mas como implementá-lo do zero?

Precisamos de um servidor de rede privada virtual (VPN) que tenha conexão com a Internet para cada região, incluindo o AWS VPC (usaremos EC2 para VPN) e deve ter IP público estático e IP local.

Eu uso o openswan para rodar no ubuntu server como VPN.

apt-get -y update
apt
-get -y install openswan

se você vir um pop-up, pode clicar em ‘NÃO’ e em ‘OK’, não é necessário reiniciar após a instalação

Edite as tabelas de ip colando os códigos básicos abaixo (você pode editar por requisito)

iptables -F
iptables
-P INPUT ACCEPT
iptables
-P FORWARD ACCEPT
iptables
-P OUTPUT ACCEPT
iptables
-t nat -A POSTROUTING -j MASQUERADE

Volte o ipsec.conf atual e crie um novo:

mv /etc/ipsec.conf /etc/ipsec.conf.default
vim
/etc/ipsec.conf

copie e cole o ipsec.conf básico abaixo:

version 2.0
config setup

protostack
=netkey
nat_traversal
=yes
virtual_private
=
oe
=off
include
/etc/ipsec.d/*.conf

Observação: você pode restringir a lista virtual_private como% v4: 172.16.0.0/12 ou% v4:! 10.1.1.0/24, mas se não tiver certeza, pode deixá-la em branco para mais detalhes sobre ipsec.conf

Crie mais configurações ipsec na pasta ipsec.d. Os arquivos de configuração abaixo são para conectar a VPN da Indonésia ao EC2, Arábia Saudita, Estados Unidos e Índia.

vim /etc/ipsec.d/indonesia-to-ec2.conf

aqui está a configuração básica:

conn indonesia-to-ec2
type
=tunnel
authby
=secret
left
=%defaultroute
leftid
=<current-machine-ip-public>
leftnexthop
=%defaultroute
leftsubnet
=<current-machine-subnet>/<cidr>
right
=<target-ip-public>
rightsubnet
=<target-subnet>/<cidr>
pfs
=yes
auto
=start

Resultado de exemplo:

conn indonesia-to-ec2
type
=tunnel
authby
=secret
left
=%defaultroute
leftid
=118.123.234.234
leftnexthop
=%defaultroute
leftsubnet
=192.168.123.0/24
right
=217.80.90.100
rightsubnet
=172.30.0.0/16
pfs
=yes
auto
=start

NOTA:

  • CIDR é roteamento de domínio de Internet de cluster, você pode aprender mais em [wiki] ( http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing )
  • Para obter a sub-rede local, você pode usar ifconfig e encontrar o endereço inet de eth0 ou en0 ou en1, se você vir o diagrama, o ip privado é 192.168.123.234, então sua sub-rede pode ser 192.168.123.0/24 ou 192.168.0.0/16

Depois disso, você precisa criar todas as configurações de conexão para todas as regiões, indonesia-to-saudi-arabia.conf, indonesia-to-united-state.conf, indonesia-to-india.conf

Edite /etc/sysctl.confe adicione ou edite a configuração abaixo:

net.ipv4.ip_forward=1

net
.ipv4.conf.all.accept_redirects = 0

net
.ipv4.conf.all.send_redirects = 0

net
.ipv4.conf.default.send_redirects = 0
net
.ipv4.conf.eth0.send_redirects = 0

net
.ipv4.conf.default.accept_redirects = 0
net
.ipv4.conf.eth0.accept_redirects = 0

Depois disso, execute os seguintes pedidos:

sysctl -p /etc/sysctl.conf
ipsec verify

depois de executar, ipsec verifycertifique-se de não obter nenhum aviso [FALHA] ou vermelho. Em seguida, reinicie o seu ipsec

service ipsec restart
service ipsec status

Você obterá 0 túnel em execução, mas seu processo já está feito. Agora você deve criar o mesmo processo para todos os servidores VPN. Assim que terminar, todos os servidores terão túneis em execução.

Se tudo estiver funcionando corretamente, você pode executar ping em cada servidor VPN para seu ip local.

… continua…