Два LTE модема в машине = Отказоустойчивость

Обсуждение ПО и его настройки
Аватара пользователя
Dragon_Knight
Сообщения: 1724
Зарегистрирован: 26 мар 2012, 18:21
Откуда: МО, Мытищи
Контактная информация:

Всем привет.

Попросили меня сделать интернет в машине посредством LTE модемов. Была куплена плата RBM33G + 2x R11e-LTE. Почти всё было настроено, но опять два провайдера, костыли, избыточность,когнитивный диссонанс :wo)(ll:
Собственно вопрос: Как правильно настроить переключение между модемами, что-бы в машине был стабильный интернет, учитывая что во первых для сотовой сети потеря 40% пакетов это норма, а во вторых машина путешествует между областями и находится на границе сотовых сетей постоянно. Т.е. едем и по очереди появляется то один то другой провайдер, то есть соединение но нету интернета, то вообще нету никакого оператора, а то оба оператора и потерь 0%.....

Собственно я сделал так на данный момент:
 1) стандартная настройка для 2 ISP

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

/ip firewall mangle
add action=change-ttl chain=postrouting new-ttl=set:64 out-interface-list=WANs passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=LTE-MTS new-connection-mark=conn_MTS passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=LTE-TINKOFF new-connection-mark=conn_TINKOFF passthrough=yes
add action=mark-routing chain=prerouting connection-mark=conn_MTS in-interface-list=!WANs new-routing-mark=route_MTS passthrough=yes
add action=mark-routing chain=prerouting connection-mark=conn_TINKOFF in-interface-list=!WANs new-routing-mark=route_TINKOFF passthrough=yes
add action=mark-routing chain=output connection-mark=conn_MTS new-routing-mark=route_MTS passthrough=yes
add action=mark-routing chain=output connection-mark=conn_TINKOFF new-routing-mark=route_TINKOFF passthrough=yes

/ip route
add distance=1 gateway=LTE-MTS routing-mark=route_MTS
add distance=1 gateway=LTE-TINKOFF routing-mark=route_TINKOFF
# Плюс 2 маршрута, которые строятся автоматически при поднятии LTE с дистанцией 20 и 10 соответственно.
 2) Дополнительное правило, которое маркирует всё в мир

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

/ip firewall mangle
add action=mark-connection chain=prerouting comment=SetRouteOut dst-address-list=!VPN new-connection-mark=conn_TINKOFF passthrough=yes src-address-list=LAN
 3) Скрипт, который выполняется раз в минуту

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

:local CFG_ISP1_NAME "LTE-TINKOFF";
:local CFG_ISP1_CONN "conn_TINKOFF";

:local CFG_ISP2_NAME "LTE-MTS";
:local CFG_ISP2_CONN "conn_MTS";

:local CFG_PING_IP "8.8.4.4";
:local CFG_PING_COUNT 15;
:local CFG_PING_TIMEOUT "1000ms";
:local CFG_PING_ERROR 8;


:local ping_isp1 [ping count=$CFG_PING_COUNT interface=$CFG_ISP1_NAME interval=$CFG_PING_TIMEOUT $CFG_PING_IP];
:local ping_isp2 [ping count=$CFG_PING_COUNT interface=$CFG_ISP2_NAME interval=$CFG_PING_TIMEOUT $CFG_PING_IP];

# Merge ISP_1 with ISP_2
:if ($ping_isp1 <= ($CFG_PING_COUNT - $CFG_PING_ERROR)) do={
	:if ($ping_isp1 = 0) do={
		/interface lte at-chat $CFG_ISP1_NAME input="AT+reset";
	}
	
	:if ($ping_isp2 > ($CFG_PING_COUNT - $CFG_PING_ERROR)) do={
		/ip firewall mangle set new-connection-mark=$CFG_ISP2_CONN [find comment="SetRouteOut"];
	} else={
		# Nothing =)
	};
};

