Переключение на резервный канал Internet при помощи Netping Logic. Скрипт переключения каналов интернет FreeBSD

  1. Пропадает интернет по разным причинам и такое может быть в любой момент, скажем не поладки у интернет провайдера. А вам нужно постоянное соединение с интернет и вас нет рядом сервером или компьютерным устройством, майнинг фермой которая постоянно должна быть подключена к интернет чтобы продавать свои ресурсы. Если произойдет сбой в интернет соединении тогда может встать ваша работа или не передадутся важные данные и так далее. Как быть в таких случаях?
  2. Настройка автоматического переключения между соединениями в Windows:
  3. Для того чтобы ваше устройство постоянно выходило в интернет, в случае отключения одного из соединений, их должно быть несколько. Приведу пример на операционной системе Windows и соединения будут 1.) Домашний интернет провайдер, оптика или категория кабеля UTP5e, возможно WiFi. 2.) Обычный модем 3g от МТС или Мегафон, Билайн, Tele2 и так далее.
  4. Коммутируемое интернет соединение от провайдера в системе Windows если оно подключено и идет трафик, то все программы будут использовать его по умолчанию. Оставим как есть и идем настраивать 3g. Устанавливаем драйвера для модема 3g и выключаем в авто запуске программу которая устанавливается в месте с драйверами, либо если возможно совсем ее не устанавливаем. Далее идем настраивать соединение 3g вручную средствами самой операционной системы. Переходим в центр управления сетями и общим доступом > создание и настройка нового подключения > Подключение к интернет > вводим настройки вашего 3g провайдера.
  5. Нажимаем подключиться и если все нормально прошло отключаемся. Далее возвращаемся центр управления сетями и общим доступом и выбираем с лева изменения параметров адаптера. Находим подключение 3g и кликнув правой кнопкой мышки по подключению в контекстном меню выбираем "свойства" > переходим на вкладку "параметры" где убираем все галочки.
  6. Переходим к самому главному, это настройка скрипта для выполнения мониторинга скажем так чтобы было понятно, интернет соединения на предмет его доступности, как только в заданное время через соединение по умолчанию не пропингуется любой назначенный вами адрес в интернет, значит включаем второе подключение 3G. Думаю понятно в общем как это будет работать, я в конце более подробней распишу. Ниже представляю вам bat файл который и будет пинговать и переключать адаптеры, его надо добавить в авто запуск операционной системы, чтобы он запускался при старте системы:
  7. Что выполняет bat файл?:
  8. TIMEOUT 300 это проверка интернета в секундах, получается 5 минут. Пингуется 3 сайта, можете заменить на свои сайты или ip адреса. Если пинг проходит значит ждем еще 5 минут, если пинг не дошел значит проверяем следующий адрес в интернете и так с 3 адресами. Если все 3 адреса не пингуются, значит интернет пропал и переходим на соединение 3g. Почему 3 адреса в интернет пинговать? Потому чтобы проверить, возможно что один из адресов будет не доступен в интернете, в связи скажем отключения электричества на сервере, сразу 3 не может быть такого и здесь вывод что неполадки с вашем интернет соединением. После переключения на 3g TIMEOUT 3600 это целый час, вы можете выставить свое время, скажем так же 5 минут как и с первым соединением. По истечении часа отключаем 3g и снова пингуем 3 сайта заданные вами, если снова пинг не прошел включаем 3g если прошел переходим на подключение провайдера. Не советую делать 5 минут, подключение на 3g, потому что соединение будет через каждые 5 минут отключаться и снова включаться, сами задумайтесь надо такое вам?
  9. В bat файле также надо прописать настройки вашего 3g соединения, это номер, логин и пароль. Посмотрите картинку выше и сравните со строкой в файле, тем самым разберетесь что на что менять. Делается это в строке:
  10. «rasdial „3G“ /callback:9856»
  11. Bat файл положите в отдельную папку, так как вместе с файлом будут сохраняться логи, в которых будет информация по подключению, что очень удобно, посмотреть был ли интернет стабилен или были провалы.
  12. Если пинг есть - возвращаемся и ждем 5 минут. Если нет - пингуем следующий сайт. Если все 3 сайта не пингуются, то переходим на 3G. TIMEOUT 3600 - время, до попытки вернуться на основной интернет. В данном случае 1 час. Через час 3G отключается, проверяем есть ли интернет, если нет, то опять включаем 3G. Заменяем настройки в строке «rasdial „3G“ /callback:#777» на Ваши. 3G - на название Вашего соединения, #777 на номер, который указывали в соединении.

