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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this