2 провайдера и L2TP

Обсуждение ПО и его настройки
Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Прочитал много документации, но все равно не могу решить следующую проблему.

У меня 2 провайдера, для одного прописан в маршрутах GW по умолчанию, а для второго провайдера, есть отдельный маршрут, по которому пакеты к нему уходят только, если они предварительно промаркированы (маркируются только пакеты, направляемые на адреса и сети из Adress List).

В Adress List так же заносятся на несколько секунд адреса, попытавшиеся подключиться к роутеру от 2-го провайдера.

Никак не могут подключиться к роутеру L2TP клиенты через 2-го провайдера (c PPTP все хорошо). Посмотрел во вкладке Connections, каждый раз при попытке подключиться, возникает исходящее соединение от роутера к L2TP клиенту, причем в качестве исходного адреса указан внешний IP адрес 1-го провайдера. Соединение направляется судя по всему по правильному маршруту, но из-за того что IP адреса инициатора туннеля и отвечающего не совпадают, туннель не подымается. Как мне исправить данную проблему? Уже весь мозг сломал...
Последний раз редактировалось Frozer 03 июн 2013, 10:47, всего редактировалось 1 раз.


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

вам нужно сделать схожую маркировку не только на цепочки prerouting, но и на цепочку input. суть на цепочке input маркировать соединения (new-connection-mark), а потом, по этой маркировке на цепочке output маркировать new-route-mark, а потом эту маркировку применять к маршруту на второго провайдера. то же самое можете сделать на первого провайдера, для успокоения души. суть в том, чтобы микротик получив пакет к себе от какого либо провайдера, отвечал ему туда же.


Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Да все так и делаю... С другими подключениями все ОК, но L2TP никак.


Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Вот что у меня в маршрутах:

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

/ip route
add check-gateway=ping comment="VTC ONLY" disabled=no distance=1 dst-address=\
    0.0.0.0/0 gateway=212.16.184.245 routing-mark=VTC scope=30 target-scope=\
    10
add check-gateway=ping comment="VLADLINK ONLY" disabled=no distance=1 \
    dst-address=0.0.0.0/0 gateway=5.120.83.1 routing-mark=VLADLINK scope=30 \
    target-scope=10
add check-gateway=ping comment="DEFAULT GW" disabled=no distance=1 \
    dst-address=0.0.0.0/0 gateway=5.120.83.1 scope=30 target-scope=10


Mangle:

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

/ip firewall mangle
add action=add-src-to-address-list address-list=VTC_Only \
    address-list-timeout=30s chain=input comment="VTC_PPPoE => Router" \
    disabled=no dst-port=1701 in-interface=VTC_PPPoE protocol=udp
add action=mark-connection chain=input disabled=no in-interface=VTC_PPPoE \
    new-connection-mark=FROM_VTC passthrough=yes
add action=mark-connection chain=prerouting disabled=no in-interface=\
    VTC_PPPoE new-connection-mark=FROM_VTC passthrough=yes
add action=mark-routing chain=output comment=\
    "Router => \"Vladlink_Only\" List" disabled=no dst-address-list=\
    Vladlink_Only new-routing-mark=VLADLINK passthrough=yes
add action=mark-routing chain=prerouting comment=\
    "Not Router => \"Vladlink_Only\" List" disabled=no dst-address-list=\
    Vladlink_Only new-routing-mark=VLADLINK passthrough=yes
add action=mark-routing chain=prerouting comment=\
    "Not Router => \"VTC_Only\" List" disabled=no dst-address-list=VTC_Only \
    new-routing-mark=VTC passthrough=yes
add action=mark-routing chain=output comment="Router => \"VTC_Only\" List" \
    disabled=no dst-address-list=VTC_Only new-routing-mark=VTC passthrough=\
    yes
add action=mark-routing chain=output connection-mark=FROM_VTC disabled=no \
    new-routing-mark=VTC passthrough=yes
add action=mark-routing chain=prerouting connection-mark=FROM_VTC disabled=no \
    new-routing-mark=VTC passthrough=yes


Как только я прописываю ручками маршруты к клиентам L2TP через шлюз 212.16.184.245, они сразу "цепляются", а без этого нет.

Подскажите пожалуйста, что не так?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

add check-gateway=ping comment="DEFAULT GW" disabled=no distance=1 \
dst-address=0.0.0.0/0 gateway=5.120.83.1 scope=30 target-scope=10

сделайте дистанцию например 10.

счётчики на маркерах увеличиваются вообще, когда пользователи пытаются подключится?


Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Завтра попробую, что-то один провайдер вообще умер сегодня.

Счетчики увеличиваются, и их адреса в Address List добавляются тоже.


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

еще посмотрите сюда, тут схожий с вами вопрос: viewtopic.php?f=3&t=3725


Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Кажется я начинаю понимать в чем загвоздка. Ответы не направляются в нужный интерфейс, т.к. я не указывал Src. Address:
add action=mark-routing chain=prerouting connection-mark=FROM_VTC disabled=no \
new-routing-mark=VTC passthrough=yes
это правило заворачивает и входящие и исходящие соединения...

И второй момент, когда я маркирую входящие соединения к локальным сетям, какую цепочку использовать, preroating или forwarding?


Frozer
Сообщения: 49
Зарегистрирован: 01 апр 2013, 13:35

Ради эксперимента добавил правило NAT

Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat action=masquerade src-address=5.120.83.47
dst-address=77.35.210.242 out-interface=VTC_PPPoE


Это исходящее соединение появляется во вкладке Connectrons почти сразу после того, как L2TP инициирует подключение. При этом оно с флагом "U". Соединение входящее с флагом "A". В логах пишется: First L2TP udp packed recieved.

Счетчики бегут, это значит, что соединение устанавливается через 2-го провайдера, но 5.120.83.47 это ведь IP адрес 1-го провайдера! Получается что NAT не прячет его адрес что-ли?

Как же все таки заставить при подключении от роутера через 2-го провайдера в качестве Src. Adress указывать именно IP адрес 2-го провайдера, а не 1-го?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

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

Flags: X - disabled, I - invalid, D - dynamic 
0 chain=srcnat action=masquerade src-address=5.120.83.47
dst-address=77.35.210.242 out-interface=VTC_PPPoE


а позвольте узнать, зачем вы задаёте src-address=5.120.83.47 и dst-address=77.35.210.242? это запись означает, пакет с адресом источника 5.120.83.47 и к получателю 77.35.210.242 будут "прикрыты" адресом интерфейса VTC_PPPoE. вы уверены что вам нужна именно такая формулировка правила? не проще ли:

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

0 chain=srcnat action=masquerade out-interface=VTC_PPPoE


Ответить