В последнее время наблюдается тенденция, согласно которой программа для смены IP адреса скоро будет установлена на каждом компьютере, смартфоне, планшете и вообще на всех устройствах, где это только возможно.

Дело в том, что на просторах СНГ действует все больше запретов на различные сайты, поэтому люди ищут способы для обхода этих блокировок. Да и жителям других стран подобные программы также время от времени очень нужны.

Мы собрали 10 наиболее удобных, популярных и просто лучших программ, которые помогают сменить IP адрес. Они используют VPN, прокси и другие технологии для выполнения своей функции. Некоторые из них работают на Андроид, а не только на компьютерах.

1.

Наверное, это самая раскрученная и, соответственно, популярная программа из нашего сегодняшнего ТОПа. И она действительно хороша.

SafeIP позволяет выбирать IP адрес, а также защищать компьютер от следующих угроз:

  • вредоносные и рекламные ресурсы (юзер увидит предупреждение);
  • угрозы, которые проходят через куки;
  • угрозы, которые проходят через Wi-Fi;
  • угрозы, которые проходят через DNS.

Также SafeIP защищает ID браузера и источник. Пользоваться программой очень просто – нужно просто выбрать пункт «IP защита» слева и нажать на желаемый адрес справа.

2.TOR

На втором месте нашего списка расположился более чем известный браузер под названием TOR.

В нем делать ничего не нужно, кроме как установить его на компьютер и запустить. Соединение шифруется автоматически. В общем, очень даже удобно. И при этом никто не получит доступ к истории браузера и другим пользовательским данным.

3.

Это тоже очень простой инструмент. В нем нет абсолютно никаких дополнительных функций – только смена IP адреса. Это тоже браузер, но в данном случае нужно выбрать IP адрес, а не просто запустить его.

Использовать Chameleon очень легко. Нужно просто нажать на кнопку «Добавить VPN соединение», выбрать страну, из-под которой будете подключаться. Она появится в списке, после чего останется нажать кнопку «Соединить».

Стабильная работа гарантируется. Что немаловажно, программа полностью на русском языке. Кроме стандартной версии на Windows, есть также версии для Mac OS, Linux, iOS и Android.

4.

Главное преимущество Proxy Switcher состоит в просто огромной базе прокси-серверов. Пользователь может подключиться к абсолютно любому из них.

Также в программе есть огромное количество настроек. Для профессионалов этот инструмент – то, что нужно. Впрочем, и любителям он тоже понравится.

5.

А это устанавливаемая программа от одного из самых известных сайтов для скрытия IP адреса.

Работает она предельно просто – Вы запускаете ее, выбираете сервер, то есть просто страну, из которой якобы будете заходить в интернет и нажимаете кнопку «Подключиться».

Под полем выбора страны есть поле для выбора непосредственно адреса выбранного государства. Все предельно просто. HideMe.ru VPN хорошо подходит для Google Chrome и других браузеров.

6.

Это, опять же, целая система, целый инструментарий для защиты от хакеров и всевозможных атак, которые совершаются через интернет. А вместе с этим есть и инструмент для смены IP адреса.

Стоит сказать, что он также очень удобен – можно выбрать страну. Эта возможность есть в бесплатной версии. В платной же можно выбирать и непосредственно адрес, и еще великое множество других параметров.

Как бы там ни было, IP сменить с помощью Free Hide IP получается очень даже успешно. Интересно, что программа также позволяет поставить динамическую смену адреса и даже выбрать время, когда он будет меняться.

7.

Интерфейс Surf Anonymous чем-то похож на внешний вид Free Hide IP, только здесь все несколько проще.

Речь идет о том, что вверху отображается реальный и фальшивый IP адреса. Чтобы выбрать желаемый фэйковый адрес, нужно нажать на кнопку «Select Fake Location» и выбрать государство в открывшемся окне.

