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

Переключение на резервный канал интернета

Добрый день! Есть шлюз_01 Ubuntu 16, два интерфейса, соединение с провайдером PPPoE, iptables. В сети имеется еще один шлюз_02 резервный на обычном роутере dlink но физическое его местоположение очень далеко и перенести линию от этого провайдера в серверу к основному шлюзу нет никакой возможности.

Возможно ли сделать на убунте переключение при пропадании основного канала на шлюзе_01 на шлюз_02 и при появлении вернуть все обратно?

Может при помощи скриптов и крона. Подскажите кто встречал решение спасибо!

Hint: у тебя могут быть много `default route`, но с разными приоритетами (metrics).

Помогите разобраться от простого к сложному, решил разобраться на своей машине с metric

Ubuntu 16 ip 192.168.0.92 и два шлюза 192.168.0.8, 192.168.0.5

auto lo iface lo inet loopback auto enp3s0 iface enp3s0 inet static address 192.168.0.92 netmask 255.255.255.0 gateway 192.168.0.8 metric 10 dns-nameservers 192.168.0.2 8.8.8.8

таблица такая default 192.168.0.8 0.0.0.0 UG 0 0 0 enp3s0 link-local * 255.255.0.0 U 1000 0 0 enp3s0 192.168.0.0 * 255.255.255.0 U 0 0 0 enp3s0

Добавляю маршрут route add default gw 192.168.0.5 metric 20

теперь такая таблица default 192.168.0.8 0.0.0.0 UG 10 0 0 enp3s0 default 192.168.0.5 0.0.0.0 UG 20 0 0 enp3s0 link-local * 255.255.0.0 U 1000 0 0 enp3s0 192.168.0.0 * 255.255.255.0 U 0 0 0 enp3s0

Отключаю 192.168.0.8 и нечего не происходит просто пропадает интернет

нет тут ни цисок ни vlan

меня больше интересует почему metric не срабатывает

Каким образом вы его отключаете? В ссылке, что привели вам выше, есть хорошее замечание: If you add 2 default routes with different metrics, this will switch the route only the case when main link is down and the other is up. Т.е. линк должен «упасть», а не просто интернет на нем пропасть. Вообще вы сказали, что интернет у вас через PPPoE, значит вы устанавливаете соединение каким-нибудь pon/poff. Я бы поступил так: без pppoe default route смотрит на вторичный шлюз с метрикой 20, а соединение pppoe посредством ip-up добавляет default с метрикой 10.

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

имитируемую пропажу интернета, просто тупа из 0.8 машины выдергиваю линк!!

VLAN сейчас только ленивый не умеет. Просто любой управляемый коммутатор надо.

А так оно и не будет работать, т.к. на сервере, где у вас 2 default маршрута, линк для этих маршрутов остается поднятым.

то есть metric срабатывает если у меня было два интерфейса и для каждого был бы определен metric и один из них упал?!

Да. В случае с pppoe, т.к. он является отдельным интерфейсом, это должно сработать.

Спасибо! Прописал точно такойже маршрут на сервере где ppp и все сразу заработало , правда переключается он с одного шлюза на другой примерно 2 минуты

Источник

2-й Вариант Failover на Микротике лишенный недостатков первого способа.

В Микротик встроен Netwatch, (находится в меню Tools). Вкратце эта утилита позволяет пинговать какой-либо ip и выполнять команды если меняется доступность ip адреса, в Up — вписываем команды которые выполняются когда ip стал нова доступен, в Down соответственно вписываем команды которые надо выполнить когда ip стал недоступен.

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

Да, предварительно нужно задать комментарии для маршрутов. Мне удобнее всего настраивать Микротик через Winbox, для задания комментария маршруту заходим в IP-Routes, откроется окно со списком маршрутом, кружком обведена кнопка задания комментария, выделяем нужный маршрут, жмем на кнопку, вписываем комментарий для маршрута, жмем ок.

На картинке видно работу скрипта, маршрут к провайдеру ISP2 (У меня это Utel) не активен, он серого цвета, а маршрут к ISP1 (у меня Stels) активен. Ниже можно увидеть маршрут с комментарием Stels88, это нужно чтоб пинги к 8.8.4.4 который мы используем в скриптах шли только с ISP1, это нужно для контроля работоспособности ISP1, пинги идут -все впорядке, если ответов на пинги нет, то надо переключаться на ISP2. Как это делается видно на картинке ниже:

