Estou tentando entender a configuração VPN de site para site usando StrongSwan, que permitirá que sites remotos se conectem ao nosso AWS VPC. O problema é que os gateways remotos estarão potencialmente usando a mesma sub-rede que o VPC e não poderão realizar nenhum NAT no final, de modo que tudo terá que ser feito no gateway da AWS.
Eu me deparei com o suporte ao "IP virtual" do IKEV2 e StrongSwan e acho que, com uma combinação de regras IPTable, pode ser a solução para esse problema. Embora eu tenha algumas perguntas sobre essa arquitetura, você pode ver no diagrama a seguir. Eu defini uma sub-rede especial em nossa VPC para dispositivos VPN remotos mapeados, isso é para garantir que tenhamos o espaço disponível, pois haverá muito escalonamento automático acontecendo em outro lugar na VPC.
Eventualmente, qualquer arquitetura que eu escolher precisará ser capaz de suportar vários sites remotos que se conectam ao nosso VPC.
Supondoquearespostaàpergunta1sejasim,
Será bastante fácil determinar uma sub-rede virtual de forma que ela não se sobreponha ao meu VPC (10.0.0.0/16) ou ao site remoto (10.0.0.0/16), digamos que eu escolha manualmente 11.0 0,0 / 24. Como faço para acompanhar quem é quem no pool virtual? O endereço é simplesmente mapeado de 1 para 1, por exemplo, 10.0.0.15 - > 11.0.0.15? Qual é a melhor maneira de acompanhar esse mapeamento?
Gosto da ideia de uma sub-rede especial "Sub-rede de VPN mapeada" porque posso acompanhar meu espaço disponível. No entanto, na sua opinião, essa abordagem apenas torna a topologia excessivamente complexa? A outra opção seria eliminar essa sub-rede e simplesmente usar os pools de ip virtuais.
Supondo que a resposta à questão 3 seja sim,
Regras,
iptables -t nat -A PREROUTING -d <virtual address> -j DNAT --to-destination <mapped vpc address>
iptables -t nat -A POSTROUTING -d <mapped vpc address> -j SNAT --to-source <virtual address>
Após alguns testes básicos, parece que o mapeamento da sub-rede remota para a sub-rede virtual não é de 1 para 1. Também não consigo mapear toda a sub-rede, apenas o gateway remoto está sendo mapeado.
Configuração do gateway local
config setup
charonstart=yes
plutostart=no
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
conn testConn
leftid=%any
left=10.0.0.11
leftsubnet=10.0.0.0/16
leftfirewall=yes
right=%any
rightsourceip=16.16.0.0/16
rightsubnet=10.0.0.0/16
auto=add
Configuração do cliente remoto
config setup
charonstart=yes
plutostart=no
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
conn testConn
left=%any
leftsourceip=%config
leftsubnet=10.0.0.0/16
leftid=%any
leftfirewall=yes
right=<Gateway Public IP>
rightsubnet=10.0.0.0/16
rightid=%any
auto=start
Registros Charon
charon: 04[IKE] peer requested virtual IP %any
charon: 04[CFG] assigning new lease to '10.0.0.10'
charon: 04[IKE] assigning virtual IP 16.16.0.1 to peer '10.0.0.10'
Como diabos eu obtenho toda a sub-rede remota para mapear no pool de IP virtual!?!?
Tags vpn iptables nat strongswan