Чтобы прекратить работу программы, просто нажмите «Stop Hide». Никаких больше кнопок и настроек здесь попросту нет, так что не запутаетесь.

8.

А вот Auto Hide IP представляет собой, фактически, клон Free Hide IP, если говорить о внешнем виде, только принцип работы у них несколько разный.

Пользователь тоже может выбрать страну и адрес, из-под которого будет заходить во всемирную сеть с помощью кнопки «Choose IP Country» и запустить работу программы кнопкой «Hide IP». Также есть кнопка настроек.

Преимущество Auto Hide IP состоит в том, что здесь есть автоматическая настройка для разных браузеров, но она заставляет соединение работать немного медленнее, чем при использовании Free Hide IP.

9.

Это очень знакомый многим VPN клиент, который имеет версии для самых разных платформ. Проблема лишь в том, что далеко не всегда эта программа работает хорошо в бесплатной версии.

Конечно, если купить Elite Hotspot Shield, все будет работать прекрасно. В любом случае, функционал программы достаточно широкий, а интерфейс простой – Вам нужно только переставить переключатель в положение «Connected» и выбрать страну немного ниже.

Есть еще проблема, связанная с медленным соединением при работе с помощью Hotspot Shield, но она актуальна для всех VPN клиентов.

10.Hide My IP

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

После установки расширения в браузер станет доступной иконка такового, нажав на которую можно увидеть список доступных стран. Все также предельно просто.

Рис. №10. Hide My IP в браузере

Ниже можно видеть обзор одной из программ, представленных выше.

У нас в конторе наконец то появился резервный интернет-канал. Но со всей очевидностью встала задача автоматического выбора канала интернет. Схема подключения такая: стоит сервер на винде, работающий, как шлюз (недавно переезжали с фрибсд, по никем не понятой причине - приказ гендира). В него входит один сетевой кабель из внутренней сети и уходит на свич, в который, в т.ч., воткнуто оборудование провайдера. Теперь там появилась еще одна железка, которая также находится в инете и раздает его (в простанародье - маршрутизатор).

Спустя какое то время я родил скрипт (batch-файл - он же.bat), который просто поместил в автозагрузку и запустил. Несомненно, это временное решение, но если надо сейчас или даже прямо сейчас, а работы другой непочатый край, то подойдет. Ниже исходники:

:first_ping
Ping -n 4 -l 1 8.8.8.8>Nul
If "%ERRORLEVEL%"=="1" goto reserv
if "%ERRORLEVEL%"=="0" Echo First IP OK.
set Timer=60
ping -n %Timer% 127.0.0.1>nul
goto first_ping

:second_ping
Ping -n 4 -l 1 192.168.0.50>Nul
If "%ERRORLEVEL%"=="1" echo First IP is not response.
if "%ERRORLEVEL%"=="0" goto first
set Timer=60
ping -n %Timer% 127.0.0.1>nul
goto second_ping

:rezerv
net send Началось переключение сервера на резервный канал интернет.
echo Reserv IP configuring. Plese wait.
echo ==================================
netsh interface ip set address inet static 192.168.0.57 255.255.255.0 192.168.0.50 1 >
echo IP Reconfiguring OK
netsh interface ip set dns inet static 192.168.0.17 >nul # замена первичного DNS.
echo First DNS OK
netsh interface ip add dns inet 192.168.0.9 >
echo Second DNS OK
echo Reserv IP configured.
echo Testing...
Ping -n 4 -l 1 8.8.8.8>Nul
If "%ERRORLEVEL%"=="1" net send Оба провайдера недоступны.
if "%ERRORLEVEL%"=="0" goto second_ping

:first
echo First IP configuring. Plese wait.
echo =================================
netsh interface ip set address inet static 192.168.0.58 255.255.255.0 192.168.0.51 1 >nul # inet - имя сетевого подключения. Адреса: 1 - IP, 2 - маска, 3 - шлюз.
echo IP Reconfiguring OK
netsh interface ip set dns inet static 192.168.0.9 >nul # замена первичного DNS.
echo Reserv IP configure starting. Plese wait.
echo First DNS OK
netsh interface ip add dns inet 192.168.0.17 >nul # добавление вторичного DNS
echo Second DNS OK
echo Reserv IP configured.
echo Testing...
Ping -n 4 -l 1 192.168.0.51>Nul
If "%ERRORLEVEL%"=="1" goto rezerv
if "%ERRORLEVEL%"=="0" goto first_ping