В раздел UP пишем:

/ip route set disabled=no /ip route set disabled=yes

В раздел Down пишем:

/ip route set disabled=yes /ip route set disabled=no

Для того чтоб схема корректно работало, нужно разрешить пинговать этот ip только с ISP1, для этого желательно добавить правило в IP-Firewall запрещающее доступ к 8.8.4.4 с ISP2, и прописать статический маршрут к 8.8.4.4 через шлюз ISP1 (в штатном режиме так сделать не получится если ISP1 выдает динамический ip и придется писать скрипт, который будет определять ip шлюза и прописывать маршрут).

Спонсор статьи:

Видеоинструкция

В данном ролике мы показываем установку VPN на смартфон под управлением операционной системы Android.

Программы для смены IP

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

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

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

Программы для скрытия IP на ПК

Итак, начнем наш обзор. Мы будем приводить краткое описание программы, ее возможности, системные требование и стоимость (если нет бесплатной версии).

SafeIP – простенькая программа, позволяющая подменить ваш IP, тем самым обеспечив доступ к любым сайтам и стопроцентную анонимность.

Скачать SafeIP

CyberGhost 5

Данное приложение позволяет изменить свой АйПи-адрес через предоставляемый VPN. Иначе говоря, отследить вас уже не получится, в то время как все заблокированные сайты станут доступными. Кроме смены IP тут есть ряд дополнительных функций, таких как:

  • автоматический запуск браузера в режиме Инкогнито
    ;
  • блокировка рекламы;
  • компрессия данных;
  • перенаправление https.

Скачать CyberGhost 5

Tor Browser

Tor Browser Bundle – это пакет программ, благодаря которому не нужно разбираться с настройками, вы берете браузер и начинаете пользоваться. В основе технологии Tor лежат так называемые туннели. Именно они объединяют все ПК на планете. В комплект утилит входит как сам Tor, так и графическая часть – Vidalia. Также есть портативная версия на основе Mozilla Firefox.

В самом браузере есть специальный ползунок безопасности, который позволяет настроить уровень приватности.

Всего тут 3 режима:

  • стандартный. Все функции Tor браузера и сайтов активны;
  • более безопасный. Отключен Java Script на сайтах без https, отключены некоторые шрифты и символы, видео HTML5 и другой медиаконтент воспроизводится только после предупреждения;
  • наиболее безопасный. Java Script отключен везде, отключен ряд шрифтов, значков и символов, добавлен запрос на воспроизведение HTML5 медиа.

Скачать Tor Browser

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

Hide ALL IP отличается удобством работы, хотя тут и нет русского языка. Все что нужно сделать, это выбрать АйПи и кликнуть по Connect
. Дальше просто сворачиваете приложение и наслаждаетесь интернетом.

Скачать Hide All IP

Маленькая программа всего с одной функцией – скрывать ваш реальный IP. Для того чтобы это стало возможным тут применяются прокси из самых разных точек планеты (в бесплатной версии только США). Для тог очтобы получить полную анонимность просто жмите Hide IP
.

Скачать Super Hide IP

Приложение, которое «на лету» меняет свои прокси. При первом запуске скачивается список всех доступных IP, потом программа меняет ваш реальный адрес на один из них. И Вуаля! Полная анонимность гарантирована.

Переключать разные IP тут очень просто. Для этого вам потребуется всего один клик. Также поддерживается режим автоматического переключения.

Скачать Super Hide IP

В программе есть список IP разных стран, отсортированных по стабильности соединения. Интерфейс программы довольно прост. Все, что тут нужно сделать, это выбрать АйПи из списка и нажать Conect
.

Скачать Easy Hide IP

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

Скачать HideMe VPN

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

В целом утилита понравилась, для подключения к прокси и скрытию IP тут нужно просто кликнуть по кнопке.

Скачать Platinum Hide IP

Это точно такое же приложение для смены IP как и предыдущее Platinum Hide IP, отличающееся лишь интерфейсом и своей полной бесплатностью. После запуска программы вы кликаете по Hide IP
и наслаждаетесь безопасным и анонимным серфингом.

