Jump to content
Калькуляторы

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

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

Имеется два 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 секунд. При этом компьютер, видимо, переподключается и всё опять начинает работать как и задумывалось.

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

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

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

Share this post


Link to post
Share on other sites

На винде ничего не настроено - получает по 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 - добавил бы на микротике еще одну сеть, и маршрутизировал бы через нее, а не через сеть с компьютерами."?

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.