Назад | Перейти на главную страницу

Как настроить VPN-туннель ssh -w между AWS VPC и Linode?

Я, вероятно, не собираюсь использовать это в течение длительного времени, но я все еще хочу знать, почему это не работает.

Я установил простой 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