Скачать Free Hide IP

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

Скачать Hide My IP

Бесплатная программа для смены IP в один клик. Тут есть ваш реальный адрес (если сервис отключен) и измененный (когда активен). Львиную долю программного интерфейса занимает реклама и склонение к покупке платной версии. Нам программа не понравилась именно из-за своего внешнего вида.

Скачать Surf Anonymous

Данное приложение мы включили в наш перечень в особом режиме.

Скачать Hotspot Shield

два провайдера + резервирование

Приветствую! Есть два провайдера eth1, eth2, один основной (eth1), второй (eth2) нужен для резерва в случае падения основного. Как лучше данную схему реализовать? Правильно ли я понимаю, что необходимо сделать следующее: 1) Добавить в таблицу iproute записи для двух провайдеров: /etc/iproute2/rt_tables Например: T1 T2 2) Написать скрипт с правилами ip route и ip rule для добавления шлюзов по умолчанию и маршрутов для T1 и T2 + iptables для ната. 3) Написать скрипт который будет опрашивать (например ping’ом) и в случае падения основного, поднимать резервный канал?

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

Есть. Называется BGP, требует наличие AS и своего блока IP-адресов

какой у вас дистрибутив?

Да, но в моем случае такой способ не подойдет.

Мне вас сам бог послал! :))) Я вам скажу что нужно сделать. Обкатаем одну схему.

Я вам сегодня позже дам скрипт для автоматического переключения шлюзов двух каналов + скажу как это реализовать конкретно на ценос-е.

У меня было проще — оба провадера раздают через PPP (один PPtP, второй PPPoE) — в результате я просто держу оба канала и выставляю два default route с разными метриками (10 и 20 в моем случае). Когда провайдер отваливается, ppp-интерфейс ложится и его маргрут пропадает, после чего всё автоматически отправлятьс со второго канала.

а у вас был прозрачный прокси сервер(squid)? И как он на это реагировал? Я к тому что у меня с двумя каналами — pppoe и ethernet, при отключении pppoe прокси начинает блокировать все по http, канал естественно второй работает. Приходится удалять правило по перенаправлению трафика на squid (по нату все пашет).

Источник

13.8. Корректная процедура выполнения практического задания: технология резервирования каналов передачи данных

1. Вместе с сидящим рядом студентом примите решение о том, кто на своем компьютере будет настраивать целевой сервер iSCSI, а кто — инициатор iSCSI и демон резервирования каналов передачи данных. Осуществите настройку программных компонентов, необходимых для задействования механизма резервирования каналов передачи данных таким образом, как описано в разделах с теоретической информацией.

Обратитесь к разделу с теоретической информацией.

2. Раскомментируйте большую секцию ‘defaults’ в файле конфигурации /etc/multipath.conf и деактивируйте параметр friendly_names в этом же файле. Проверьте, работоспособен ли после этих манипуляций механизм резервирования каналов передачи данных. Вам наверняка придется обратиться к страницам руководства для утилиты /lib/dev/scsi_id и файла конфигурации multipath.conf .

Удалите символ # перед объявлением большой секции defaults .

Добавьте символ # перед строкой friendly_names active .

Добавьте параметр —replace-whitespace в список параметров утилиты scsi_id .

Теперь (после перезапуска системной службы) список соединений и устройств будет выглядеть следующим образом:

Источник

Настройки в Betaflight

В Betaflight Configurator’е переходим на закладку Port, в столбце Peripherals (периферия) нужного последовательного порта выбираем протокол для вашего видеопередатчика.

  • Для Unify Pro и AKK выбираем “TBS SmartAudio“
  • Для Tramp Telemetry выбираем «IRC Tramp“

Сохраняем настройки (кнопка Save), контроллер должен перезагрузиться.

Теперь переходим на вкладку Configuration, и включаем OSD. Если вы новичок, то вот руководство по использованию Betaflight OSD.

Сохраняем настройки (Save), на этом всё. Теперь у вас должен быть доступ к Betaflight OSD и вы сможете увидеть настройки видеопередатчика.

