Перейти к содержимому
Калькуляторы

Переключение провайдеров с разных роутеров

Здравствуйте. Сразу же скажу, я не являюсь специалистом по сетям, и, возможно, вопрос глуп и реализовано всё неправильно.

Имеется два Mikrotik RB951G-2HnD, с RouterOS v6.18.

Роутеры подключены к одной локальной сети 192.168.10.0/24 и имеют адреса 192.168.10.1 и 192.168.10.5.

Роутер c ip 192.168.10.1 подключен к провайдеру "TTK", а роутер с ip 192.168.10.5 подключен к провайдеру "OKBPM".

Для смены провайдера изменяется маршрут по умолчанию скриптом.

 

Роутер 192.168.10.1:

[admin@MikroTik] > ip route print detail 
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
0 A S  dst-address=0.0.0.0/0 gateway=10.192.96.1 
       gateway-status=10.192.96.1 reachable via  ether2 distance=1 scope=30 
       target-scope=10 routing-mark=viaTTK 

1 A S  dst-address=0.0.0.0/0 gateway=192.168.10.5 
       gateway-status=192.168.10.5 reachable via  bridge1 distance=1 scope=30 
       target-scope=10 routing-mark=viaOKBPM 

2 A S  ;;; defaultRoute
       dst-address=0.0.0.0/0 gateway=10.192.96.1 
       gateway-status=10.192.96.1 reachable via  ether2 distance=1 scope=30 
       target-scope=10 

3 ADC  dst-address=10.192.96.0/21 pref-src=10.192.97.25 gateway=ether2 
       gateway-status=ether2 reachable distance=0 scope=10 
...

7 ADC  dst-address=192.168.10.0/24 pref-src=192.168.10.1 gateway=bridge1 
       gateway-status=bridge1 reachable distance=0 scope=10 

[admin@MikroTik] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic 
...
5   chain=prerouting action=mark-routing new-routing-mark=viaTTK passthrough=yes 
    src-address=192.168.10.5 dst-address-list=!PrivateIPs

[admin@MikroTik] > /ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic 
0  chain=srcnat action=masquerade out-interface=ether2

 

Скрипт для использования провайдера "OKBPM":

:local defaultRoute [/ip route find comment="defaultRoute"];
:if ($defaultRoute != "") do={
 /ip route set gateway=192.168.10.5 $defaultRoute;
}

 

Скрипт для использования провайдера "TTK":

:local TTKInterface "ether2";
:local gateway [/ip dhcp-client get [/ip dhcp-client find interface=$TTKInterface] gateway];

:if ($gateway != "") do={
 :local defaultRoute [/ip route find comment="defaultRoute"];
 :if ($defaultRoute != "") do={
   /ip route set gateway=$gateway $defaultRoute;
 }
}

 

 

Роутер 192.168.10.5:

[admin@MikroTik] > ip route print detail 
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
0 A S  dst-address=0.0.0.0/0 gateway=192.168.10.1 
       gateway-status=192.168.10.1 reachable via  bridge1 distance=1 scope=30 
       target-scope=10 routing-mark=viaTTK 

1 A S  dst-address=0.0.0.0/0 gateway=10.40.100.1 
       gateway-status=10.40.100.1 reachable via  ether2 distance=1 scope=30 
       target-scope=10 routing-mark=viaOKBPM 

2 A S  ;;; defaultRoute
       dst-address=0.0.0.0/0 gateway=192.168.10.1 
       gateway-status=192.168.10.1 reachable via  bridge1 distance=10 scope=30 
       target-scope=10 

3 ADC  dst-address=10.40.100.0/24 pref-src=10.40.100.32 gateway=ether2 
       gateway-status=ether2 reachable distance=0 scope=10 

4 ADC  dst-address=192.168.10.0/24 pref-src=192.168.10.5 gateway=bridge1 
       gateway-status=bridge1 reachable distance=0 scope=10 

[admin@MikroTik] > ip firewall mangle print
Flags: X - disabled, I - invalid, D - dynamic 
0   chain=prerouting action=mark-routing new-routing-mark=viaOKBPM 
    passthrough=yes src-address=192.168.10.1 dst-address-list=!PrivateIPs

[admin@MikroTik] > /ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic 
0  chain=srcnat action=masquerade out-interface=ether2

Скрипт для использования провайдера "OKBPM":

:local OKBPMInterface "ether2";
:local gateway [/ip dhcp-client get [/ip dhcp-client find interface=$OKBPMInterface] gateway];

:if ($gateway != "") do={
 :local defaultRoute [/ip route find comment="defaultRoute"];
 :if ($defaultRoute != "") do={
   /ip route set gateway=$gateway $defaultRoute;
 }
}

 

Скрипт для использования провайдера "TTK":

:local defaultRoute [/ip route find comment="defaultRoute"];
:if ($defaultRoute != "") do={
 /ip route set gateway=192.168.10.1 $defaultRoute;
}

 

Так вот, если пинговать 8.8.8.8 через winbox с роутера, то при смене провайдера пинг не прерывается и всё работает.

Но если пинговать 8.8.8.8 с компьютера c windows, то при смене провайдера пинг не проходит. При этом после ipconfig /release, ipconfig /renew всё начинает работать как и задумывалось. Как временное решение, я отключаю интерфейс моста, затем включаю его через 10 секунд. При этом компьютер, видимо, переподключается и всё опять начинает работать как и задумывалось.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А на винде-то что настроено? Какой из микротов роутером для нее? Кто и что отдает по DHCP? Какой из мостов вы отключаете?

 

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

 

Я бы сделал вообще не так:)

вариант 1 - завел бы оба канала на один микротик и второй выкинул, смысла в нем мало.

вариант 2 - добавил бы на микротике еще одну сеть, и маршрутизировал бы через нее, а не через сеть с компьютерами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На винде ничего не настроено - получает по DHCP настройки.

DHCP для 192.168.10.1:

IP pool: 192.168.10.10-192.168.10.99

Gateway: 192.168.10.1

Network: 192.168.10.0/24

 

DHCP для 192.168.10.5:

IP pool: 192.168.10.100-192.168.10.254

Gateway: 192.168.10.5

Network: 192.168.10.0/24

 

Все интерфейсы, кроме провайдера(которые на обоих роутерах подключены к ether2), на каждом из роутеров объединены в свой bridge(bridge1). Вот этот мост я и отключаю, затем включаю чтобы сеть заработала при смене провайдере. Кстати, это не всегда срабатывает.

 

Не могу завести оба канала на один и тот же микротик, так как они территориально друг от друга отдалены на пару километров, а связь между ними беспроводная через SXT Lite5.

 

Можно поподробнее про "вариант 2 - добавил бы на микротике еще одну сеть, и маршрутизировал бы через нее, а не через сеть с компьютерами."?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На микротике маршрут кешируется в conntrack. Поэтому и не идут пинги.

можно после переключения чистить эту таблицу

ip- firewall - connection - удалить все...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.