Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: [РЕШЕНО] Маршрутизация. Входящее соединение на внешний IP через VPN.  (Прочитано 3668 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн passshok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Доброго времени суток.

Задача такая.
Есть удаленный комп с настроенным OpenVPN клиентом, который постоянно пытается подключиться к OpenVPN серверу по доменному имени, обновляемому через DynDNS.
OpenVPN сервер и DynDNS клиент установлен на ноуте с Ubuntu 10.04. Ноут подключен к интернету через Ethernet. Для того чтобы был внешний IP-адрес настроено PPTP VPN подключение. Т.о. при подключении по VPN выдается внешний IP-адрес на том конце.
Вопрос заключается в следующем. Как сделать так, чтобы через этот VPN шел только OpenVPN траффик, так как трафик через VPN стоит денег? Если я убираю маршрут по умолчанию для VPN, то OpenVPN клиент почему-то не может подключиться и пакеты не приходят ни на один сетевой интерфейс. Смотрел Wireshark-ом. Если сделать маршрутом по умолчанию, то все нормально работает.
Почему не проходит входящее подключение к OpenVPN серверу?
Как сделать?

Спасибо.
« Последнее редактирование: 18 Декабря 2010, 23:17:03 от passshok »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Сыр в лукошке слопала кошка, а мышка в норке протянула ножки от того что кошка заснула в лукошке....

3 раза перечитал и не понял зачем OpenVPN ТОЛЬКО через VPN из-за того, что последний стоит денег...
Что-то Вы не так разукрасили... ИМХО.

Про маршрут по умолчанию, могу предположить, что OpenVPN сервер не находит обратоной дороги к клиенту при отсутствии дефолтного маршрута.


Пользователь решил продолжить мысль 17 Декабря 2010, 22:44:07:
На 5-ый раз понял.
Закройте на VPN все соединения таблесами, кроме соединений для OpenVPN и для работы клиента DynDNS.
« Последнее редактирование: 17 Декабря 2010, 22:44:07 от fisher74 »

Оффлайн passshok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
3 раза перечитал и не понял зачем OpenVPN ТОЛЬКО через VPN из-за того, что последний стоит денег...
Что-то Вы не так разукрасили... ИМХО.
Все просто :-) Внешний IP от провайдера доступен не везде. Внешний IP от моего провайдера стоит дороже чем PPTP VPN сервис с внешним IP. Поэтому, я выбрал второй. Но трафик ограничен некоторым объемом, поэтому хочется тратить его только по работе (входящее подключение по OpenVPN).

Цитировать
Про маршрут по умолчанию, могу предположить, что OpenVPN сервер не находит обратоной дороги к клиенту при отсутствии дефолтного маршрута.
(Нажмите, чтобы показать/скрыть)
(Нажмите, чтобы показать/скрыть)
С включенным VPN но без маршрута по умолчанию:
(Нажмите, чтобы показать/скрыть)
После этого сделал:
pa@vaio ~ $ sudo route add -host XXX.XXX.XXX.XXX dev ppp0где XXX.XXX.XXX.XXX адрес хоста с NATом из-за которого коннектится OpenVPN клиент.
Реакции опять никакой.
Мне кажется что пакеты вообще не приходят ни на один интерфейс.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
До клиента маршрут - это хорошо, а на DynDNS адрес правильный прибит?

Оффлайн passshok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
До клиента маршрут - это хорошо, а на DynDNS адрес правильный прибит?
Правильный. Для надежности перезапускал DynDNS клиент.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Не буду спорить, но перезапуская клиента Вы не обеспечиваете обновление IP-адреса на сервере DynDNS, если до последнего нет маршрута. А его нет.
Предлагаю провести эксперимент таким образом:
1. Запускаем всё с дефолтным маршрутом через VPN
2. Убеждаемся, что клиент OpenVPN "присосался" и в одной из консолей пингуем его внутри OpenVPN
3. Добавляем до NAT-шлюза клиента маршрут через ppp (как Вы выше сами писали)
4. убиваем дефолтный маршрут
На всех этапах пинг  до клиента должен скакать.

Но это только для проверки теории. Для практики - это всё ерунда, потому как у клиента, как Вы сами написали IP скачет.
Так что мне кажется, что выходом будет полное блокирование траффика средствами iptables через ppp0, кроме OpenVPN и DynDNS

Оффлайн passshok

  • Автор темы
  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Не буду спорить, но перезапуская клиента Вы не обеспечиваете обновление IP-адреса на сервере DynDNS, если до последнего нет маршрута. А его нет.
Предлагаю провести эксперимент таким образом:
1. Запускаем всё с дефолтным маршрутом через VPN
2. Убеждаемся, что клиент OpenVPN "присосался" и в одной из консолей пингуем его внутри OpenVPN
3. Добавляем до NAT-шлюза клиента маршрут через ppp (как Вы выше сами писали)
4. убиваем дефолтный маршрут
На всех этапах пинг  до клиента должен скакать.
В этой последовательности работает. Пинг есть. А вот если после этого разорвать OpenVPN соединение, ничего не меняя в маршрутах, то в этот раз входящего подключения от OpenVPN клиента уже нету. Очень странно. Думаю что в этом и есть суть проблемы.

Цитировать
Но это только для проверки теории. Для практики - это всё ерунда, потому как у клиента, как Вы сами написали IP скачет.
Так что мне кажется, что выходом будет полное блокирование траффика средствами iptables через ppp0, кроме OpenVPN и DynDNS
У какого клиента скачет? У OpenVPN клиента, который за NAT-ом IP NAT-а всегда один и тот же. Динамический адрес у моего ноута, на котором установлен OpenVPN  сервер и на котором же DynDNS клиент.

Пользователь решил продолжить мысль 18 Декабря 2010, 20:02:27:
У кого еще есть идеи?

Пользователь решил продолжить мысль 18 Декабря 2010, 23:08:05:
Ответ был найден.
Во-первых. Для того чтобы трафик только до и с определенных IP-адресов шел через VPN соединение, нужно было добавить маршрут такого вида:
sudo route add ext_host gw vpn_ext_ip ifгде:
ext_host — IP-адрес хоста до  которого должен идти трафик
vpn_ext_ip — внешний IP-адрес, выдаваемый VPN-сервером
if — название интерфейса VPN-соединения (например, ppp0).

И так тоже вроде работает:
sudo route add ext_host if
Во-вторых, нужно было заставить DynDNS-клиент отправлять IP-адрес интерфейса, на котором был поднят VPN-сервис, а не вычислять его через WEB.
« Последнее редактирование: 18 Декабря 2010, 23:08:05 от passshok »

 

Страница сгенерирована за 0.018 секунд. Запросов: 20.