Чтобы попасть в Betaflight OSD, просто нужно перевести газ в центр, курс влево (yaw влево), а тангаж (pitch) от себя (в mode 2: левый стик влево-в центр, правый — вперед).

Выбираем «Feature» в меню.

«VTX SA» для SmartAudio и «VTX TR» для Tramp Telemetry, выбирайте нужный вам вариант.

На этом экране вы должны видеть настройки видеопередатчика.

Если данные не отображаются, тогда что-то не так с подключением или с настройками порта. Попробуйте другой последовательный порт. Если ничего не помогло, тогда можно попробовать программную эмуляцию последовательного порта (SoftSerial).

Интерфейс не требует объяснений, тут вы можете поменять сетку частот, канал и выходную мощность. Чтобы сохранить настройки выберите «SET» и затем «Confirm«.

 Если у вас нет Betaflight OSD, то знайте, что управление видеопередатчиком работает и через MnimOSD, вот руководство на английском: http://intofpv.com/t-control-vtx-through-minimosd

2-й провайдер через lte usb модем

В качестве резервного провайдера было принято решение использовать lte модемы. Качество связи через них было приемлемое. Тарифные планы доступные, стоимость модемов невысокая. Mikrotik поддерживает большое количество usb модемов, так что не составляет труда подобрать подходящий вариант. Лично я сами модели 4g модемов не видел, так как настраивал все удаленно. Использовались различные устройства и производители. В рамках задачи по настройке резервирования это не принципиально, так как предложенный мной метод работает одинаково успешно практически с любым резервным провайдером

Не важно, будет ли он через usb модем или по проводу

Пример одного из таких модемов, который использую лично я сам, и он отлично работает в Mikrotik. Модель — HUAWEI E3372h или МегаФон M150-2.

А вообще, список гарантированно поддерживаемых usb модемов можно посмотреть в официальной wiki — https://wiki.mikrotik.com/wiki/Manual:Peripherals. Прежде чем настраивать резервирвоание, рекомендую выполнить базовую настройку mikrotik.

Настройка LAN портов 3-5 и Wi-Fi

LAN порты 3-5 будут объединены с Wi-Fi интерфейсом в единую локальную сеть, к которой будут подключаться компьютеры.

Объединяем LAN порты 3-5 в свитч

  1. Откройте меню Interface
    ;
  2. Сделайте двойной щелчок мыши по интерфейсу ether4;
  3. В списке Master Port
    выберите ether3
    (главный порт нашего свитча);
  4. Нажмите кнопку ОК
    .

Повторите тоже самое для интерфейса ether5
.

Напротив портов ether4 и ether5 появится буква S (Slave — ведомый).

Создаем интерфейс Bridge-local
и объединяем в нем LAN порты и Wi-Fi

Чтобы LAN порты 3-5 объединить с Wi-Fi в одну сеть, нужно создать bridge интерфейс, и добавить в него мастер порт свитча ether3
и Wi-Fi интерфейс wlan1
.

Создаем интерфейс bridge-local
:

  1. Откройте меню Bridge
    ;
  2. Нажмите кнопку Add
    (синий крестик);
  3. В поле Name
    пропишите имя интерфейса bridge-local
    ;
  4. Нажмите кнопку OK
    .

Добавляем главный порт свитча ether3
в bridge-local
:

  1. Перейдите на вкладку Ports
    и нажмите кнопку Add
    (синий крестик);
  2. В списке Interface
    выберите главный ethernet порт свитча ether3
    ;
  3. В списке Bridge
    выберите интерфейс bridge-local
    ;
  4. Нажмите кнопку OK
    .

Добавляем Wi-Fi
интерфейс в bridge-local
:

  1. На вкладке Ports
    нажмите кнопку Add
    (синий крестик);
  2. В списке Interface
    выберите беспроводной интерфейс wlan1
    ;
  3. В списке Bridge
    выберите интерфейс bridge-local
    ;
  4. Нажмите кнопку OK
    .

Назначаем IP-адрес интерфейсу bridge-local
:

  1. Откройте меню IP —
    Addresses
    ;
  2. Нажмите кнопку Add
    (синий крестик);
  3. В поле Address
    введите IP-адрес и маску локальной сети 192.168.88.1/24
    ;
  4. В списке Interface
    выберите интерфейс локальной сети bridge-local
    ;
  5. Нажмите кнопку OK
    .