# Merge ISP_2 with ISP_1
:if ($ping_isp2 <= ($CFG_PING_COUNT - $CFG_PING_ERROR)) do={
	:if ($ping_isp2 = 0) do={
		/interface lte at-chat $CFG_ISP2_NAME input="AT+reset";
	}
	
	:if ($ping_isp1 > ($CFG_PING_COUNT - $CFG_PING_ERROR)) do={
		/ip firewall mangle set new-connection-mark=$CFG_ISP1_CONN [find comment="SetRouteOut"];
	} else={
		# Nothing =)
	};
};
Проверить работоспособность я не могу (была найдена только одна LTE антенна), да и в целом у меня чувство что я сделал максимально неразумно, тупо и это будет глючить по чёрному :-(


Небольшой свод правил логики и ссылок:
  1. Если устройство имеет Ethernet порт, то оно обязано быть подключено через него. Компьютер, Ноутбук, Телевизор, Принтер, Камера видеонаблюдения, и т.д.
  2. Если нет возможности протянуть кабель, то найдите её, или страдайте со своими проблемами Wi-Fi дальше.
  3. Wi-Fi это сеть для мобильных устройств. Если Вы подключили свой шикарный 50" телевизор не кабелем, то без фотоотчёта, когда он лежит у Вас в кармане дальнейшего разговора не получиться. Это относится и ко всем остальным устройствам.
  4. Если Ваше устройство вызывает вопросы в работе, первое что необходимо делать: NetInstall + дальнейшая настройка вручную.
  5. Не используйте WebFig или QuickSet - это пути к глюкам и ошибкам. Только SSH или WinBox, и да, - WinBox есть под Android.
  6. name.rsc - это текстовый файл, и Вы можете его открыть блокнотом.
  7. Если Вы хотите связаться со мной для ремонта или настройки, то: Telegram ( Не благотворительность ).
  8. Мой сайт по Mikrotik: Global Zone >> MikroTik.
Erik_U
Сообщения: 1768
Зарегистрирован: 09 июл 2014, 12:33

по моему достаточно в LTE интерфейсах галочек про дефолтный маршрут
и скрипта на ресет LTE интерфейсов при отсутствии интернета.


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Приветствую, одного из уважаемых Гуру,

Это в рамках шутки, конечно ... Цены на incarnet запредельные, никогда не видел и не "щупал", но считается суперпрофи оборудованием, ставят типа на даже Гелент ... со всеми вытекающими ...

https://incarnet.ru/multikanalnii_marsh ... et_vix-tv/

http://incarnet.ru/promo/

Я, чайник, конечно, Вам помочь ничем не могу - Вы в 10-100 раз меня больше знаете ...

Наоборот спросить хочу по сборке Вашего комплекта, если можно:

1. Корпус брали, вероятно, конечно ? CA433U, родной микротиковский ?
2. Пигтейлы тоже ? Антенны c SMA разъемами как на корпусе CA433U крепятся нормально всё ?

Давно собрать хочу игрушку подобную Вашей, только мне на стационарный объект нужно - не в машину, потому и спрашиваю ... Не собирал раньше - не приходилось. А сейчас модемы R11e микротиковские появились с хорошей поддержкой, т.е. "родные" - самое время бы собрать ...

16 MB Storage на RBM33G смущают тоже ...

RB953GS-5HnT-RP не лучше будет ? (но камень у нее хуже и одно ядро ...)

Ваше мнение очень важно, подскажите, что думаете ...

Т.е.мне нужно собрать роутер с производительностью типа 750Gr3 и двумя LTE-модемами R11e или Sierra 7700 (если правильно указываю, сейчас на память точно не помню) типа как Вы сделали, но для дома. Тоже нужна балансировка и резервирование каналов ... (в перспективе, но это уже настройка, а я пока про железо)

Да есть, конечно, "готовые" роутеры Teleofis на платах Микротик, типа

4G/Wi-Fi роутер TELEOFIS GTX400 Wi-Fi (953BM2)
https://teleofis.ru/production/3g-4g-ro ... fi-953bm2/

или

4G/Wi-Fi роутер TELEOFIS GTX400 Wi-Fi (953FM2)
https://teleofis.ru/production/3g-4g-ro ... fi-953fm2/

но цены уж очень кусаются ...


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
Kato
Сообщения: 271
Зарегистрирован: 17 май 2016, 04:23
Откуда: Primorye

Dragon_Knight писал(а): 24 мар 2019, 18:52 в целом у меня чувство что ... это будет глючить по чёрному :-(
У меня в целом тоже :-(


Ca6ko
Сообщения: 1484
Зарегистрирован: 23 ноя 2018, 11:08
Откуда: Харкiв

Первое что объясните заказчику - Во время движения работать не должно, если работает то Ему крупно повезло в данный момент :) .
Пинговать советую единички (1.1.1.1) у них пинг намного короче (в 2-3 раза) чем у восьмерок.
Ну и физическое разнесение антенн на автомобиле, желательно установка антенн на разной высоте.
Проект интересен. Отпишитесь о результатах работы пожалуйста.


1-е Правило WiFi - Везде где только можно откажитесь от WiFi!
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!

Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Очень хорошая идея, по моему ... Мне очень понравилась, на стационарном объекте точно мне пригодится ...
Допил возможно требуется (по скорости переключения каналов в машине при движении), надо тестировать.
В плане идей - может скрипт расширить проверками на уровень сотового сигнала каждого оператора скажем ...
В Рос есть интересная команда :time - тоже может пригодиться, может определять якобы время, необходимое для выполнения команды на конкретной железке - можно учитывать для быстрой и универсальной работы скрипта, меняющего метку в мангл-правиле и т д...

Вот может пригодиться Вам, есть конфиг с "двухмодемного" Микротик-роутера компании Телеофис. Там IT-шники пытались изобразить резервирование и балансировку с переключениями между встроенными модемами роутера ... Думаю Вам не составит труда разобраться.

 конфиг 4G/Wi-Fi роутер TELEOFIS GTX400 Wi-Fi (953FM2)
# Update 30.08.2018

/system logging action
set 1 disk-file-count=3
/system logging
set 0 action=memory prefix=INFO
set 1 action=memory prefix=ERR
set 2 action=disk prefix=WARN
set 3 action=memory prefix=CRIT
add action=memory prefix=SYN topics=async disabled=yes
:log warning "LOGGING_CHANGED"
:delay 3s

/system routerboard settings
set init-delay=5s
/system routerboard usb
set type=mini-PCIe
:log warning "MINI-PCI ACTIVATED"
:delay 1s

:log warning "SET INITIAL PARAMETER"
:global NUM 0
:global VER [:pick [/system resource get version] 0 4]
:global MODEL [:pick [/system routerboard get model] 0 3]
:global SERIAL [:pick [/system routerboard get serial-number] 7 12]

:log warning "SETTINGS_START_INSTALL"

/system identity
set name=GTX400-953FM2-WiFi
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface ppp-client
remove [find name="ppp-out1"]
remove [find name="ppp-out2"]
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface lte apn
set [find name="default"] default-route-distance=231
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface lte
set [find name="lte1"] comment="WAN"
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface list
add name=WAN
/interface list member
add interface=lte1 list=WAN
add interface=lte2 list=WAN
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface ethernet
set [ find default-name=ether1 ] mtu=1500 name="LAN1-eth"
set [ find default-name=ether2 ] mtu=1500 name="LAN2-eth"
set [ find default-name=ether3 ] mtu=1500 name="LAN3-eth"
set [ find default-name=sfp1 ] mtu=1500 name="LAN4-sfp"
set [ find default-name=sfp2 ] mtu=1500 name="LAN5-sfp"
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface wireless security-profiles
add name=teleofis authentication-types=wpa2-psk eap-methods="" group-ciphers=aes-ccm \
management-protection=allowed mode=dynamic-keys \
supplicant-identity=TELEOFIS unicast-ciphers=aes-ccm \
wpa2-pre-shared-key=11122233344455566677788899
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 2s

/interface wireless
set [ find default-name=wlan1 ] name="LAN6-wifi5ghz" antenna-gain=1 band=5ghz-a/n channel-width=\
20/40mhz-Ce disabled=no distance=indoors frequency=auto guard-interval=long \
hw-protection-mode=rts-cts mode=ap-bridge multicast-helper=full frequency-mode=regulatory-domain \
rx-chains=0,1,2 security-profile=teleofis ssid=GTX400-5GHz tx-chains=0,1,2 country=russia \
tx-power-mode=default wireless-protocol=802.11 radio-name="GTX400953BM2$"SERIAL"" \
wps-mode=disabled mtu=1500 wmm-support=enabled adaptive-noise-immunity=ap-and-client-mode
/interface wireless nstreme
set [find name="LAN6-wifi5ghz"] enable-polling=no
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 5s

/ip firewall nat
add action=masquerade chain=srcnat comment="LAN to WAN" out-interface-list=WAN src-address=192.168.88.0/24
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface bridge
add comment="LAN" name="LAN-Bridge" mtu=1500
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface bridge port
add bridge="LAN-Bridge" comment="LAN" interface="LAN1-eth"
add bridge="LAN-Bridge" interface="LAN2-eth"
add bridge="LAN-Bridge" interface="LAN3-eth"
add bridge="LAN-Bridge" interface="LAN4-sfp"
add bridge="LAN-Bridge" interface="LAN5-sfp"
add bridge="LAN-Bridge" interface="LAN6-wifi5ghz"
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/interface list
add name=LAN
/interface list member
add interface="LAN-Bridge" list=LAN comment="LAN"
add interface="LAN1-eth" list=LAN
add interface="LAN2-eth" list=LAN
add interface="LAN3-eth" list=LAN
add interface="LAN4-sfp" list=LAN
add interface="LAN5-sfp" list=LAN
add interface="LAN6-wifi5ghz" list=LAN
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip neighbor discovery-settings
set discover-interface-list=LAN
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip dns
set allow-remote-requests=yes
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip firewall filter
add action=drop chain=input connection-state=invalid
add action=drop chain=forward connection-state=invalid
add action=accept chain=input in-interface-list=WAN protocol=udp src-port=53
add action=drop chain=input dst-port=53 in-interface-list=!LAN protocol=udp
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip firewall mangle
add action=mark-connection chain=prerouting comment="PREROUTING LAN" dst-address-type=!local in-interface=LAN-Bridge new-connection-mark=lte-out1-in-conn passthrough=yes per-connection-classifier=both-addresses:2/0
add action=mark-routing chain=prerouting connection-mark=lte-out1-in-conn dst-address-type=!local new-routing-mark=lte-out1-out-route passthrough=no
add action=mark-connection chain=prerouting dst-address-type=!local in-interface=LAN-Bridge new-connection-mark=lte-out2-in-conn passthrough=yes per-connection-classifier=both-addresses:2/1
add action=mark-routing chain=prerouting connection-mark=lte-out2-in-conn dst-address-type=!local new-routing-mark=lte-out2-out-route passthrough=no
add action=mark-connection chain=prerouting comment="PREROUTING WAN / OUTPUT WAN" in-interface=lte1 new-connection-mark=lte-out1-in-conn connection-state=new passthrough=yes
add action=mark-routing chain=output connection-mark=lte-out1-in-conn new-routing-mark=lte-out1-out-route passthrough=no
add action=mark-connection chain=prerouting in-interface=lte2 new-connection-mark=lte-out2-in-conn connection-state=new passthrough=yes
add action=mark-routing chain=output connection-mark=lte-out2-in-conn new-routing-mark=lte-out2-out-route passthrough=no
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip route
add distance=1 gateway=lte1 routing-mark=lte-out1-out-route
add distance=2 gateway=lte2 routing-mark=lte-out1-out-route
add distance=1 gateway=lte2 routing-mark=lte-out2-out-route
add distance=2 gateway=lte1 routing-mark=lte-out2-out-route
add distance=1 gateway=lte1
add distance=2 gateway=lte2
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip cloud
set update-time=no
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/system ntp client
set enabled=yes server-dns-names=\
ntp4.stratum2.ru,ntp3.stratum2.ru,ntp5.stratum1.ru,timeserver.ru
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/system note
set note="\
\n TTTTTTTT EEEEEE LL EEEEEE OOOO FFFFFF IIII SSSSS\
\n TT EE LL EE OO OO FF II SS\
\n TT EEEEEE LL EEEEEE OO OO FFFFFF II SSSSS\
\n TT EE LL EE OO OO FF II SS\
\n TT EEEEEE LLLLLL EEEEEE OOOO FF IIII SSSSS\
\n\
\n Teleofis for MikroTik RouterOS $"VER" (c) 2004-2018 http://teleofis.ru/\
\n DO NOT UPDATE FIRMWARE:\
\n Stable operation of modules only on firmware $"VER"\
\n\
\n"
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/system scheduler
add comment="TELEOFIS Scripts" interval=15m name=watchdog on-event="# Script W\
atchdog\r\
\n# Connection validation script\r\
\n# Company developer: TELEOFIS (tm) [https://teleofis.ru/]\r\
\n#\r\
\n\r\
\n# Update IP addresses\r\
\n:do {:set \$IP1 [:resolve yandex.ru]} on-error={:set \$IP1 77.88.8.8}\r\
\n:do {:set \$IP2 [:resolve google.com]} on-error={:set \$IP2 8.8.8.8}\r\
\n\r\
\n# Init variables\r\
\n:global IFACE1\r\
\n:global IFACE2\r\
\n:global IP1\r\
\n:global IP2\r\
\n:global ITER1 0\r\
\n:global ITER2 0\r\
\n:global PINGA1\r\
\n:global PINGA2\r\
\n:global PINGB1\r\
\n:global PINGB2\r\
\n:global ACTIFACE1\r\
\n:global ACTIFACE2\r\
\n\r\
\n:set \$IFACE1 [:tostr [/interface lte get 0 name]]\r\
\n:set \$IFACE2 [:tostr [/interface lte get 1 name]]\r\
\n\r\
\n# Start while checking\r\
\n:while (true) do={\r\
\n \r\
\n # Check modems in ports\r\
\n :if ([/system resource usb print count-only where vendor!=\"Linux 3.3\
.5 ehci_hcd\"] != 2) do={\r\
\n :log error \"watchdog: not found one or more mini-PCIe modems\"\r\
\n /system reboot\r\
\n :delay 1s\r\
\n }\r\
\n \r\
\n # Check act LTE1\r\
\n :if ([/interface lte print count-only where name=\"lte1\" disabled=ye\
s] = 1) do={\r\
\n :log warning \"watchdog: \$\"IFACE1\" the interface is turned off.\
\_Turn on the interface.\"\r\
\n /interface enable \$IFACE1\r\
\n :delay 15s\r\
\n }\r\
\n # Check act LTE2\r\
\n :if ([/interface lte print count-only where name=\"lte2\" disabled=ye\
s] = 1) do={\r\
\n :log warning \"watchdog: \$\"IFACE2\" the interface is turned off.\
\_Turn on the interface.\"\r\
\n /interface enable \$IFACE2\r\
\n :delay 15s\r\
\n }\r\
\n \r\
\n # Check ping first interface\r\
\n :set \$PINGA1 [ /ping count=10 interface=\$IFACE1 address=\$IP1 ]\r\
\n :if ( \$PINGA1 > 0 ) do={\r\
\n :log debug \"watchdog: PINGA1 \$\"IFACE1\" - ok\"\r\
\n :log debug \"watchdog: PINGA1 count = \$\"PINGA1\"\"\r\
\n :set \$ACTIFACE1 true\r\
\n :set \$ITER1 0\r\
\n } else={\r\
\n :log warning \"watchdog: PINGA1 \$\"IFACE1\" - no ping\"\r\
\n :set \$ACTIFACE1 false\r\
\n }\r\
\n :if ( \$ACTIFACE1 != true ) do={\r\
\n :set \$PINGA2 [ /ping count=10 interface=\$IFACE1 address=\$IP2 ]\
\r\
\n :if ( \$PINGA2 > 0 ) do={\r\
\n :log debug \"watchdog: PINGA2 \$\"IFACE1\" - ok\"\r\
\n :log debug \"watchdog: PINGA2 count = \$\"PINGA2\"\"\r\
\n :set \$ACTIFACE1 true\r\
\n :set \$ITER1 0\r\
\n } else={\r\
\n :log warning \"watchdog: PINGA2 \$\"IFACE1\" - no ping\"\r\
\n :set \$ACTIFACE1 false\r\
\n }\r\
\n }\r\
\n \r\
\n # Check ping two interface\r\
\n :set \$PINGB1 [ /ping count=10 interface=\$IFACE2 address=\$IP1 ]\r\
\n :if ( \$PINGB1 > 0 ) do={\r\
\n :log debug \"watchdog: PINGB1 \$\"IFACE2\" - ok\"\r\
\n :log debug \"watchdog: PINGB1 count = \$\"PINGB1\"\"\r\
\n :set \$ACTIFACE2 true\r\
\n :set \$ITER2 0\r\
\n } else={\r\
\n :log warning \"watchdog: PINGB1 \$\"IFACE2\" - no ping\"\r\
\n :set \$ACTIFACE2 false\r\
\n }\r\
\n :if ( \$ACTIFACE2 != true ) do={\r\
\n :set \$PINGB2 [ /ping count=10 interface=\$IFACE2 address=\$IP2 ]\
\r\
\n :if ( \$PINGB2 > 0 ) do={\r\
\n :log debug \"watchdog: PINGB2 \$\"IFACE2\" - ok\"\r\
\n :log debug \"watchdog: PINGB2 count = \$\"PINGB2\"\"\r\
\n :set \$ACTIFACE2 true\r\
\n :set \$ITER2 0\r\
\n } else={\r\
\n :log warning \"watchdog: PINGB2 \$\"IFACE2\" - no ping\"\r\
\n :set \$ACTIFACE2 false\r\
\n }\r\
\n }\r\
\n \r\
\n # All is good. Exit from while\r\
\n :if ( (\$ACTIFACE1 = true) && (\$ACTIFACE2 = true) ) do={\r\
\n :log info \"watchdog: Watchdog OK\"\r\
\n :quit;\r\
\n }\r\
\n \r\
\n # Next...\r\
\n # Check Iteration\r\
\n :if ( (\$ACTIFACE1 != true) && (\$ACTIFACE2 != true) && (\$ITER1 >= 2\
) && (\$ITER2 >= 2) ) do={\r\
\n :log error \"watchdog: No ping - connection down - Reboot!!!\"\r\
\n /system reboot\r\
\n :delay 120s\r\
\n }\r\
\n \r\
\n # First interface work, but no internet\r\
\n :if ( (\$ACTIFACE1 = false) && (\$ITER1 < 2)) do={\r\
\n :log warning \"watchdog: Reconnect \$\"IFACE1\" interface\"\r\
\n /interface disable \$IFACE1\r\
\n :delay 15s\r\
\n /interface enable \$IFACE1\r\
\n :set \$ITER1 (\$ITER1+1)\r\
\n :log warning \"watchdog: Reconnect \$\"IFACE1\" interface complet\
e\"\r\
\n }\r\
\n :if (\$ITER1 >= 2) do={\r\
\n :log warning \"watchdog: No ping interface \$\"IFACE1\" - Resettin\
g modem\"\r\
\n /system routerboard usb power-reset bus=1 duration=10\r\
\n :delay 30s\r\
\n :set \$ITER1 0\r\
\n :quit;\r\
\n }\r\
\n \r\
\n # Two interface work, but no internet\r\
\n :if ( (\$ACTIFACE2 = false) && (\$ITER2 < 2)) do={\r\
\n :log warning \"watchdog: Reconnect \$\"IFACE2\" interface\"\r\
\n /interface disable \$IFACE2\r\
\n :delay 15s\r\
\n /interface enable \$IFACE2\r\
\n :set \$ITER2 (\$ITER2+1)\r\
\n :log warning \"watchdog: Reconnect \$\"IFACE2\" interface - compl\
ete\"\r\
\n }\r\
\n :if (\$ITER2 >= 2) do={\r\
\n :log warning \"watchdog: No ping interface \$\"IFACE2\" - Resettin\
g modem\"\r\
\n /system routerboard usb power-reset bus=2 duration=10\r\
\n :delay 30s\r\
\n :set \$ITER2 0\r\
\n :quit;\r\
\n }\r\
\n}\r\
\n\r\
\n# END" policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=\
startup
add name=init on-event="# Script Init\r\
\n# Initialisation variables\r\
\n# Company developer: TELEOFIS (tm) [https://teleofis.ru/]\r\
\n#\r\
\n\r\
\n:delay 20s\r\
\n\r\
\n# Variables\r\
\n:global PINGA1 0\r\
\n:global PINGA2 0\r\
\n:global PINGB1 0\r\
\n:global PINGB2 0\r\
\n:global ACTIFACE1 false\r\
\n:global ACTIFACE2 false\r\
\n:global IFACE1 [:tostr [/interface lte get 0 name]]\r\
\n:global IFACE2 [:tostr [/interface lte get 1 name]]\r\
\n\r\
\n# Update IP addresses\r\
\n:do {:set \$IP1 [:resolve yandex.ru]} on-error={:set \$IP1 77.88.8.8}\r\
\n:do {:set \$IP2 [:resolve google.com]} on-error={:set \$IP2 8.8.8.8}\r\
\n\r\
\n# END" policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=\
startup
add interval=1m name=lte_signal_changer on-event="# Script LTE Signal\r\
\n# Changer Lte signal for lte interfaces\r\
\n# Developer company: TELEOFIS (tm) (https://teleofis.ru)\r\
\n#\r\
\n\r\
\n# Find LED LTE\r\
\n:if ([/system leds print count-only where type=modem-signal] < 1) do={\r\
\n :log warning \"lte_signal_changer: LTE LED not found...\"\r\
\n :quit;\r\
\n}\r\
\n\r\
\n# Init LTE Interface\r\
\n:local INT1 [/interface lte get 0 name]\r\
\n:local INT2 [/interface lte get 1 name]\r\
\n:local INTNOW [/system leds get [find type=modem-signal] interface]\r\
\n\r\
\n:if ([/interface lte get \$INT1 running] = true and [/interface lte get \
\$INT2 running] = true) do={\r\
\n :if (\$INTNOW = \$INT1) do={\r\
\n #:log info \"lte_signal_changer: Change to \$\"INT2\"\"\r\
\n /system leds set [find type=modem-signal] interface=\$INT2\r\
\n } else={\r\
\n #:log info \"lte_signal_changer: Change to \$\"INT1\"\"\r\
\n /system leds set [find type=modem-signal] interface=\$INT1\r\
\n }\r\
\n} else={\r\
\n :if ([/interface lte get \$INT1 running] = true and [/interface lte g\
et \$INT2 running] = false) do={\r\
\n /system leds set [find type=modem-signal] interface=\$INT1\r\
\n }\r\
\n :if ([/interface lte get \$INT2 running] = true and [/interface lte g\
et \$INT1 running] = false) do={\r\
\n /system leds set [find type=modem-signal] interface=\$INT2\r\
\n }\r\
\n}" policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-time=startup
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 5s

:global LEDSTATUS [/system leds find disabled=no]
:if ($LEDSTATUS != "") do={
/system leds
set 0 interface="LAN-Bridge" leds=user-led type=interface-transmit
add interface=lte1 leds=led1,led2,led3,led4,led5 modem-signal-treshold=-105 type=modem-signa
} else={
/system leds
add interface="LAN-Bridge" leds=user-led type=interface-transmit
add interface=lte1 leds=led1,led2,led3,led4,led5 modem-signal-treshold=-105 type=modem-signa
}
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip pool
add name=dhcp-pool1 ranges=192.168.88.10-192.168.88.250
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip dhcp-server network
add address=192.168.88.0/24 comment="For Local Bridge" dns-server=192.168.88.1 gateway=192.168.88.1 netmask=24
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip dhcp-server
add add-arp=yes address-pool=dhcp-pool1 bootp-lease-time=lease-time bootp-support=dynamic disabled=no interface="LAN-Bridge" lease-time=3d name=dhcp-server1
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/ip address
add address=192.168.88.1/24 comment="Local Bridge" interface="LAN-Bridge" network=192.168.88.0
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

#:global GPSSTATUS [/system package find name="gps"]
#:if ($GPSSTATUS != "") do={
# :log warning "GPS_ENABLE"
# /system gps
# set channel=0 enabled=yes port=usb3 set-system-time=no
# :set $NUM ($NUM+1)
# :log warning "STEP_$"NUM"_COMPLETE"
# :delay 1s
#} else={
# :log warning "GPS_NOT_USED"
# :delay 1s
#}

/system backup
save name="initial_gtx400wf_$"MODEL"fm2_$"VER""
:log warning "CREATED_BACKUP_FILE_initial_gtx400wf_$"MODEL"fm2_$"VER"";
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/file
remove [ find type="directory" ]
remove [ find type="package" ]
remove [ find type=".fwf file" ]
remove [ find type=".rif file" ]
remove [ find type="web-proxy store" ]
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

/system routerboard upgrade
:delay 0s
:set $NUM ($NUM+1)
:log warning "STEP_$"NUM"_COMPLETE"
:delay 1s

:log warning "SETTINGS_INSTALL_END"
:log warning "REBOOT"
/system reboot
:delay 0s


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Жаль что по моим маленьким вопросикам про железо не ответили :ny_tik:


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ca6ko
Сообщения: 1484
Зарегистрирован: 23 ноя 2018, 11:08
Откуда: Харкiв

to Sertik
ИМХО На стационарном объекте лучше использовать две SXT LTE kit или LHG LTE kit. Два устройства- выше отказоустойчивость. И при установке можно лучше разнести устройства между собой. ( с антеннами так не получится)


1-е Правило WiFi - Везде где только можно откажитесь от WiFi!
2-е Правило WiFi -Устройство, которое пользователь не носит с собой постоянно, должно подключаться кабелем!!

Микротики есть разные: черные, белые, красные. Но все равно хочется над чем нибудь заморочится.
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Это я знаю, спасибо. Насчет отказоустойчивости согласен. Но рассматриваю и такой вариант и такой. То, что Вы советуете у меня как-бы есть. Мне было как раз симпатично "два стационарных модема в одном Микротике". А насчет антенны разнести - это спорно. Если хороший кабель экранированный и антенны можно и двадцать метров удаление от модема делать (для "разнести" и повыше поднять вполне достаточно). У меня так сделано в одном месте - нормально всё, сигнал -69Дб.


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Аватара пользователя
algerka
Сообщения: 407
Зарегистрирован: 14 дек 2011, 12:31

Dragon_Knight писал(а): 24 мар 2019, 18:52 Собственно вопрос: Как правильно настроить переключение между модемами, что-бы в машине был стабильный интернет, учитывая что во первых для сотовой сети потеря 40% пакетов это норма, а во вторых машина путешествует между областями и находится на границе сотовых сетей постоянно. Т.е. едем и по очереди появляется то один то другой провайдер, то есть соединение но нету интернета, то вообще нету никакого оператора, а то оба оператора и потерь 0%.....
Не рассматривали вариант с организацией двух vpn туннелей до одного хоста?
В результате существенно упростите конфигурацию, не нужен будет скрипт, ускорите переключение, наружу будет всегда один ip, избавитесь от ограничения ОПСОСов и т.д. и т.п
Ну, а если фанат скриптов, то можно написать скрипт с ипользованием tool speed-test для тестирования качество каналов и в приоритете использовать, тот который на данный момент лучше.
В дальнейшем можно извратиться и объединить каналы в транк :)


Александр
Ответить