SSH через VPN-з'єднання


11

У нас є сервер AWS EC2, який ми налаштували на доступ (лише через SSH) з нашої офісної мережі. Очевидно, це не ідеально для віддалених домовленостей, коли хтось повинен підключитися до екземпляра EC2 і працює віддалено поза офісом, наприклад, під час відрядження.

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

Я думаю, що проблема полягає в тому, що я не можу прокласти трафік ssh для проходження через VPN. Будь-які ідеї, як я можу це досягти?

Мій інший варіант - ssh на машину в межах офісної мережі, а потім використовувати цю машину для ssh на екземпляр EC2, але я не вагаюся робити це, як здається надмірним.


Коротка відповідь - прокласти ваш SSH-трафік через VPN. І використовувати щось трохи більш безпечне, ніж PPTP.
Хіпі

Відповіді:


15

Припустимо, ваш AWS доступний через SSH за IP "your.ec2.ip.address". Припустимо, у вашій офісній мережі є доступ до Інтернету через маршрутизатор, який застосовує деякі переклади NAT, і, як такий, ваші офісні ПК в Інтернеті бачать IP-адресу "your.office.external.ip".

Припустимо також, що ви знаходитесь поза вашим офісом, з ноутбуком, підключеним по всьому світу, з:

  • основну 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.ad. Іншими словами, ваш ноутбук знає, що це the.local.ppp0.ip, а також знає, що з іншого боку тунелю VPN ваш сервер PPTP, доступний через VPN, на адресу.remote.pptp.address.

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

Щоб діагностувати цю проблему, можна легко перевірити:

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

З результату ви можете перевірити, чи повідомляють PPTP про другий крок, чи ні.

Якщо ваш трафік рухається неправильним шляхом, легко виправити його в межах VPN:

  • Linux: "маршрут add -host your.ec2.ip.address gw the.remote.pptp.address"
  • Windows: "маршрут додайте свою маску.ec2.ip.address 255.255.255.255 the.remote.pptp.address"

Після налаштування вищевказаного маршруту ви можете знову перевірити маршрутизацію за допомогою tracert / trapseath

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

  • трафік від вас до Amazon, їде по VPN до вашого офісу і відтоді до Amazon;
  • повернути трафік з Амазонії до вас, прокладеться по загальній дорозі до Інтернету і ... шанс великий, він кудись скидається.

Знову ж таки: трапеція / трасерт може допомогти вам перевірити проблему.

На linux коробках ще один дуже корисний друг - "tcpdump". Деякі корисні команди tcpdump:

  • "tcpdump -n -i інтерфейс icmp" для перевірки вхідного / вихідного запиту / відповіді PING;
  • "tcpdump -n -i хост an.ip.add.ress " для перевірки трафіку, що надходить / надсилається на an.ip.add.ress;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.