Настраиваем DHCP сервер локальной сети.

Чтобы компьютеры, подключенные к роутеру, получали сетевые настройки автоматически, настроим DHCP сервер:

Настройка Wi-Fi

Сначала включим Wi-Fi:

  1. Откройте меню Wireless
    ;
  2. Нажмите левой кнопкой мыши на интерфейсе wlan1
    и нажмите кнопку Enable
    (синяя галочка).

Создаем пароль для подключения к точке доступа MikroTik:

  1. Откройте вкладку Security Profiles
    и сделайте двойной щелчок левой кнопкой мыши по default
    ;
  2. В появившемся окне в списке Mode
    выберите dynamic keys
    ;
  3. Поставьте галочку напротив регистрации по протоколу WPA2 PSK
    ;
  4. В поле WPA2 Pre-Shared Key
    введите пароль для подключения к Wi-Fi точке;
  5. Нажмите кнопку OK
    .

Настраиваем параметры Wi-Fi точки MikroTik:

  1. Откройте вкладку Interfaces
    и сделайте двойной щелчок левой кнопкой мыши на Wi-Fi интерфейсе wlan1
    , чтобы зайти в его настройки;
  2. Перейдите на вкладку Wireless
    ;
  3. В списке Mode
    выберите режим работы ap bridge
    ;
  4. В списке Band
    выберите 2GHz-B/G/N
    (в каких стандартах будет работать Wi-Fi точка);
  5. В списке Channel Width
    укажите ширину канала 20/40Mhz HT Above
    , чтобы беспроводные устройства смогли подключиться на максимальной скорости с шириной канала 40 МГц;
  6. В списке Frequency
    укажите, на какой частоте будет работать Wi-Fi;
  7. В поле SSID
    укажите имя Wi-Fi сети;
  8. Нажмите кнопку OK
    .

Написание скрипта

Ниже привожу сам скрипт

#!/bin/sh

# Указываем путь к log-файлу
log="/var/log/routing.log"

# Задаем периодичность опроса шлюзов.
# 30s - 30 секунд
# 10m - 10 минут
# 1h - 1 час
check_period="30s"

# Если log-файл не найден, создаем его, иначе отчищаем
clear_log ()
{
if 
then
    touch ${log}
else
    cat /dev/null > ${log}
fi
}

# Инициализируем переменные
init ()
{
    gw1="192.168.1.1"
    gw2="192.168.2.1"
    prefered_gw=${gw1}

    dev_if1="eth1"
    dev_if2="eth2"

    if1=`ifconfig ${dev_if1} | awk -F ' *|:' '/inet addr/{print $4}'`
    if2=`ifconfig ${dev_if2} | awk -F ' *|:' '/inet addr/{print $4}'`

# Текущие статусы шлюзов: 0 - шлюз недоступен, 1 - шлюз работает
    gw1_curr_status=0
    gw2_curr_status=0

# Текущие потери пакетов на шлюзе
    gw1_curr_packet_loss=0
    gw2_curr_packet_loss=0

# Максимальный процент потерь пакетов, при превышении данного числа, шлюз считается недоступным
    gw1_max_packet_loss=35
    gw2_max_packet_loss=40

# Отчищаем log-файл и сохраняем значения основных переменных
    clear_log
    echo `date +"%T %d.%m.%Y"`." Init environment OK. Check gateways status every ${check_period}." >> ${log}
    echo `date +"%T %d.%m.%Y"`." ISP1 , ISP2 " >> ${log}
}

