К основному контенту

Mikrotik OS и автоматическое переключение на резервный канал

На складе подключили  резервный канал (Yota) , надо настроить резервирование каналов:

eth3 - Основной канал
eth4 - Резервный канал

Прописываем IP для интерфейсов:


/ip address
add address=10.8.10.100/24 broadcast=10.8.10.255 comment=LAN disabled=no interface=eth2 network=10.8.10.0
add address=192.168.15.1/24 broadcast=192.168.15.255 comment=isp2 disabled=no interface=eth4 network=192.168.15.0
add address=192.168.20.253/24 broadcast=192.168.20.255 comment=isp1 disabled=no interface=eth3 network=192.168.20.0

Прописываем основные маршруты:

/ip route
add check-gateway=ping comment=gw1 disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.20.254 scope=30 target-scope=10
add check-gateway=ping comment=gw2 disabled=yes distance=1 dst-address=0.0.0.0/0 gateway=192.168.15.254 scope=30 target-scope=10

Прописываем маршруты для хостов которые будем пинговать , я пингую DNS Google и OpenDNS

/ip route
add comment=through_ISP1 disabled=no distance=1 dst-address=8.8.8.8/32 gateway=192.168.20.254 scope=30 target-scope=10
add comment=through_ISP2 disabled=no distance=1 dst-address=208.67.222.222/32 gateway=192.168.15.254 scope=30 target-scope=10

Сам скрипт я его назвал backupISP :

/system script
add name=backupISP policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive source=":local PingCount 3;\r\
    \n\r\
    \n:local CheckIp1 8.8.8.8;\r\
    \n:local CheckIp2 208.67.222.222;\r\
    \n\r\
    \n:local eTo \"ndm.admins@domain.local\";\r\
    \n\r\
    \n:local rName [/system identity get name];\r\
    \n:local rDate [/system clock get date];\r\
    \n:local rTime [/system clock get time];\r\
    \n:local eSubj (\$rName . \" \" . \$rDate . \" \" . \$rTime);\r\
    \n\r\
    \n:local isp1 [/ping \$CheckIp1 count=\$PingCount];\r\
    \n:local isp2 [/ping \$CheckIp2 count=\$PingCount];\r\
    \n\r\
    \n:local BackGw [/ip route get [find comment=\"gw2\"] disable];\r\
    \n#if main ISP is DOWN and backup ISP is UP then:\r\
    \n:if ((\$isp1=0) && (\$isp2=\$PingCount) && (\$BackGw=true)) do={\r\
    \n:log warning \"Set routes to backup ISP\";\r\
    \n/ip route disable [find comment=\"gw1\"];\r\
    \n/ip route enable [find comment=\"gw2\"];\r\
    \n/tool e-mail send to=\$eTo subject=(\$eSubj . \" Main ISP is DOWN\") body=\"Set routes to backup ISP\";\r\
    \n}\r\
    \n\r\
    \n:local MainGw [/ip route get [find comment=\"gw1\"] disable];\r\
    \n#if main ISP is UP then:\r\
    \n:if ((\$isp1=\$PingCount) && (\$MainGw=true)) do={\r\
    \n:log warning \"Set routes to main ISP\";\r\
    \n/ip route enable [find comment=\"gw1\"];\r\
    \n/ip route disable [find comment=\"gw2\"];\r\
    \n/tool e-mail send to=\$eTo subject=(\$eSubj . \" Main ISP is UP\") body=\"Set routes to main ISP\";\r\
    \n}"
Далее нужно настроить отправку почты:

/tool e-mail set from=gw-central-warehouse@domain.local password="" server=10.8.254.7:25 username=""
Настраиваем планировщик который будет запускать скрипт каждые 30 секунд:
/system scheduler
add comment="" disabled=no interval=30s name=backipISP on-event=backupISP policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive start-date=jan/02/1970 start-time=02:13:10
Проверяем и радуемся =)

Отмечу вариант реализованный TangaRUS , не чем не хуже предложенным мною.

Комментарии

Популярные сообщения из этого блога

Автообзвон на Asterisk (FreePBX)

Syntax of call files Specify where and how to call Channel : <channel>: Channel to use for the call. CallerID : «name» <number> Caller ID, Please note: It may not work if you do not respect the format: CallerID: «Some Name» <1234> MaxRetries : <number> Number of retries before failing (not including the initial attempt, e.g. 0 = total of 1 attempt to make the call). Default is 0. RetryTime : <number> Seconds between retries, Don't hammer an unavailable phone. Default is 300 (5 min). WaitTime : <number> Seconds to wait for an answer. Default is 45. Account : Set the account code to use. If the call answers, connect it here: Context : <context-name> Context in extensions.conf Extension : <ext> Extension definition in extensions.conf Priority : <priority> Priority of extension to start with Set : Set a variable for use in the extension logic (example: file1=/tmp/to ); in Asterisk 1.0.x use

Настройка записи разговоров freepbx

1. Заходим на Web-интерфейс  2. Выбираем   « Панель пользователя» и вводим логин и пароль для входа(логин и пароль — это внутренний номер абонента). 3. Если правильный логин и пароль, то попадаем в интерфейс пользователя: Дата  — дата звонка; Время  — время звонка; Номер  — отображается телефонный номер   ( а под ним — внутренний номер   ), с которого был произведен звонок; Источник  — указывается внутренний номер; Назначение  — указывается внутренний номер, куда был послан звонок; Длительность  — указывается время в секундах, телефонного разговора; Монитор  — имеет две иконки:  — открывает флеш плеер для проигрывания записи разговора;  — предлагает сохранить запись разговора на жесткий диск. 3. Прослушивание записи разговоров может происходить в двух вариантах: Вариант 1 Выбираете интересующий Вас звонок и нажимаете на иконку  , после чего под строчкой звонка откроется полоска флеш-плеера, где можно будет управлять ходом прослушивания звукового файла: Ва

Запись и обслуживание разговоров в Asterisk FreePBX

Как и многие другие компании мы используем  FreePBX —  графический интерфейс для Астериск. Служба безопасности требует записывать все входящие и исходящие звонки , не проблема все делается просто: Заходим в админку http://sip.domain.local/admin/config.php , далее General Settings и делаем как у казанно у меня на скрине: Вот вроде и все , но если не следить за записями  они забьют все место на масиве. На помощь нам приходит bash =) , пишем скрипт который будет удалять записи старше 14 дней ( для службы безопасности такой срок устраивает) #!/bin/bash # Указываем директорию где расположены файлы RECORDINGS=/var/spool/asterisk/monitor # Указываем период за какой срок удалять файлы записи  RECORDINGEXPIRY=14 # Указываем за какой срок хранить логи LOGEXPIRY=365 # Дата DATE=`date` # Удаляем записи старше $RECORDINGEXPIRY дней find $RECORDINGS -mtime +$RECORDINGEXPIRY -exec rm -rfv > removal-$DATE.log # Удаляем логи старше $LOGEXPRY find . -mtime +$LO