LINUX.ORG.RU
ФорумAdmin

Создание нескольких VPN PPTP соединений к одному IP под Centos 7

 , ,


0

1

Доброго времени суток коллеги

Вот собствено наткнулся на проблемку, что неполучется создать несколько одновременно работающих подключений к одному IP для нескольких клиентов (виртуальных машин). Можно ли такое сделать для PPTP или в крайнем случае для OpenVPN?

И еще один попутный вопрос... Как проверить работоспособность VPN который уже подключился но есть сомнения что можно пройти дальше самого сервера к которому подключился? Т.е. хочу сделать переодическую, автоматическую проверку работоспособности канала с помощью скрипта на bash или python. Что-то типа ping 8.8.8.8. Только не знаю как послать это с нужного конца тунеля и чтобы работало.

P.S. Не обязательно под Centos 7, т.к. думаю Debian решения тоже можно будет адаптировать.

С уважением, Евгений.

а почему PPTP он же дырявый всю дорогу был, OpenVPN лучший выбор

axelroot
()

Вот собствено наткнулся на проблемку, что неполучется создать несколько одновременно работающих подключений к одному IP для нескольких клиентов (виртуальных машин)

В сымсле один сервер с одни IP к которому подключаются несколько клиентов с разных IP? Или все клиенты за одним NATом?
Первое — стандартная схема работы любого VPN-сервера, со вторым могут быть какие-то трудности у PPTP (там есть какие-то тонкости их-за того что он использует собственный транспортный протокол).

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Дырявость в моем случае значения не имеет, это я понимаю.

Рабочая ситуация: Есть грубо один сервер с 1 IP. (ну это для просто для примера и понимания проблемы) Есть 2 виртуальные машины. Они прекрасно подключаются через фаирвол к этому одному IP и друг другу не мешают.

Желаемая ситуация: Есть линукс сервер, который можно было бы назвать диспетчер VPN подключений. Виртуалки даже не подозревают о существовании VPN (ну или того что ходят в инет по VPN). А линукс сервер должен обеспечить каждой из них независимый рабочий канал к одному IP на удаленном VPN сервере. Смысл в том что на выходе у них (виртуальных машин) будут разные IP.

Отсюда вопрос, возможно ли такое. Мне думается да... хотя и нестандартная задача.

merlin-shadow
() автор топика

Если это поможет я готов достойно оплатить консультацию в wmz.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

Отсюда вопрос, возможно ли такое.

Возможно

хотя и нестандартная задача.

Стандартней некуда. Вариантов решения попой кушай, все от конкретной ситуации зависит и ваших знаний (в смысле чем привычно решать).

anc ★★★★★
()
Ответ на: комментарий от anc

Sounds like a plan! :)

Пытаюсь решать стандартным ppp и pptp, статической многотабличной маршрутизацией, iptables, crontab, bash (python) для скриптования. Ну и все под ESXi c vlan.

Если опишите несколько вариантов то тогда можно будет выбрать наиболее удобный.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

статической многотабличной маршрутизацией, iptables,

Так вы уже все описали. Будут частные вопросы приходите. Единственное присоединюсь к большинству pptp не рекомендую.

anc ★★★★★
()
Ответ на: комментарий от anc

Ну так у меня 2 конкретных вопроса. pptp выдает ошибку припытке подлючиться с тогоже сервера к одному и тому же VPN серверу (IP). Как решить эту проблему?

И вторая проблема - как проверить работает ли соединение? В смысле не поднят ли интерфейс или нет, а имнно пропускает ли он пакеты дальше себя или нет.

А то что я описал, работает если на каждое VPN соединение есть отдельный удаленный IP (сервер). Но к сожаление этого не достаточно.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

tcpdump и если я понял Вас правильно, то Вы хотите на одном порту повесить 2 впн ? Или может под 1 логином ? Сумбурно немного обьясняете. Если Вы и вправду хотите чтобы Вам помогли, то нарисуйте простенькую схемку. Так будет проще Вам помочь.

NemesisSOAD
()
Ответ на: комментарий от merlin-shadow

Ну так у меня 2 конкретных вопроса. pptp выдает ошибку припытке подлючиться с тогоже сервера к одному и тому же VPN серверу (IP). Как решить эту проблему?

Нужно чтобы либо на сервере, либо на клиентской стороне использовались разные IP для разных соединений.

И вторая проблема - как проверить работает ли соединение? В смысле не поднят ли интерфейс или нет, а имнно пропускает ли он пакеты дальше себя или нет.

Ну например так: поднять маршрут к 8.8.4.4 через один туннель, а к 8.8.8.8 через другой и запретить трафик к этим хостам через другие интерфейсы. Пингать эти хосты с ключиком -I.

anto215 ★★
()
Последнее исправление: anto215 (всего исправлений: 1)
Ответ на: комментарий от anto215

Нужно чтобы либо на сервере, либо на клиентской стороне использовались разные IP для разных соединений.

Вы вот сами поняли что написали?

anc ★★★★★
()

могу помочь с задачей но надо решать исходя из ТЗ и уже потом подбирать нормально решение.