# Данная функция определяет текущее состояние каждого из шлюзов.
# Если текущий процент потерь меньше максимально допустимого, то считаем, что шлюз доступен.
get_current_status ()
{
    echo `date +"%T %d.%m.%Y"`." Get current status ISP gateways." >> ${log}

# Get current status default gateway ISP1
    gw1_curr_packet_loss=`ping -I ${dev_if1} -c20 -l20 -q -W3 ${gw1} | grep loss | awk '{print $(NF-4)}' | cut -d"%" -f1`
    if 
    then
        echo `date +"%T %d.%m.%Y"`. "ISP1. . Current packet loss on ${gw1} via ${dev_if1} is ${gw1_curr_packet_loss}%." >> ${log}
        gw1_curr_status=1
    else
        echo `date +"%T %d.%m.%Y"`. "ISP1. . Current packet loss on ${gw1} via ${dev_if1} is ${gw1_curr_packet_loss}%." >> ${log}
        gw1_curr_status=0
    fi

# Get current status default gateway ISP2
    gw2_curr_packet_loss=`ping -I ${dev_if2} -c20 -l20 -q -W3 ${gw2} | grep loss | awk '{print $(NF-4)}' | cut -d"%" -f1`
    if 
    then
        echo `date +"%T %d.%m.%Y"`. "ISP2. . Current packet loss on ${gw2} via ${dev_if2} is ${gw2_curr_packet_loss}%." >> ${log}
        gw2_curr_status=1
    else
        echo `date +"%T %d.%m.%Y"`. "ISP2. . Current packet loss on ${gw2} via ${dev_if2} is ${gw2_curr_packet_loss}%." >> ${log}
        gw2_curr_status=0
    fi
}

# Данная функция производит переключение шлюза по умолчанию в зависимости от результатов полученных в get_current_status ()
# На данный момент предпочитаемым шлюзом может быть только ${gw1}
switch_default_gw ()
{
    curr_gw=`ip route show | grep default | awk '{print $3}'`
    if 
    then
        echo `date +"%T %d.%m.%Y"`. ". Current default gateway is prefered and running up. Nothing to do." >> ${log}
        return
    fi

    if 
    then
        echo `date +"%T %d.%m.%Y"`. "Prefered gw ${gw1} is down. Change default gw to ${gw2}" >> ${log}
        echo `date +"%T %d.%m.%Y"`. "ip route replace default via ${gw2} dev ${dev_if2}" >> ${log}
        /sbin/ip route replace default via ${gw2} dev ${dev_if2}
        return
    fi

    if 
    then
        echo `date +"%T %d.%m.%Y"`. "Prefered gw ${prefered_gw} is running up now. Change default gw ${curr_gw} to prefered ${prefered_gw}" >> ${log}
        echo `date +"%T %d.%m.%Y"`. "ip route replace default via ${gw1} dev ${dev_if1}" >> ${log}
        /sbin/ip route replace default via ${gw1} dev ${dev_if1}
        return
    fi

    if 
    then
        echo `date +"%T %d.%m.%Y"`. "Prefered gw ${prefered_gw} is still down. Current default gw is ${gw2}" >> ${log}
        return
    fi

    if 
    then
        echo "*************************************************************************" >> ${log}
        echo `date +"%T %d.%m.%Y"`. "CRITICAL. Two gateways is down. Try again later." >> ${log}
        echo "*************************************************************************" >> ${log}
        return
    fi
}

# Инициализируем переменные
init

# "Заходим" в вечный цикл, в котором по очереди вызываем функции get_current_status () и switch_default_gw ()
# После этого делаем паузу, время паузы задается в переменной ${check_period}
while 
do
    get_current_status
    switch_default_gw
    sleep ${check_period}
done

Для запуска самого скрипта достаточно выполнить следующую команду

# ./check_gateways.sh &

Для автоматического запуска скрипта во время загрузки добавляем следующую строку в /etc/rc.d/rc.local

# cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
/usr/local/bin/check_gateways.sh &

Для того, чтобы данная реализация работало вам необходимо будет использовать MASQUERADE без указания выходного интерфейса вместо SNAT.

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Настройка сети

На компьютере установлена ОС Ubuntu Server, настройка сети выполнена с использованием Netplan:

# nano /etc/netplan/01-netcfg.yaml
network
  version 2
  renderer networkd
  ethernets
    enp0s3
      addresses 192.168.50.2/24
      routes
        # маршрут по умолчанию для таблицы main, метрика 100 (основной)
        - to 0.0.0.0/0
          from 192.168.50.2
          via 192.168.50.1
          metric 100
        # маршрут по умолчанию для таблицы primary (идентификатор 10)
        - to 0.0.0.0/0
          via 192.168.50.1
          table 10
      routing-policy
        # если отправитель 192.168.50.2, просматривать таблицу primary
        - from 192.168.50.2
          table 10
          priority 31000
      nameservers
        addresses 8.8.8.8, 8.8.4.4
    enp0s8
      addresses 192.168.150.2/24
      routes
        # маршрут по умолчанию для таблицы main, метрика 200 (резервный)
        - to 0.0.0.0/0
          from 192.168.150.2
          via 192.168.150.1
          metric 200
        # маршрут по умолчанию для таблицы secondary (идентификатор 20)
        - to 0.0.0.0/0
          via 192.168.150.1
          table 20
      routing-policy
        # если отправитель 192.168.150.2, просматривать таблицу secondary
        - from 192.168.150.2
          table 20
          priority 32000
      nameservers
        addresses 8.8.8.8, 8.8.4.4
    enp0s9
      addresses 192.168.250.1/24
      nameservers
        addresses 8.8.8.8, 8.8.4.4

После загрузки системы смотрим маршруты таблицы :

$ ip route show
default via 192.168.50.1 dev enp0s3 proto static src 192.168.50.2 metric 100
default via 192.168.150.1 dev enp0s8 proto static src 192.168.150.2 metric 200
192.168.50.0/24 dev enp0s3 proto kernel scope link src 192.168.50.2
192.168.150.0/24 dev enp0s8 proto kernel scope link src 192.168.150.2
192.168.250.0/24 dev enp0s9 proto kernel scope link src 192.168.250.1

Здесь два маршрута по умолчанию, но с разными значениями метрики — один маршрут основной (метрика 100), другой резервный (метрика 200).

Поднимаем web-сервер

Установим на машине пакет :

# apt install apache2

С компьютера проверим, что сервер работает:

Чтобы обеспечить доступ к web-серверу из интернета, выполняем на команду (подробности здесь):

# iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.254

И сохраняем правила, чтобы они восстановилось после перезагрузки:

# iptables-save > /etc/iptables/rules.v4

Проверяем, что web-сервер теперь доступен, набирая в адресной строке :

В принципе, мы можем выполнить эти две команды и на — тогда web-сервер будет доступен по двум ip-адресам. В этом случае при настройке DNS надо будет добавить две A-записи для домена (round-robin). Преобразование доменного имени в ip-адрес производится в произвольном порядке с равной вероятностью распределения. Некоторые DNS-сервера могут регулярно опрашивать серверы для проверки их доступности и нагруженности. Если сервер не отвечает, он временно удаляется из пула DNS, пока не будет готов к работе. Но это уже совсем другая история.

Организация резервного канала

Привет всем! Стоит ADSL-модем в режиме роутера, на нём крутится НАТ и раздаёт интернет на всю локалку.

Задача: организовать резервный канал связи для обеспечения отказоустойчивости.

Было закуплено след. оборудование:

1х сервер-роутер со среднепоршивой конфигурацией

1х сервер для выполнения apahce, postfix, squid, mysql нормальной конфигурации.

1х АДСЛ-модем и подключение к другому провайдеру.

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

От модема 1 получаем динамический адрес, который при каждом подключениии меняется. От модема 2 получаем статический адрес.

Есть группа клиентов, которые все подключены в свитч, куда и воткнут наш прокси-сервер, на котором крутятся ВВВ, Почта, MySQL. Этот сервак соединен с нашим сервером-роутером. В итоге имеем сервер-роутер с 3мя интерфейсами:

ip ro add via 10.0.0.1

У всех клиентов шлюзом стоит 10.0.0.3, где прозрачно проксируются запросы на 80 порт. Остальные пакеты уходят на шлюз по умолчанию: 10.0.0.1, там НАТятся и уходят в инет.

Тут же на сервере-роутере 10.0.0.1 работает ДНАТ на 80 и 25 порт для обработки запросов из вне.

Можно взять ещё один статический ИП адрес от второго провайдера и тогда схема упростится, но если этот провайдер отвалится, то тогда не будет работать ни почта ни ВЭБ.

В другом случае если использовать только один статический адрес при отваливании канала, остаётся ещё один канал с динамическим ИП, который можно зарегать в ddns и всё равно будет работать ВЭБ-сервер при досупе по адресу.

В общем я набросал схемку того как я это всё представляю —

Будет ли так работать или может есть более эффективные решения?

Источник

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Техноарена
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: