Provavelmente não usarei isso a longo prazo, mas ainda quero saber por que isso não está funcionando.
Configurei um túnel ssh simples da minha instância do Linode para uma instância do AWS EC2 em meu VPC. Eu tenho três instâncias em execução, uma tem um IP público (não um IP elástico, apenas um IP público). Meu comando ifup traz o túnel usando algo como:
manual tun0
iface tun0 inet static
pre-up /usr/bin/ssh -i /root/.ssh/awsvpn -S /var/run/ssh-aws-vpn-control -NMfw 0:0 jump.aws.mydomain.org
pre-up sleep 5
address 192.168.11.2
pointopoint 192.168.11.1
broadcast 255.255.255.0
up route add -net 10.11.0.0 netmask 255.255.0.0 gw 192.168.11.2
post-down /usr/bin/ssh -i /root/.ssh/awsvpn -S /var/run/ssh-aws-vpn-control -O exit jump.aws.mydomain.org
... corre do Linode para o awsgw ( jump.aws.mydomain.org
). Os endereços IP estão sendo resolvidos por meio de /etc/hosts
.
Depois disso, posso ver meu túnel de ambos os lados. Eu posso pingar para o outro lado do túnel (192.168.11. ) e para a eth0 no lado oposto (10.11.0.xx no lado da AWS, 123.45.67. no lado do Linode ). (Nota: todos os endereços foram higienizados aqui). Eu também posso ssh
através do túnel de qualquer lado.
A parte que NÃO está funcionando é qualquer tentativa de alcançar os outros dois nós dentro do meu VPC através desse túnel. Eu posso pingar e ssh de jump.aws. * Para qualquer um deles (anode e bnode).
No sistema de salto que fiz:
net.ipv4.ip_forward = 1
... e
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.0.0/8 0.0.0.0/0
... e nos outros dois nós defini isso como meu roteador / gateway padrão:
## From anode:
root@anode:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.11.0.35 0.0.0.0 UG 0 0 0 eth0
10.11.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.11.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Em jump
, a tabela de roteamento se parece com isso:
## From jump:
root@ip-10-11-0-35:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.11.0.1 0.0.0.0 UG 0 0 0 eth0
10.11.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.11.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
... e, finalmente, no Linode, é assim:
## From linode
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 123.45.67.89 0.0.0.0 UG 0 0 0 eth0
10.11.0.0 0.0.0.0 255.255.0.0 U 0 0 0 tun0
192.168.11.1 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
123.45.67.89 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Não há outras regras iptables
atualmente ativas em qualquer um desses nós. As únicas regras ativas estão na caixa jump
em meu VPC. O AWS SG está permitindo todo o tráfego entre os nós VPC (e eu já estabeleci que eu posso alcançar o ânodo e o bnode a partir do salto e o linode a partir daí.
Se eu executar tcpdump -n -v dst 10.11.0.39
(o ânodo) em jump
(o roteador NAT que estou tentando configurar) e tentar ssh
do Linode para anodo através dele, vejo o tráfego atingir o salto / roteador. Eu vejo também o tráfego ARP bem-sucedido. Mas eu não vejo nenhum tráfego saindo para o ânodo nem vejo nenhum sendo recebido de um tcpdump no próprio ânodo (além do ssh
entre o salto e o ânodo).
Aliás, o NAT / Masquerading não está funcionando. Independentemente do túnel, é como se minha rota padrão no ânodo (e bnode) estivesse sendo ignorada.
Isso é algum artefato do AWS VPC SDN da Amazon (rede definida por software)? Como é que eu posso configurar uma rota padrão para apontar para um dos meus nós ... um nó que eu posso pingar e ssh para ... e meu tráfego não está sendo roteado para esse nó?
(Todos os nós do AWS EC2 nesta configuração são Debian Wheezy 7.1 AMI com patches "shellshock" ... e o VPC está em us-west-2 (Oregon)).
O que estou perdendo?