Хочу заметить, что проверка доступности происходит раз в 60 секунд. Вы можете это изменить на любое время, необходимое вам, изменив соответствующий параметр. Но слишком большое время сделает смену адреса не актуальной, а слишком маленькая задержка даст небольшую, но неприятную (возможно, при очень плохих или загруженных сетях) задержку. Смешно про байт конечно говорить, но все же.


В данной статье рассказывается о создании системы автоматического резервирования интернет–канала на базе устройств NetPing 2/PWR-220 v3 c прошивкой Logic (далее по тексту - система). Данная система позволяет автоматически, в случае недоступности основного канала, переключаться на резервный канал. Переключение происходит «прозрачно» для конечного пользователя. Триггером к переключению является неработоспособность основного канала (пропадание пинга через основной канал). Для возврата системы в первоначальное состояние нужно нажать на кнопку.

Принцип работы

Для реализации системы использованы два маршрутизатора, подключенные к основному (Base) и резервному (Reserv) каналам Internet. Выходы маршрутизаторов объединены на коммутаторе (Swich) , к которому подключены рабочие станции. К этому же коммутатору подключено устройство . Питание маршрутизаторы получают от управляемых розеток устройства. При первоначальной подаче питания на компоненты системы включается розетка PWR1 устройства , и соответственно маршрутизатор Base Internet канала получает питание. После его загрузки пользователи начинают получать Internet трафик через этот маршрутизатор. При этом устройство постоянно контролирует работоспособность как самого маршрутизатора, так и Base канала, путем пингования удалённого хоста.

В случае пропадания ответа на пинг с удаленного хоста, что может быть следствием как неработоспособности основного (Base ) канала, так и выходом маршрутизатора из строя, логика устройства формирует две команды. Первую команду - на отключение розетки PWR1 (и как следствие этого – обесточивание маршрутизатора основного канала), и вторую команду – на включение розетки PWR2 , и, соответственно, включение в работу маршрутизатора резервного Internet канала. После загрузки маршрутизатора резервного канала трафик продолжает поступать на компьютеры пользователей через него. Это состояние является устойчивым. Обратного переключения не произойдет, даже при восстановлении работоспособности основного Internet канала. Триггером возврата в исходное состояние служит кнопка. При нажатии на кнопку, подключенную к линии IO1 или IO2 устройства , устройство возвращается в первоначальное состояние – розетка PWR1 включена, а розетка PWR2 выключена. Следует отметить, что кнопка работает «безусловно», то есть возврат в исходное состояние произойдет, даже если основной Internet канал продолжает быть недоступным. Правда, в данном случае система через некоторое время вновь переключит питание на розетку PWR2 .

Как реализовать?

Для создания действующего макета системы автоматического резервирования Internet канала (в дальнейшем по тексту – «система») было использовано следующее оборудование:

Наименование оборудования

Прошивка

Примечание

1

Устройство и два переходника PRW-220

Logic

Для получения прошивки см. «Полезные ссылки»

2


устройство корпоративного уровня
ZyxelZyWALL 70

Микропрограмма версии 4.00

3


Устройство SOHOуровня
Asus WL500Gp V2

Альтернативная (так называемая «чешская») прошивка для работы с CDMA модемами. 1.71

Скачать стабильную версию можно с сайта разработчиков. Внимание! Перед установкой прошивки читать FAQ!
{+} http://koppel.cz/cdmawifi/download+

4

CDMA модем AnyDATA ADU-500A (EVDO rev0 )

Дефолтная прошивка от производителя

5

Коммутатор3Com 5 ports Gigabit swich

Доступ в интернет осуществлялся посредством двух провайдеров:

  • Работоспособность основного канала обеспечивал провайдер 1 (подключение по стандартному UTP кабелю, с выделением статического publicIP);
  • Работоспособность резервного канала обеспечивал провайдер 2 (беспроводная CDMA сеть оператора ОАО «Московская сотовая связь» с торговым названием «СкайЛинк»).

