Как направить трафик каждого клиента в отдельный тоннель?
Добрый день.
На микротике подняты несколько тоннелей в удаленную сеть предприятия.
Сервер однин, учетные записи разные.
На микротике так же поднят VPN сервер для авторизации удаленных клиентов. Это необходимо больше для подмены адресов клиентов. Но суть в том, что весь трафик идет через микротик.
В локальной сети микротика также есть несколько клиентов, которые должны получать доступ к рабочему серверу. (на сервере звонилка и база данных).
Проблема заключается в том, что при отсутствии add check-gateway=ping distance=50 dst-address=10.0.0.0/8 type=prohibit пинг на удаленный сервер проходит, но сервисы не работают (не подключается IP звонилка, не загружается CRM система). Я понимаю, что это правило не должно по логике влиять на работоспособность, но оно работает (простите за такие глупые комментарии). Маскарадинг для все тоннелей включен.
Подскажите пожалуйста, возможно я неверным путем совсем пошел и нужно реализовать схему иначе.
Заранее спасибо.
По имеющимся данным непонятно какие у вас тоннели, каким образом туда должен уходить траффик. VPN сервер тоже микротик? "В локальной сети микротика..." — что за локальная сеть?
Клиенты, которые подключаются по pptp не нуждаются в наличии правила add check-gateway=ping distance=50 dst-address=10.0.0.0/8 type=prohibit почему-то.
На скрине маршрут автоматом созданный при подключении нескольких pptp-client на микротике, через которые и нужно гонять рабочий трафик звонилке и базе.
Семен Свиридов: Раз уж мы начали разбираться, убедительно прошу объяснить необходимость разных тоннелей на один и тот же адрес, в одну и ту же точку? Уверен, что мы сможем решить поставленную задачу более эффективно и просто.
Да, я прошу прощения в очередной раз что, возможно, недостаточно корректно пояснил задачу.
Сотрудники работают в колл центре. Все удаленщики (работают из дома). На офисе pptp сервер PPTP_1. Я со своим микротиком промежуточное звено с белым IP и являюсь pptp_2 сервером для них и клиентом для офиса. Каждому сотруднику выдан свой логин и пароль. Адрес PPTP_1 сервера один для всех нас. Я и еще несколько человек коллег работаем в одной лок. сети. Остальные подключаются по pptp ко мне. Все рабочие vpn соединения до удаленного офиса поднимаю я у себя. Это необходимо, чтоб у все сотрудников светился IP Киеивстара. Требование такое. Суть в том, чтоб трафик от каждого конкретного клиента на Mikrotik ходил в свой тоннель до PPTP_1.
То есть pptp_2_Client_A идет по тоннелю для PPTP_1_Client_A, "B" идет в "В" и так далее.
Схема стала понятна. Однако, я до сих пор не понял необходимость поднятия нескольких тоннелей из PPTP_2 в PPTP_1. Если весь трафик в результате сходится в одной точке (PPTP_1), то какую бы цель вы не преследовали, более одного тоннеля здесь не нужно, это неэффективная избыточность. Сделать имитацию traffic engineering таким образом не выйдет, делить соединения, которые приходят в одну и ту же точку... Словом, я действительно не понимаю, возможно есть какой-то тайный смысл, о котором Вы не рассказали.
В общем случае, мне схема видится следующей.
Любые удаленные клиенты поднимают соединения на PPTP_2. Для них это является шлюзом в свою корпоративную локальную сеть, и, возможно, в интернет. Больше им знать ничего не нужно: подняли соединение - отправляем туда весь трафик.
Далее PPTP_2. Это уже сам себе сервер, который прекрасно управляет всей существующей инфраструктурой. Он все знает обо всех пользователях как локальных, так и удаленных. И локальные, и удаленные видят друг друга и работают словно бы они находились в одной локалке. Единственная разница - отсутствие L2 уровня между DHCP-клиентами и PPTP-клиентами.
Теперь мое видение роли PPTP_1. Насколько я понял, он необходим исключительно для того, чтобы через него все клиенты попадали в интернет, якобы они сидят с его внешнего IP. Так ведь нет ничего проще. Мы поднимаем ОДИН любой тоннель (PPTP, IP, OVPN, L2TP...) между PPTP_1 и PPTP_2.
Теперь представим, что у нас есть удаленный пользователь А, получающий на PPTP_2 адрес 192.168.88.2 (подсеть 192.168.88.0/24). Адрес на PPTP_1 - 1.1.1.1, на PPTP_2 - 2.2.2.2.
Перво-наперво создадим на PPTP_2 таблицу роутинга pptp1:
# Если клиент идет в локальную сеть
/ip route rule add src-address=192.168.88.2 dst-address=192.168.88.0/24 action=lookup table=main
# Во всех остальных случаях отправлять трафик в pptp1
/ip route rule add src-address=192.168.88.2 action=lookup table=pptp1
Таким образом, 192.168.88.2 подключится к PPTP_2, будет прекрасно общаться с другими клиентами на этом роутере, а в "интернет" выходить через PPTP_1. Вышеприведенные правила схематичны, приведены исключительно для понимания концепции. Надеюсь, это понятно.
Dmitry Tallmange: Спасибо. Возможно, я не передал суть до конца.
Я попробую просто взять конкретный пример.
Сидит сотрудник дома. У него есть учетка, выданная предприятием (сервер PPTP_1). Например: user1.
Утром user1 должен запустить рабочий VPN, запустить звонилку с CRM и работать. На сервере контролируют IP адрес, с которого клиент присоединился к сети. Он может ходить из дома и в обход моего микротика, напрямую до PPTP_1. Но тогда начнуться вопросы, с какого провайдера он вышел.
Также, я не могу на своем микротике поднять один тоннель до предприятия (что было бы гораздо проще и логичнее) поскольку в таком случает на PPTP_1 будет авторизоваться только одна учетка, опять таки возникнут вопросы. + Если я всех сотрудников направлю в один тоннель до предприятия, мне не хватит ширины канала. Поскольку до PPTP_1 более 20 Мбит/с на один тоннель скорость не поднимается. Хочу обратить внимание, что доступа к настройкам и параметрам PPTP_1 у меня нет никакого. На счет трафика. По всем тоннелям гуляет лишь рабочий трафик. PPTP_1 не раздает интернет. То есть только лишь звонилка с адресом сервера 10.3.5.xxx и ftp сервер 10.3.5.xxx. Таким образом клиент client_A прописывает единственный маршрут на локальной машине у себя (route add -p 10.3.5.0/24 192.168.0.122), где 192.168.0.122 адрес присвоенный ему микротиком. Подсеть тут не важна поскольку между собой клиенты могут не иметь никакой связи. Им лишь нужно добраться обходным путем через pptp_2 до PPTP_1. Клиенты в лок сети микротика (192.168.88.0/24) ходят тоже каждый в свой тоннель.
Надеюсь, я правильно понял Ваш вопрос и уточнил необходимые для решения вопроса детали. Заранее спасибо за терпение).
P.S. Соединение для client_A промаркировано. Маршрут также промаркирован. Правило создал вчера по вашему описанию. Пакеты ходят корректно. Загвоздка в локальных клиентах. Для них также были созданы отдельные правила. Трассировка и пинги до сервера PPTP_1 идут нормально. НО без add check-gateway=ping distance=50 dst-address=10.0.0.0/8 type=prohibit не работает сервис звонилки (в моем случае Oktell)
Поскольку до PPTP_1 более 20 Мбит/с на один тоннель скорость не поднимается.
Какая общая ширина канала до PPTP_1? Вы хотите сказать, что у вас есть 100мбит (1гбит, 10гбит), а ребята на том конце шейпят входящий трафик в тоннеле на 20мбит?
Утром user1 должен запустить рабочий VPN, запустить звонилку с CRM и работать
и сразу же
Также, я не могу на своем микротике поднять один тоннель до предприятия (что было бы гораздо проще и логичнее) поскольку в таком случает на PPTP_1 будет авторизоваться только одна учетка, опять таки возникнут вопросы
Семен Свиридов: получается, что на PPTP_1 подключения приходят с одного адреса, я не понимаю трюка) Если ребята на том конце, по вашим словам, мониторят айпи, с которых осуществляются подключения, то они плохо делают свою работу: все подключения идут с внешнего адреса PPTP_2)
Очевидно, у вас имеется пересечение адресного пространства, микротик путается.
Рекомендую пойти путем, описанным выше: создать маршрут по умолчанию в 0.0.0.0/0 для каждого тоннеля, и правилами отсечь локальный трафик. Именно все нолики, а не только 10.0.0.0/8.
Главное для них то, что они идут с Конкретного провайдера, не из blacklist-а).
Рекомендую пойти путем, описанным выше: создать маршрут по умолчанию в 0.0.0.0/0 для каждого тоннеля, и правилами отсечь локальный трафик. Именно все нолики, а не только 10.0.0.0/8
Немного недопонял. Маркируем соединения? все практически тоже самое, только 0.0.0.0/0?
Dmitry Tallmange: Спасибо огромное. Все заработало. Действительно все просто. Единственно, в маршрутах не ноли писал, потому как в рабочем тоннеле нет интернета. И пока еще не разобрался, как трафик из самого роутера направить в один из тоннелей. Пинги, получается идут после добавления правил только с локальных машин. Ну то есть без дефолтного маршрута микротик говорит -no route to host-. А в остальном, я думаю, с Вашей помощью разобрался. Еще раз спасибо.