Я, вероятно, не собираюсь использовать это в течение длительного времени, но я все еще хочу знать, почему это не работает.
Я установил простой ssh туннель от моего экземпляра Linode к одному экземпляру AWS EC2 в моем VPC. У меня три запущенных экземпляра, у одного есть общедоступный IP (не эластичный IP, а только общедоступный IP). Мой если команда вызывает туннель, используя что-то вроде:
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
... беги от линода к awsgw (jump.aws.mydomain.org
). IP-адреса решаются через /etc/hosts
.
После этого я могу видеть свой туннель с обеих сторон. Я могу пинговать до дальнего конца туннеля (192.168.11.) и eth0 на дальней стороне (10.11.0.xx на стороне AWS, 123.45.67. на стороне линода). (Примечание: здесь все адреса были очищены). я тоже могу ssh
через туннель с обеих сторон.
Часть, которая НЕ работает, - это любая попытка достичь двух других узлов в моем VPC через этот туннель. Я могу ping и ssh из jump.aws. * На любой из них (анод и bnode).
По системе прыжков я сделал:
net.ipv4.ip_forward = 1
... и
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.0.0.0/8 0.0.0.0/0
... и на двух других узлах я установил это в качестве маршрутизатора / шлюза по умолчанию:
## 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
На jump
таблица маршрутизации выглядит так:
## 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
... и, наконец, на Линоде это выглядит так:
## 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
Нет другого iptables
правила, в настоящее время активные на любом из этих узлов. Единственные активные правила находятся на jump
коробка в моем VPC. AWS SG разрешает весь трафик между узлами VPC (и я уже установил, что могу добраться до анода и узла через прыжок, а оттуда до линода.
Если я сбегу tcpdump -n -v dst 10.11.0.39
(анод) на jump
(маршрутизатор NAT, который я пытаюсь настроить) и попробуйте ssh
от линода до анода через него я действительно вижу, как трафик попадает в переход / маршрутизатор. Я тоже вижу успешный ARP-трафик. Но я не вижу никакого трафика, идущего к аноду, и я не вижу ничего, полученного от tcpdump на самом аноде (кроме ssh
между переходником и анодом).
В этом отношении NAT / Masquerading вообще не работает. Независимо от туннеля, мой маршрут по умолчанию на аноде (и bnode) игнорируется.
Это какой-то артефакт Amazon AWS VPC SDN (программно определяемая сеть)? Как получается, что я могу настроить маршрут по умолчанию, чтобы он указывал на один из моих узлов ... узел, на который я могу выполнить ping и ssh ... и мой трафик не направляется на этот узел?
(Все узлы AWS EC2 в этой конфигурации представляют собой Debian Wheezy 7.1 AMI с патчами "shellshock" ... и VPC находится в us-west-2 (Орегон)).
Что мне не хватает?
Похоже на проблему с маршрутизацией, так как туннель в порядке. Я сделал это, и это сработало ... больше не работает :-). Я еще не адаптировался к новому способу настройки устройств или мой сервер просто борется.
Маршрутизирующая часть все еще должна быть в порядке.
Получите презентацию ssh здесь, в ней есть раздел о ssh VPN со всей настройкой (iptables, маршрутизацией и т. Д.) В одном скрипте blob внутри .ssh / config: https://wiki.hackerspace.lu/wiki/SSH_-_Secure_Shell