Страница 1 из 1

PPTP proxy для шлюзов с CARP

Добавлено: 2015-03-23 21:37:02
Lazy caT
Здравствуйте, уважаемые. :)

Нужна какая-нибудь свежая идея на тему, организовать проксирование PPTP в сторону VPN-сервера с обоих шлюзов

Что имею.
Есть два шлюза (8.4-RELEASE-p19) объединенных CARP'ом на внутренних интерфейсах, внутри сети есть VPN-сервер (mpd5 с внутренней авторизацией), с генерацией пароля в файл через web-интерфейс (сделано для того, чтобы арендованные IP-адреса пользователей не пересекались на разных серверах).
Вот такая вот схема.

Код: Выделить всё

 GW1 (MASTER)
+---+
|   | 192.168.0.2
0   0\               VPN (VPN-web)
|   | \             +-----------------+
+---+  \            |                 |
 <CARP 192.168.0.1>-0 <-192.168.0.10  0->
+---+  /            |                 |
|   | /             +-----------------+
0   0/ 192.168.0.3
|   |
+---+
 GW2 (BACKUP)
В данный момент проксирование работает через frickin (не из портов, версия из портов встает колом сразу, как и frickin-2.0 BETA2) но, уж очень он, этот frickin, ненадежный, постоянно падает и приходится его перезапускать вручную. И не факт что он правильно слетит (можно было бы написать скрипт его перезапускающий), он может в памяти висеть и в подвешенном состоянии, т.е. прога запущена а подключения не принимает.
(PPTP и GRE идут не через CARP а непосредственно с внутреннего интерфейса шлюза через который идет подключение.)

Пробовал натить GRE и форвардить PPTP. Работает, только вот с одним шлюзом, который в связке является мастером,
при попытке подключения через второй шлюз, PPTP и GRE в обратную сторону идут через мастер, в итоге у клиента ошибка 800.
(если подключение идет через GW2->CARP->VPN то обратно идет VPN->CARP->GW1)

Может есть какая-нибудь альтернатива? Очень нужно прокинуть PPTP с ОБОИХ шлюзов внутрь.
Может какие мысли есть на счет, организовать проксирование стандартными, или не совсем стандартными, средствами FreeBSD, не используя frickin?

Отправлено спустя 1 час 10 минут 35 секунд:
Забыл добавить.
Ещё одна причина по которой хочу отказаться от использования frickin.

При работе frickin возникают проблемы, в виде ошибки 807 (Возможной причиной может быть неполадка в передаче посредством виртуальной сети из-за некачественного интернета или превышение максимально возможной нагрузки виртуального сервера сети.), в Win7. Как я в последствии понял, проблема с frickin, в "железных" роутерах это называется "PPTP passthrough". Причем проблема не со всеми Win7, а только с теми которые подключаются из сетей с "железными" роутерами, с включенным "PPTP passthrough", отдельных моделей, типа ASUS, и то, блин, не всегда а через раз... Иногда работает иногда нет. :(
При подключении же этих клиентов на VPN-сервер, который напрямую "смотрит" в инет, проблем с подключением не возникает.

Моя виртуалка с Win7 через TP-Link WR741ND с "PPTP passthrough" подключается через frickin всегда без проблем.

PPTP proxy для шлюзов с CARP

Добавлено: 2015-11-26 15:27:23
Alex Keda
Вообще нифига не понял :(

И, походу, не я один...

PPTP proxy для шлюзов с CARP

Добавлено: 2015-11-26 19:42:52
Lazy caT
Так просто же всё. :)

Хочу настроить проксирование PPTP через шлюзы на PPTP сервер который находится внутри сети за шлюзами.
Но, настроить его не через сторонние "приблуды", типа frickin, а средствами FreeBSD.

Сейчас всё выглядит вот так:
Drawing2.png
т.е.:
В данный момент проксирование работает через frickin (не из портов, версия из портов встает колом сразу, как и frickin-2.0 BETA2) но, уж очень он, этот frickin, ненадежный, постоянно падает и приходится его перезапускать вручную. И не факт что он правильно слетит (можно было бы написать скрипт его перезапускающий), он может в памяти висеть и в подвешенном состоянии, т.е. прога запущена а подключения не принимает.
(PPTP и GRE идут не через CARP а непосредственно с внутреннего интерфейса шлюза через который идет подключение.)
Всё красиво, всё работает но, frickin периодически "отваливается" и раньше приходилось его перезапускать вручную - очень неудобно...
Сейчас, есть скрипт который мониторит состояние frickin'а и, в случае чего, его перезапускает.

А когда я пытался настроить PPTP форвардинг получалось вот это:
Drawing1.png
т.е.
Пробовал натить GRE и форвардить PPTP. Работает, только вот с одним шлюзом, который в связке является мастером,
при попытке подключения через второй шлюз, PPTP и GRE в обратную сторону идут через мастер, в итоге у клиента ошибка 800.
(если подключение идет через GW2->CARP->VPN то обратно идет VPN->CARP->GW1)
Зачем: чтобы был единый сервер с единой, локальной, базой данных паролей юзеров, и единым адресным пространством на PPTP сервере для подключений через оба шлюза (подключенных к разным провайдерам)...
Чтобы не писать разные pool'ы на каждом из шлюзов и разводить пользователей по каждому PPTP серверу.

PPTP proxy для шлюзов с CARP

Добавлено: 2015-12-04 1:12:56
Amadeus
Однако....)
Так просто же всё.
Тогда это же можно было решить сразу, не спрашивая совета в формулировке

1) Как сделать?
2) Объясните подробнее
3) Зачем? Тут же просто все!

Я обычно, после слово "просто" прошу показать мне, несмышлёному дураку как это делать.)

А теперь по делу.
В общем случае
Но, настроить его не через сторонние "приблуды", типа frickin, а средствами FreeBSD
Кто видел, что FreeBSD - это прокси сервис из коробки?) Руки поднять. Т.е если будет задача проксирования, например, tcp - мы тоже не будем долго и упорно кушать кактус, вместо того, что бы поставить, haproxy/nginx/relayd
В данной формулировке, то что у вас реализовано (с поисками более стабильной версии/среды для ее запуска) - наиболее +- оптимальное решение. Если все таки хотите упорно избавиться от этого типа прокси - посмотрите в сторону relayd и раздницы его работы на FreeBSD + pf и OpenBSD + pf.

Есть понимание, того, что если кто то такое не реализовывал уже в точности, то ВСЕ что вы написали, надо воспроизводить у себя, дабы дать вам нормальный совет?:)

Касательно вот этого
Пробовал натить GRE и форвардить PPTP. Работает, только вот с одним шлюзом, который в связке является мастером,
при попытке подключения через второй шлюз, PPTP и GRE в обратную сторону идут через мастер, в итоге у клиента ошибка 800.
(если подключение идет через GW2->CARP->VPN то обратно идет VPN->CARP->GW1)
Это логично, так как у вас, судя по схеме, carp используется только для резервирования defaultrouter, грубо говоря. Вы что ожидайте на выходе увидеть, в ответе от сервера, если у него стоит сервер Х там, ?)

Резюмируя
1) Собирайте тестовый стенд и вперед). pf + binat + relayd, например. Ну и фибы. Т.е делать кастомную маршрутизацию по условиям.