Внешний вид системы:



  • (1) Устройство ;
  • (2) Коммутатор 3Com 5 ports Gigabit swich;
  • (3) Маршрутизатор основного интернет-канала: ZyxelZyWALL 70;
  • (4) Маршрутизатор резервного интернет-канала: AsusWL500GpV2;
  • (5) CDMA модем AnyDATA ADU-500A.

Компоненты системы

Устройство NetPing 2/PWR-220 v3 с двумя переходниками PRW220



Устройство управляет питанием маршрутизаторов основного и резервного Internet каналов, которые подключены к управляемым компьютерным розеткам 220В устройства. Переходники PWR-220 позволяют подключить к управляемым розеткам устройства два маршрутизатора.
Кнопка возврата. Представляет из себя нефиксируемую в нажатом состоянии кнопку с нормально разомкнутыми контактами. Кнопка проводом необходимой длины подключается к клеммной колодке устройства .

Маршрутизатор основного Internet канала: ZyxelZyWALL 70

В порт WAN-1 маршрутизатора подключен кабель от основного провайдера.

Маршрутизатор резервного Internet канала: AsusWL500GpV2





В USB порт резервного маршрутизатора включен беспроводной CDMA модем AnyDATA ADU-500A , обеспечивающий доступ этой связки в сеть «СкайЛинк».
Порт LAN маршрутизатора соединен с коммутатором.

Настройка и подключение

Ниже приведена структурная схема системы:


В структурной схеме имеются следующие отличия от реальной модели, сделанные с целью разгрузить рисунок от второстепенных элементов:

  • Не показан адаптер питания 220VAC/5VDC Маршрутизатор резервного Internet канала: AsusWL500GpV2;
  • Не показан адаптер питания 220VAC/12VDCкоммутатора 3Com.

Таблица настроек сетевых интерфейсов

Устройство

WAN порт

LAN порт

DHCP сервер

DHCP клиент

Маршрутизатор основного интернет-канала:

Статический адрес
IP: 77.50.XXX.XXX
Mask: 255.255.XXX.XXX Gateway: 77.50.XXX.XXX
DNS1: 77.50.XXX.XXX DNS2: 77.50.XXX.XXX

IP: 192.168.1.1

Да
192.168.1.2-255

Маршрутизатор резервного интернет-канала:

Динамический IP от провайдера

IP: 192.168.1.1

Да
192.168.1.2-255

Устройство

IP: 192.168.1.100
Шлюз 192.168.1.1

Статический IP

Клиентский компьютер

Получает настройки от DHCP

Алгоритм управления питанием маршрутизаторов.

  • Маршрутизатор 1 подключен к основному Internet каналу (Base ) и розетке PWR1;
  • Маршрутизатор 2 подключен к Internet каналу (Reserv ) и розетке PWR2;
  • Пока пинг уходит через интернет канал Base , розетка PWR1 остается под напряжением. Розетка PWR2 при этом обесточена;
  • Как только пинг теряется через Internet канал Base , Logic выключает PWR1 и включает PWR2 . Соответственно, стартует Маршрутизатор 2 и интернет канал Reserv;
  • При нажатии кнопки с нормально разомкнутыми (NO) контактами, подключенной к IO1 в режиме входа, текущий уровень IO1 меняется с 1 на 0.

Это служит триггером к возврату в первоначальное состояние (PWR1 on, PWR2 off).