MikeDM ★★★★★
()
Ответ на: комментарий от anc

Я да. Для двух соединений хотя бы на одном из концов должны быть разные ипишники, разные интерфейсы или хотя бы алиасы. Причина в том, что 47 протокол (gre) не имеет портов, как tcp-udp, поэтому невозможно определить какому из двух туннелей пакет gre адресован.

anto215 ★★
()
Ответ на: комментарий от anc

Да бог с ними. Пускай остаются в неведении.

Не люблю ипитаблесы. Файрволлы для слабаков.

anto215 ★★
()
Ответ на: комментарий от NemesisSOAD

Имеется ввиду один Peer pty «/usr/sbin/pptp 1.3.1.9 --nolaunchpppd» и да один логин, поставщик VPN позволяет несколько подключений с одним логином.

Вы хотите на одном порту повесить 2 впн? ну тут я не уверен... просто запускаю

/etc/ppp/peers/vpn1 pty «/usr/sbin/pptp 1.1.1.1 --nolaunchpppd» name 11111 remotename PPTP require-mppe-128 file /etc/ppp/options.pptp ipparam vpn1

Ну и пытаюсь подключить /etc/ppp/peers/vpn2 с теми-же параметрами. Если с разных виртуалок подключаться то проблем нет. А если с одного сервера то не работает. Вроде логично, что не работает. Но вот как заставить работать непонятно.

merlin-shadow
() автор топика
Ответ на: комментарий от anto215

Это реальное решение одной из моих проблем.

Спасибо большое.

merlin-shadow
() автор топика
Ответ на: комментарий от MikeDM

Какжется есть идея как попроще и кратко изложить суть задачи.

Имеется VPN провийдер имеющий 8 серверов (8 разных IP). Он дает возможность подключаться одновременно с 2-3х устройств без дополнительной платы. Подключаться можно и на один и тот-же сервер используя один и тот-же аккаунт.

Отсюда если мы имеем 8 виртуалок то все работает ок. Я на линукс сервере создаю 8 vpn соединений и все почти идеально. Но что делать если виртуалок 16 или 24. Удаленных IP для подключения всего 8. Т.е. на линукс сервере мне нужно каким-то образом подключиться 2-3 раза к одному и тому-же удаленному IP c одними и темиже учетными данными хотя с одними или с другими роли не играет здесь чисто сетевая проблема.

Ну а в реале скорее всего нужно будет гораздо больше 3-х соединений к одному и томуже удаленному серверу.

В данный момент я вижу 2 варианта решения проблмы:

1) Очень некрасивый екстенсивный:

Сделать кучу виртуалок с линукс серверами диспетчерами VPN. Довольно громоздко, не эффективно по ресурсам да и по автоматическому управлению данным хозяйством и планированию сети довольно сложно. Хотя как мне кажется реально.

2) Красивый (если это реально): Использовать статико-динамическую маршрутизацию (имеется ввиду динамически изменяемая скриптами), iptables с маркировкой пакетов и как-то разруливать их по разным локальным tap устройсвам. Но я толком такого раньше не делал (маркировку пакетов и маршрутизацией по этим маркерам)...

Если идея понятна, и реализуема плиз хелп.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

Да тут имхо всем не нравиться, во всяком случае то что пока представлено в вашем изложении задачи.
У меня, так до сих пор и не сложилась картинка. Не в плане, что именно Вы хотите как совсем частную задачу, это вы описали, а в плане общей картины что достигнуть хотим этими «1-8-20-100500 туннелей».

anc ★★★★★
()
Ответ на: комментарий от merlin-shadow

От заказчика и моего желания оптимизировать

я делал разную херню по желанию клиента НО всегда надо использовать подход не «хочу!!!» а надо «надежно» - поэтому советую либо с клиентом аналитику проблемы провести либо искать более серьезные выходы из ситуации.

PS не хочешь на лоре светить ТЗ и клиентом, стучись в приват. почта в профиле. поболтаем. отконсультирую тебя тет а тет. беру недорого.

MikeDM ★★★★★
()
Ответ на: комментарий от MikeDM

я делал разную херню по желанию клиента НО всегда надо использовать подход не «хочу!!!»

Поддержу, но еще бывает вариант «хрен с вами, „обойду“ вам же потенциально хуже будет, но я вас предупреждал».

anc ★★★★★
()

Почему нельзя сделать одно подключение и раздавать уже на виртуалки? Так будет проще как со стороны мониторинга и обслуживание впн канала, потому что подключение будет в одном месте а не в 24 или сколько там хотите виртуалок. Это как я понял что хотите реализовать, но почитав тред видно что каждый из прочитавший пост понял его по своему.

anonymous
()
Ответ на: комментарий от anc

То о чем вы спрашиваете никак не поможет ни Вам, ни мне решить данную задачу. И я не обсуждаю с кем бы то нибыло, детали проектов моих клиентов. Простая деловая этика.

Если не можете помочь, то нечего и обсуждать.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

Ты имеешь ввиду site to peer? Частный случай site to site получается, стандартная ситуация. Маршруты подправь. Либо если подсети у виртуалок разные совсем - в gre заверни

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 3)

А, pptp, сорри, оттупил, думал про ipsec. Короче pptp это peer to peer протокол. Он про твои виртуалки не знает. Делаешь нат точно если бы это был обычный выход в инет и настраиваешь маршрут 32 маской на впн-сервер для адреса сервера назначения. Все.

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Да я так все и сделал, ну или почти так. Правильно это должно быть как прозрачное проксирование только через VPN. Отдельный vlan для этого. Проблема заключается в другом... как с одного Linux сервера, подключить 2+ pptp клиента к одному удаленному PPTP серверу :)

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

как с одного Linux сервера, подключить 2+ pptp клиента к одному удаленному PPTP серверу :)

Через попу, но занатить например. Т.е. выпускать с какого нибудь локального адреса (можно алиасами/другими_интерфейсами(хоть br) тоннами поднять) Работать, даже возможно будет. Но возвращаемся к вопросу зачем?
Требования заказчика. И что? Заказчик может и боинг из «говна и палок» попросить построить. Читаем договор внимательно, технические требования/задание и не ведёмся на развод «построй мне дворец из этого корыта.» Обоснований того что pptp «Г» вагон и маленькая тележка, а выставлять требования которые предусматривают «костылестроеие» это еще и саботирование работы со стороны самого заказчика.

anc ★★★★★
()
Ответ на: комментарий от merlin-shadow

как с одного Linux сервера, подключить 2+ pptp клиента

когда пакеты gre начнут приходить на один интерфейс с одного и того же ip но в разные клиенты, мы не сможем понять куда этот пакет девать, потому что нет dst-port у gre.
это значит, что больше одного богомерзкого подключения сделать нельзя не просматривая пакеты в которых есть id клиента
если посмотреть в пакет, узнать id клиента и он уникальный, что не всегда (привет windows), можем с потерей производительности их роутить.
ок, google://pptp passthrough
Юзеры за NAT'ом, нужно сделать PPTP VPN passthrough...? мда, 11 лет прошло, лучше проверить как называются эти модули в нашем дистре в 2016 году
google://pptp over nat centos
http://tt.erinome.net/2015/10/839
мы за несколько кликов узнали как называются модули для centos
почему тебе за это деньги платят? мне реально завидно
ок, выбрать самый конченый протокол из двух, ок, не знать что такое gre, даже нормально незнать что такое nat. но не уметь гуглить и брать за это деньги...

system-root ★★★★★
()
Ответ на: комментарий от system-root

Че ты такой злой, денег мало получаешь? :)

За те деньги что я это делаю, вы ребята и не почесалисьбы. Это больше для души в данный момент чем для заработка.

Задачу именно в этом плане я сам себе поставил, т.к. ищу способы оптимизации инфраструктуры и ну мне просто это интересно.

По поводу nat, gre и модулей да это все давно уже используется и ты бы это понял если бы внимательно прочитал топик. Только этого слегка маловато для решения данной задачки.

Вот anc все понял, спасибо за идею, слегка екстенсивный вариант, но зато реализуемый без сверх глубоких знаний в сетях.

Эээ... зачем? Чтоб одна машина разом два адреса имела?

merlin-shadow
() автор топика
Ответ на: комментарий от upcFrost

Эээ... зачем? Чтоб одна машина разом два адреса имела?

Да не нужно это одной машине, это нужно разным машинам, которые должны иметь доступ через этот прозрачный VPN прокси. Но так как отдельных серверов (IP) у поставщика VPN меньше, чем у меня машин, вот нужны всякие извращения.

Зачем в принципе это нужно, чтобы освободить сетевую посистему винды от обязанности управлять VPN соединеним, с чем под большими нагрузками она справляется весьма паршиво. А вот просто сетка без VPN работает четко и стабильно.

merlin-shadow
() автор топика
Ответ на: комментарий от merlin-shadow

Задачу именно в этом плане я сам себе поставил

Поперхнулся. Да вы любитель «в гамаке и стоя».

способы оптимизации инфраструктуры и ну мне просто это интересно.

Илюша может ну их нафиг эти разборки оптимизации, пойдем домой.

anc ★★★★★
()
Ответ на: комментарий от merlin-shadow

Да почему извращения? я просто правда туго догоняю что ты пытаешься сделать. Обычно либо туннель между впн-серверами и в него заворачиваем трафик от клиентов, либо обычный гейт и туннели поднимают сами клиенты. Есть ещё упоротый вариант поднять n туннелей и держать их, динамически перенастраивая правила маршрутизации для клиентов в эти туннели, но это какая-то чушь

upcFrost ★★★★★
()
Ответ на: комментарий от merlin-shadow

ну тогда это дело решается скриптами для интерфейсов. как клиент поднялся - скрипт проверяет что есть в наличии и вписывает новый маршрут и вероятно новый nat специально для этого клиента. Нафига так делать я хз, но если очень хочется...

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

где-то близко, но немного сложнее. Спасибо всем за помощь. Попробую как-то реализовать.

merlin-shadow
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.