Как разрулить несколько PPPoE подключений с одного хоста?

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
romaro
Сообщения: 17
Зарегистрирован: 14 дек 2020, 02:34

Уже несколько дней бьюсь над этой задачей, буду раз любой помощи.

Мне нужно, чтобы один из хостов в локальной сети мог подключаться к разным провайдерам через PPPoE.

Для этого я создал PPPoE сервер, который смотрит в локальную сеть и две учетные записи (PPP / Secrets).

Теперь, например, чтобы подключиться к провайдеру №1, пользователь создает PPPoE соединение, в результате которого туннель между remote address 10.10.10.2 и local address 10.10.10.1. Аналогично для провайдера №2 создастся туннель между 10.10.20.1 и 10.10.20.2.

Однако "проблема" в том, что PPPoE-сервер, который устанавливает соединение, слушает локальную сеть, в которой уже есть интернет от провайдера, через которого указанный хост вообще не должен выходить в интернет (и в файрволе я предварительно запретил для указанного хоста весь трафик кроме локального, т.е. по умолчанию локалка для него доступна, а интернет в ней как бы отсутствует).

А получается как раз наоборот: после создания PPPoE-соединения, хост подключается к локальной сети с другим IP-адресом и обходит запрет на использование запрещенного провайдера.

То есть я не понимаю, как настроить роутинг (и роутинг ли это?), чтобы все пакеты, которые приходят от 10.10.10.2, отправлялись бы на интерфейс конкретного провайдера.


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Ничего не понятно.

Комп подключается к микротику через разные pppoe, и в зависимости от того через какой, должен уходить через разных провайдеров? Так?


Telegram: @thexvo
romaro
Сообщения: 17
Зарегистрирован: 14 дек 2020, 02:34

xvo писал(а): 25 июн 2021, 00:05 Комп подключается к микротику через разные pppoe, и в зависимости от того через какой, должен уходить через разных провайдеров? Так?
Да, именно так. Комп в одной локальной сети с микротиком. На микротике собран мост. Для этого моста есть интернет по умолчанию:
Изображение

Затем я запретил для одного из хостов любой трафик вне локальной сети:
Изображение

Потом создал PPPoE сервер, который смотрит на бридж локальной сети:
Изображение

Затем для каждого провайдера отдельный секрет. Например, для провайдера 1:
Изображение

В итоге, чтобы выйти в интернет, у меня хост должен поднять PPPoE-сессию. Например, для первого провайдера:
Изображение

Но как пустить PPPoE-трафик через конкретного провайдера, я не разобрался...


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Создайте пару дефолтных маршрутов каждый через своего провайдера и с разными метками (routing mark).
И дальше пару route rule, что для src-address=такой-то, action=lookup-only-in-table table=нужная_таблица.


Telegram: @thexvo
romaro
Сообщения: 17
Зарегистрирован: 14 дек 2020, 02:34

xvo писал(а): 25 июн 2021, 09:59 Создайте пару дефолтных маршрутов каждый через своего провайдера и с разными метками (routing mark).
И дальше пару route rule, что для src-address=такой-то, action=lookup-only-in-table table=нужная_таблица.
Не работает :(

1)
Создал роут по умолчанию для первого провайдера:

Изображение

10.15.1.1 - это адрес PPPoE-сервера
10.15.1.2 - адрес PPPoE-клиента
ether2 = порт, на котором DHCP-клиент получает данные от провайдера.

Если я правильно понимаю, то теперь весь трафик, который приходит с хоста (10.15.1.2 после установление PPPoE соединения) на 10.15.1.1 должен переводиться на шлюз ether2.

2)
Потом, как вы сказали, добавил правило для таблицы маршрутизации:
Изображение

Вот как выглядит IP-конфиг с хоста:
Изображение

Может быть дело в настройке Nat? Так сейчас выглядят мои правила:
Изображение


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

1) Это не дефолтный маршрут.
Дефолтный маршут - это маршрут до 0.0.0.0/0
Он у вас должен быть через адрес гейтвея (машина провайдера), который находится за ether2

2) Тут тоже все не так - нужен только src-address клиента.

3) Ну и в NAT у вас тоже каша.
Зачем условия на src-address у уходящего через ether2?!

Маскарадов по идее у вас должно быть два - один на out-interface в сторону первого провайдера, второй - второго. Без всяких других условий.

Ну и что-то видимо связанное с vpn во внутреннюю сеть.


Telegram: @thexvo
romaro
Сообщения: 17
Зарегистрирован: 14 дек 2020, 02:34

xvo писал(а): 29 июн 2021, 23:46 Маскарадов по идее у вас должно быть два - один на out-interface в сторону первого провайдера, второй - второго. Без всяких других условий.
Спасибо за помощь! Вроде заработало, но хочу уточнить, правильно ли я все понимаю.

1)
Провайдера, который работает по DHCP, я подключил следующим образом. Посмотрел в карточке DHCP-клиента шлюз:
Изображение

И поставил его в правило роута:
Изображение

Правильно ли я понял, что этим правилом я указываю, что весь трафик, который приходит на адрес роута с меткой mosnet1 должен отправляться на шлюз, который провайдер выдает по DHCP? То есть фактически я создал таблицу маршрутизации mosnet1 и добавил в нее один роут?

2)
Затем создал правило:
Изображение

Если я правильно понял, то теперь любой пакет, отправленный с 10.15.1.2 будет попадать в таблицу маршрутизации mosnet1. При этом правило lookup only in table означает, что пакет должен быть отброшен, если нет ни одного роута, у которого в поле Routing Mark есть ссылка на данную таблицу.

3)
Маскарады тоже поправил:
Изображение

То есть у меня теперь IP-адрес любого пакета, который приходит на PPPoE-клиента или интерфейс, на за которым находится гейтевей провайдера, преобразуется с локального на адрес роутера?


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Да, теперь по всем пунктам все верно.


Telegram: @thexvo
romaro
Сообщения: 17
Зарегистрирован: 14 дек 2020, 02:34

xvo писал(а): 30 июн 2021, 21:42 Да, теперь по всем пунктам все верно.
Еще раз спасибо, что помогли разобраться! Можно последний вопрос? Есть ли техническая возможность завести в микротике некую сущность, которая будет самостоятельно отслеживать гейтвей, который провайдер выдает по DHCP? Мне кажется, что когда я жестко прописываю IP-адрес гейтвея в роуте, это не совсем надежно, т.к. провайдер, теоретически, может его изменить. Или такой фокус возможен только с PPPoE-интерфейсами (их-то я могу выбрать в качестве гейтвейя при создании роута).


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Можно добавить в dhcp-клиента скрипт, который будет отслеживать, что gateway сменился и поправлять его в маршруте.

Вечером смогу скинуть.


Telegram: @thexvo
Ответить