Разметите компоненты системы на ровной горизонтальной поверхности. Поочередно включая компоненты системы, настройте их сетевые интерфейсы в соответствии с таблицей. Для первоначальной настройки устройства рекомендуется использовать бесплатную утилиту NPCONF . Подключите кабель от основного провайдера и модем CDMA к WAN портам соответствующих маршрутизаторов. Подключите LANпорты двух маршрутизаторов устройства к коммутатору в соответствии со структурной схемой системы. Подключите кнопку возврата к линии IO1, сконфигурированной на «ВХОД». Распиновку клеммой колодки можно посмотреть в «Руководстве пользователя » на сайте компании. Запитайте компоненты системы от внешнего источника питания 220В. На данном этапе настройки подключать маршрутизаторы к управляемым розеткам не следует.
Важно! Одновременная работа в сети двух маршрутизаторов недопустима, так как их LAN порты имеют одинаковые IP адреса. Это приведет к конфликту IP адресов в системе и неработоспособности сети.
Убедитесь в том, что рабочая станция получила корректные сетевые настройки от DHCP сервера маршрутизатора (ПУСК-ВЫПОЛНИТЬ-CMD- ipconfig /all). С рабочей станции зайдите в web-интерфейс маршрутизатора (192.168.1.1) и устройства (192.168.1.100), чтобы убедиться в их работоспособности. Убедитесь в наличии доступа в интернет с обоих маршрутизаторов, поочередно включая их в сеть 220В. Все хорошо? Можно переходить к конфигурации модуля логики в устройстве . IP адрес устройства может быть любой, разумеется, из диапазона 192.168.1.2-255, шлюз 192.168.1.1 Зайдите в web-интерфейс устройства. Логин и пароль по умолчанию - visor - ping. Теперь зайдите на вкладку «УПРАВЛЕНИЕ 220В» и установите для обоих каналов значение «ЛОГИКА».


Для сохранения настроек нажмите кнопку «Применить изменения».
Зайдите на вкладку «ЛОГИКА» и выполните настройки модуля в соответствии со скриншотом.


После установки значений нажмите кнопки «Применить изменения» для модуля настроек логики и пингера. Система готова к работе. Отключите все компоненты от электросети, подключите питание маршрутизаторов к управляемым розеткам устройства . Включите все компоненты в сеть. На устройстве должен загореться зеленый светодиод возле розетки PWR1 , показывающий наличие питания. Убедитесь в наличии доступа в Internet на рабочей станции.
Теперь отключите кабель от WAN порта маршрутизатора основного Internet канала. Через несколько секунд система переключит питание на резервный маршрутизатор, обесточив основной. После загрузки резервного маршрутизатора доступ в Internet восстановится. При нажатии на кнопку система перейдет в исходное состояние.

Заключение

В заключении хотелось бы описать ряд сложностей и нюансов, с которыми столкнулся автор статьи при практической реализации вышеописанной системы.
В качестве хоста для пингования предлагается использовать общедоступный Google DNS 8.8.8.8 или 8.8.4.4. Разумеется, в качестве хоста для пингования можно указать любой другой стабильно работающий публичный IP адрес. При выходе в сеть через беспроводной модем, как в данном случае, сотового оператора Скайлинк, казалось бы, логично пинговать сайт и DNS провайдера, поскольку сетевой трафик к этим узлам не тарифицируется. Однако, как показала практика, провайдеры не очень приветствуют такой подходит из-за постоянной бесплатной загрузки их ПО пользователями. Результатом может быть запрет ответа на пинг с конкретного IP. Это, в свою очередь, повлечет «ложную» недоступность удаленного хоста.
В данной статье автор рекомендует на рабочих станциях настраивать сетевой адаптер на получение настроек от DHCP сервера маршрутизатора. На приведенном в пример оборудовании это хорошо работало. Однако, мы не исключаем возможности, что при повторе этой схемы на другом оборудовании при переключении с одного на другой маршрутизатор интернет так и не заработает без дополнительных действий (самое простое - перезагрузка рабочей станции или отключение с последующим включением сетевого интерфейса). Как вариант, можно попробовать прописать статические настройки сети на рабочей станции:
IP любой из диапазона 192.168.1.0/24, исключая, 192.168.1.1 (маршрутизатор) и 192.168.1.100 (устройство )
Маска 255.255.255.0
Шлюз 192.168.1.1
DNS 8.8.8.8 и 8.8.4.4
Модуль Logic несет в себе гораздо более широкие возможности, описание которых выходит за рамки данной статьи. Но даже в пределах данной системы можно добиваться другой необходимой реакции на внешние события, меняя и комбинируя логические правила.

Полезные ссылки

Прошивку можно загрузить с сайта компании АлентисЭлектроникс -
Для смены прошивки следует использовать бесплатную утилиту NPCONF -
Руководство пользователя

  • Каталог устройств удалённого управления и распределения электропитания NetPing
Please enable JavaScript to view the

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

Эпопея с каналами интернет продолжается. До сих пор в операционных системах нет простого и удобного штатного способа переключения шлюза по-умолчанию интернет.

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

Один из простых вариантов — скрипт для переключения каналов интернет путем переключения шлюза по-умолчанию операционной системы сервера роутера.

Пример.
Есть 2 канала в интернет, допустим основной и резервный. Есть два роутера для этих каналов и один роутер, который прописан на компьютерах пользователей, так же задан в настройках DHCP (серверы могут быть даже не физическими, а виртуальными).

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

Консольный скрипт переключения провайдеров интернет (работает в FreeBSD)

cat inet_change.sh #!/bin/sh LANG =ru_RU.KOI8-R; export LANG MM_CHARSET =KOI8-R; export MM_CHARSET # Основной оптика GW1 =10.0.0.2 # Резервный Радио GW2 =10.0.0.3 # Устанавливаем в переменную время и дату в нужном нам формате DT =` date +"%T %d.%m.%Y" ` # Для проверки каналов интернет на работоспособность используем пинг на сервисы Yandex, разные IP для разных каналов # вы можете использовать свои эталонные адреса для проверки # Проверяем добавлены ли маршруты на эталонные IP для проверки, если нет, то добавляем check_node =` netstat -rn | grep "77.88.8.1" | awk "{print $1}" ` if [ "$check_node " ! = "77.88.8.1" ] ; then # добавляем маршрут для Яндекса через оптику для проверки / sbin/ route add 77.88.8.8 $GW1 # через Радио / sbin/ route add 77.88.8.1 $GW2 else fi # Проверяем, если включен основной интернет и файл состояния установлен на резервный канал, то стираем файл состояния # Такая ситуация может возникнуть, например, если сервер был на резервном и потом его резко выключили, # А после включения опять включился основной канал (маршрут по-умолчанию) check_gw =` netstat -rn | grep default | awk "{print $2}" ` if [ "$check_gw " = "10.0.0.2" ] ; then if [ -f / tmp/ .inet_reserv_work ] ; then / bin/ rm / tmp/ .inet_reserv_work / bin/ echo Стираем файл.inet_reserv_work $DT , так как шлюз $GW1 , а не резервный $GW2 ! >> / data/ scripts/ inet_change.log else fi else fi # Проверяем работает ли основной канал is =`/ sbin/ ping -c 7 77.88.8.8 | grep -c "64 bytes" ` if (/ bin/ test $is -gt "4" ) then # Если основной канал работает и файл состояния резервного канала существует, то стираем файл состояния и переключаемся # на основной канал, пишем запись в лог и отправляем письмо администратору о переключении if [ -f / tmp/ .inet_reserv_work ] ; then / sbin/ route change default $GW1 / bin/ rm / tmp/ .inet_reserv_work / bin/ echo Основной канал [ Оптика] включен $DT >>$DT Переключились на Оптику" | mail -s "Интернет переключился" admin@ admin.com -f root@ admin.com else exit fi else # Если основной не работает, то проверяем резервный и переключаемся на него is2 =`/ sbin/ ping -c 7 77.88.8.1 | grep -c "64 bytes" ` if (/ bin/ test $is -gt "4" || / bin/ test $is2 -gt "4" ) then if ! [ -f / tmp/ .inet_reserv_work ] ; then / sbin/ route change default $GW2 / usr/ bin/ touch / tmp/ .inet_reserv_work / bin/ echo Резервный канал [ Радио] включен $DT >> / data/ scripts/ inet_change.log echo "$DT Переключились на Радио" | mail -s "Интернет переключился" admin@ admin.com -f root@ admin.com fi fi

