RB2011UIAS-RM
Ситуация: имеем 3 провайдера и 3 независящих друг от друга офиса (см.рис. http://s018.radikal.ru/i525/1509/7c/f4d9e20a4f90.jpg). Настройку микротика взял здесь (http://geektimes.ru/post/186284/). Функционал именно тот, что нужен. Реализована схема резервирования следующая:
office1: ISP1->ISP2->ISP3
office2: ISP2->ISP1->ISP3
office3: ISP1->ISP2->ISP3
Проблема: криво работает проброс портов, а именно:
1. Очень редко обращение к любому внешнему интерфейсу (ether6, ether7, ether8) по любому из портов (8080, 8081, 8082) приводит к правильному срабатыванию всего задуманного функционала. Т.е. мы нормально попадаем на соответствующий WEBLocal. Но это происходит о-о-о-очень редко.
2. Как правило работает только следующий вариант:
a. На WEBLocal_0 можно попасть только обратившись на внешний интерфейс ether6 на порт 8080
b. На WEBLocal_1 можно попасть только обратившись на внешний интерфейс ether7 на порт 8081
c. На WEBLocal_2 можно попасть только обратившись на внешний интерфейс ether6 на порт 8082
все остальные комбинации внешних интерфейсов и портов не приводят к попаданию на нужные WEBLocal (в этом варианте WEBLocal получают сегмент TCP на установление соединения и переходят в режим SYN-RECEIVED, но на этом всё останавливается).
Вопрос: что допилить в настройках, чтобы всё нормально работало постоянно?
Настройка микротика:
Три провайдера. Криво работает проброс портов.
-
- Сообщения: 12
- Зарегистрирован: 01 сен 2015, 10:30
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
-
- Сообщения: 12
- Зарегистрирован: 01 сен 2015, 10:30
vqd писал(а):теперь аналогично на forward и будет счастье
Если можно поконкретней, что надо для forward?
Ведь указанные правила работают так:
Правило 1
Если в пакете пришедшем на первый интерфейс (ISP 1) в адресе назначения указан IP адрес 206.188.193.174(ISP 1), то маркируем соединение именем (ISP 1 -> Input)
Правило 2
Если исходящий пакет принадлежит соединению с маркировкой (ISP 1 -> Input), то для него используем маршрут ISP 1
Т.е. в п.1 мы маркируем соединение, а в п.2 направляем (маршрутизируем) ответ.
Что делать в правиле с forward?
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
ну все верно, только вы на Input Это делаете, а это соединения для самого роутера, не транзит.
Транзитные соединения идут через forward а это как раз и есть ваш случай.
Тобиш на форваре размечаете и на преороутинге отправляете обратно
Транзитные соединения идут через forward а это как раз и есть ваш случай.
Тобиш на форваре размечаете и на преороутинге отправляете обратно
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 12
- Зарегистрирован: 01 сен 2015, 10:30
С forward/prerouting такая же ситуация, как и с input/output. Т.е. поменял я правила:
на правила
Кривость работы проброса портов осталась. Т.е.
- на WEBLocal_0 можно зайти только с интерфейса ether6 по порту 8080
- на WEBLocal_1 можно зайти только с интерфейса ether7 по порту 8081
- на WEBLocal_2 можно зайти только с интерфейса ether6 по порту 8082.
И при этом заметил такую особенность. После замены правила, если раньше с winbox в таблице IP-Firewall-Mangle в столбце Bytes и Packets напротив правил c input, при обращении извне увеличивались значения, то после замены на forward в этих столбцах стоит постоянно "0", т.е. ни один пакет через эти правила не проходит.
Код: Выделить всё
add action=mark-connection chain=input dst-address=206.188.193.174 in-interface=ether6 new-connection-mark="ISP 1->Input" passthrough=no
add action=mark-routing chain=output connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
на правила
Код: Выделить всё
add action=mark-connection chain=forward dst-address=206.188.193.174 in-interface=ether6 new-connection-mark="ISP 1->Input" passthrough=no
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
Кривость работы проброса портов осталась. Т.е.
- на WEBLocal_0 можно зайти только с интерфейса ether6 по порту 8080
- на WEBLocal_1 можно зайти только с интерфейса ether7 по порту 8081
- на WEBLocal_2 можно зайти только с интерфейса ether6 по порту 8082.
И при этом заметил такую особенность. После замены правила, если раньше с winbox в таблице IP-Firewall-Mangle в столбце Bytes и Packets напротив правил c input, при обращении извне увеличивались значения, то после замены на forward в этих столбцах стоит постоянно "0", т.е. ни один пакет через эти правила не проходит.
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
Я писал "теперь так же для форварда"
Про замену правил я ничего не писал )))
Про замену правил я ничего не писал )))
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 12
- Зарегистрирован: 01 сен 2015, 10:30
Да, я не правильно понял. Сейчас добавил к существующим input/output ещё по два правила на forward/prerouting в итоге получилось по 4 правила на каждый из 3-х интерфейсов, в виде:
но результат тот же , что и при двух правилах input/output. Достучаться можно только по действующему сейчас интерфейсу на соответсвующий WEBLocal.
Я тут экспериментировал и получил требуемый функционал, если input/output заменить на prerouting, т.е. если оставить по 2 правила, но оба с prerouting
всё работает доступ со всех интерфейсов, единственная проблема, я не знаю насколько это правильно.
Код: Выделить всё
add action=mark-connection chain=input dst-address=206.188.193.174 in-interface=ether6 new-connection-mark="ISP 1->Input" passthrough=no
add action=mark-routing chain=output connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
add action=mark-connection chain=forward dst-address=206.188.193.174 in-interface=ether6 new-connection-mark="ISP 1->Input" passthrough=no
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
но результат тот же , что и при двух правилах input/output. Достучаться можно только по действующему сейчас интерфейсу на соответсвующий WEBLocal.
Я тут экспериментировал и получил требуемый функционал, если input/output заменить на prerouting, т.е. если оставить по 2 правила, но оба с prerouting
Код: Выделить всё
add action=mark-connection chain=prerouting dst-address=206.188.193.174 in-interface=ether6 new-connection-mark="ISP 1->Input" passthrough=no
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
всё работает доступ со всех интерфейсов, единственная проблема, я не знаю насколько это правильно.
-
- Модератор
- Сообщения: 3605
- Зарегистрирован: 26 сен 2013, 14:20
- Откуда: НСК
- Контактная информация:
тут
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
стоит указать в src-address вашу сеть...
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
стоит указать в src-address вашу сеть...
Есть интересная задача и бюджет? http://mikrotik.site
-
- Сообщения: 12
- Зарегистрирован: 01 сен 2015, 10:30
vqd писал(а):тут
add action=mark-routing chain=prerouting connection-mark="ISP 1->Input" new-routing-mark="ISP 1" passthrough=no
стоит указать в src-address вашу сеть...
Немного не понятно, src-address это адрес источника пакета.
В этом правиле мы перемечаем исходящий пакет из локальных сетей для отправки через внешний интерфейс ISP1. Но локальных сетей у мну три (192.168.0.0/24 и 192.168.1.0/24 и 192.168.2.0/24). И при этом этот пакет может быть из любой из этих трёх локальных сетей.
Вопрос: что ставить в src-address?