SSH через VPN соединение

У нас есть сервер AWS EC2, который мы настроили так, чтобы он был доступен только (через SSH) из нашей офисной сети. Очевидно, что это не идеально для удаленных устройств, где кто-то должен подключиться к экземпляру EC2 и работает удаленно вне офиса, например, во время деловой поездки.

Мне удалось настроить VPN через PPTP и я могу подключиться к офисной сети (у меня есть два локальных IP-адреса один от wlan0 и один от ppp0) независимо от того, где я нахожусь. Однако, когда я подключаюсь к экземпляру EC2 по SSH, он все еще отвергает меня, скорее всего, потому что он видит, что я все еще пытаюсь использовать ssh вне сети.

Я предполагаю, что проблема в том, что я не могу направить трафик ssh для прохождения через VPN. Есть идеи, как мне это сделать?

Другой мой вариант - подключиться к ssh к машине в офисной сети, а затем использовать эту машину для подключения по ssh к экземпляру EC2, но мне не терпелось сделать это, поскольку это кажется чрезмерным.

1 ответ

Решение

Let's suppose your AWS is reachable via SSH at IP "your.ec2.ip.address". Let's suppose your office network has Internet access via a router that apply some NAT translations and, as such, your office PCs are seen, on the Internet, with IP "your.office.external.ip".

Let's also suppose that you are located OUTSIDE of your office, with your laptop connected around the world, with:

  • основной IP-адрес, назначенный вашим местным интернет-провайдером (предположим, 192.168.0.33 с маской сети 255.255.255.0 и def-gw 192.168.0.1);
  • адрес PPP0, назначенный вашему ноутбуку удаленным сервером PPTP (как только ваш VPN-туннель будет успешно установлен). Давайте предположим, что PPP0 - это.local.ppp0.ip с удаленным P2P.remote.pptp.address. Другими словами, ваш ноутбук знает, что он является.local.ppp0.ip, а также знает, что на другой стороне туннеля VPN есть ваш PPTP-сервер, доступный через VPN, по адресу.remote.pptp.address.

В таком случае, если вы не можете - из своей записной книжки - добраться до своего AWS по адресу "your.ec2.ip.address", держу пари, что проблема в том, что, как вы предполагаете, маршрутизация: ваш трафик SSH направлен на " your.ec2.ip.address " НЕ оставляет ваш нетбук в VPN, а вместо этого оставляет общий путь по внешнему VPN (он же: отправляется на ваш локальный шлюз: 192.168.0.1).

Чтобы диагностировать эту проблему, очень простая проверка может быть сделана с:

  • Linux: команда tracepath (es.: "tracepath -n your.ec2.ip.address")
  • windows: команда "tracert" (es.: "tracert -d your.ec2.ip.address")

Из выходных данных вы можете проверить, сообщает ли второй шаг PPTP-адреса или нет.

Если ваш трафик движется по неверному пути, его легко исправить в VPN:

  • Linux: "route add -host your.ec2.ip.address gw the.remote.pptp.address"
  • Windows: "route add your.ec2.ip.address mask 255.255.255.255 the.remote.pptp.address"

После настройки вышеуказанного маршрута вы можете снова проверить маршрутизацию с помощью tracert/tracepath

После правильной настройки маршрутизации существует небольшая вероятность того, что проблемы могут возникнуть в вашем офисе: если ваш PPTP-сервер НЕ выполняет IP-пересылку и NAT-трансляцию, существует высокая вероятность того, что вы столкнетесь с "фильтрацией" в случае отсутствует IP-пересылка или "асимметричная маршрутизация" (в случае отсутствия NAT) между вашим ноутбуком и вашим адресом.ec2.ip.address:

  • трафик от вас до Amazon, проезд по VPN до вашего офиса, а затем до Amazon;
  • возвращать трафик из Amazon к вам, маршрутизироваться по общему Интернет-пути и... высоки шансы, что он куда-то упал.

Снова: tracepath / tracert может помочь вам проверить проблему.

На Linux-боксах другой очень полезный друг - "tcpdump". Некоторые полезные команды tcpdump:

  • "tcpdump -n -i interface icmp" для проверки входящих / исходящих запросов / ответов PING;
  • "tcpdump -n -i host an.ip.add.ress" для проверки трафика, поступающего / отправленного на an.ip.add.ress;
Другие вопросы по тегам