cat inet_change.sh #!/bin/sh LANG=ru_RU.KOI8-R; export LANG MM_CHARSET=KOI8-R; export MM_CHARSET # Основной оптика GW1=10.0.0.2 # Резервный Радио GW2=10.0.0.3 # Устанавливаем в переменную время и дату в нужном нам формате DT=`date +"%T %d.%m.%Y"` # Для проверки каналов интернет на работоспособность используем пинг на сервисы Yandex, разные IP для разных каналов # вы можете использовать свои эталонные адреса для проверки # Проверяем добавлены ли маршруты на эталонные IP для проверки, если нет, то добавляем check_node=`netstat -rn | grep "77.88.8.1" | awk "{print $1}"` if [ "$check_node" != "77.88.8.1" ]; then # добавляем маршрут для Яндекса через оптику для проверки /sbin/route add 77.88.8.8 $GW1 # через Радио /sbin/route add 77.88.8.1 $GW2 else fi # Проверяем, если включен основной интернет и файл состояния установлен на резервный канал, то стираем файл состояния # Такая ситуация может возникнуть, например, если сервер был на резервном и потом его резко выключили, # А после включения опять включился основной канал (маршрут по-умолчанию) check_gw=`netstat -rn | grep default | awk "{print $2}"` if [ "$check_gw" = "10.0.0.2" ]; then if [ -f /tmp/.inet_reserv_work ]; then /bin/rm /tmp/.inet_reserv_work /bin/echo Стираем файл.inet_reserv_work $DT, так как шлюз $GW1, а не резервный $GW2! >> /data/scripts/inet_change.log else fi else fi # Проверяем работает ли основной канал is=`/sbin/ping -c 7 77.88.8.8 | grep -c "64 bytes"` if (/bin/test $is -gt "4") then # Если основной канал работает и файл состояния резервного канала существует, то стираем файл состояния и переключаемся # на основной канал, пишем запись в лог и отправляем письмо администратору о переключении if [ -f /tmp/.inet_reserv_work ]; then /sbin/route change default $GW1 /bin/rm /tmp/.inet_reserv_work /bin/echo Основной канал [Оптика] включен $DT >> /data/scripts/inet_change.log echo "$DT Переключились на Оптику" | mail -s "Интернет переключился" [email protected] -f [email protected] else exit fi else # Если основной не работает, то проверяем резервный и переключаемся на него is2=`/sbin/ping -c 7 77.88.8.1 | grep -c "64 bytes"` if (/bin/test $is -gt "4" || /bin/test $is2 -gt "4") then if ! [ -f /tmp/.inet_reserv_work ]; then /sbin/route change default $GW2 /usr/bin/touch /tmp/.inet_reserv_work /bin/echo Резервный канал [Радио] включен $DT >> /data/scripts/inet_change.log echo "$DT Переключились на Радио" | mail -s "Интернет переключился" [email protected] -f [email protected] fi fi

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

Добавляем выполнение в крон.

*/ 1 * * * * root / data/ scripts/ inet_change.sh > / dev/ null 2 >& 1

*/1 * * * * root /data/scripts/inet_change.sh > /dev/null 2>&1

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

Недостатки такого метода переключения.
1. Один из недостатков предыдущих версий — это пинг шлюза провайдера, он устранен, раньше обычно пинговали шлюз и если он недоступен, то переключались. Однако много раз бывало, что шлюз провайдера пингуется, а интернета все равно нет (поломка у провайдера). В данном случае мы пингуем сторонние ресурсы и зависим от надежности и настроек этих ресурсов, ведь если эталонный сервер перестанет отвечать, то скрипт будет переключать интернет, даже если он работает нормально. И если оба сервера не будут отвечать, то вообще не хорошо.

2. Очень давно как-то на одном из провайдеров была такая ситуация — пинг есть, а интернет зафильтрован. В таком случае скрипт тоже не переключит канал. Получается нужно переделывать скрипт на проверку не пингом, а сканировать порт, например 80-й

3. Небольшая задержка до переключения каналов (в пределах 1 минуты).

4. Я не вынес все изменяемые параметры в переменные, это сделаю при очередной доработке, чтобы сразу все оттестировать.

5. Возможно нужно добавить режим принудительного переключения, например, проверку по еще одному файлу состояния и сделать механизм управления из локального вебсервера.

6. В данной версии возможность переключаться только между 2 каналами интернет.

Плюсы такого метода.
1. Простота.
2. Не нужно никакого стороннего программного обеспечения.
3. Отправка на почту уведомлений о переключении (для статистики).
4. Скрипт при проверке (пинге) считает количество успешно пройденных «пингов» и если количество больше 4-х из 7, то считается что интернет работает. Необходимое количество «успешных» пингов можно менять.

В любом случае такой скрипт переключения первый шаг к автоматизации переключения и он доступен каждому. Конечно же ему иногда может понадобится ручной контроль, но в нормальных случаях он работает.