При переезде в другую страну возникла необходимость сохранить рабочую сеть так, как будто я нахожусь в офисе, чтобы и я имел доступ к сети офиса, и мои коллеги имели доступ к моей сети, например, могли напечатать мне на принтер. Причем, главная задача состояла в том, чтобы развертывание сети было максимально быстрым и простым. В идеале должно быть достаточно включить роутер в розетку.
Это не пошаговая инструкция для настройки, для понимания желательно иметь опыт настройки роутеров Mikrotik.
Оборудование и схема сети
Поскольку изначально неизвестно, какого рода интернет будет в точке развертывания, важно было учесть все возможные варианты. В лучшем случае это будет роутер с возможностью непосредственного подключения в RJ45, далее идет WIFI сеть и в крайнем случае сеть сотового оператора.
Для этих целей я решил использовать следующее оборудование:
Роутер Mikrotik hap ac2 (можно использовать другую модель с USB по вкусу);
Точка доступа Mikrotik map lite (в качестве клиента подключения по WIFI);
Модем Huawei E3372 от одного из операторов, разлоченный и прошитый под любые симки.
Принцип работы следующий: если доступен RJ45, просто втыкаем наш роутер в него; если WIFI - подключаем роутер к map lite, и на этой точке доступа, где уже заранее настроен WIFI клиент (в интерфейсе wlan1 выбираем Mode = station и dhcp клиент вешаем на этот интерфейс), вводим SSID и пароль от местной сети, питание можно взять с USB роутера; если нет вообще ничего, покупаем местную симку, и втыкаем в роутер модем. Также, впоследствии я понял, что готовый модем лучше иметь всегда, так как не везде есть стабильный интернет, и его можно использовать для резервного канала. Я думал, что предусмотрел все, но я ошибся, об этом ниже.
Про настройку, в офисе у меня тоже Mikrotik, на нем я настроил sstp сервер, здесь расписывать это не буду, так как много мануалов в интернете и это не очень сложно. Соответственно, на моем “походном” роутере я настроил sstp клиент, который поднимает туннель. Не забудьте в фаервол добавить правило masquarade на обоих роутерах.
Также, во избежание проблем с маршрутизацией, на SSTP сервере в профиле указываем Only One = yes.
Общая схема сети следующая:
Офисная сеть 192.168.2.0/24;
Моя сеть 192.168.5.0/24;
Точка доступа map lite 192.168.6.1;
Модем 192.168.8.1 (по умолчанию);
Туннель 10.1.2.1 – 10.1.2.5.
Маршрутизация
Самое главное здесь настроить маршрутизацию.
1. Все что идет в локальную сеть офиса направляем через туннель, аналогичный маршрут в обратном направлении нужно создать на офисном роутере.
2. Здесь маршрут для российских сайтов которые недоступны извне. Для этого в файерволле создаем список сайтов с пометкой rf
Скрин
и метим пакеты к этим сайтам во вкладке Mangle.
Скрин
В данном маршруте нужно указать Routing Table = rf, предварительно создав ее.
Скрин
.
3. Это два маршрута для пинга основного и резервного канала и для автоматического переключения между ними (подробнее ниже). Гейтвей резервного пинга – это адрес модема, его менять не понадобится, а вот гейтвей основного канала необходимо будет здесь менять при смене этого канала. Это единственное, что нужно будет править в конфиге при смене локации и интернет провайдера соответственно, но до правки интернет все равно будет работать через модем, так что правило plug&play выполняется.
4. Данный маршрут для резервного канала через модем, в нем Routing Table = reserve.
Резервный канал через модем
На данном этапе у нас уже должно все работать, и мы имеем возможность пробрасывать отдельные сайты через офисный интернет. Но практика показала, что даже стационарный интернет может быть нестабильным, и, тем более, раз уж у нас есть модем, грех не воспользоваться возможностью сделать через него резервный канал.
Для этого я модифицировал найденный на просторах интернета скрипт и добавил его в расписание с запуском каждую минуту. Этот скрипт пингует два адреса, каждый через свой канал, и в зависимости от доступности канала включает или выключает правило Mangle, которое метит все пакеты, кроме локальных, чтобы они шли через резервный канал. Перед этим создаем в Address Lists список локальных адресов, в моем случае это 192.168.2.0/24 и 192.168.5.0/24.
Скрипт
:local PingCount 5;
:local CheckIp1 77.88.8.1;
:local CheckIp8 77.88.8.8;
:local isp1 [/ping $CheckIp1 count=$PingCount interface="ether1"];
:local isp2 [/ping $CheckIp8 count=$PingCount interface="lte1"];
:local BackGw [/ip firewall mangle get [find comment="reserve"] disable];
:if (($isp1=0) && ($isp2=$PingCount) && ($BackGw=true)) do={
/ip firewall mangle enable [find comment="reserve"];
:delay 2
:log warning "Set routes to lte1";
/ip firewall connection remove [ find protocol~"tcp" ];
/ip firewall connection remove [ find protocol~"udp" ];
:delay 2
:log warning "Set routes to lte1";
}
:local MainGw [/ip firewall mangle get [find comment="reserve"] disable];
:if (($isp1=$PingCount) && ($MainGw=false)) do={
/ip firewall mangle disable [find comment="reserve"];
:delay 2
:log warning "Set routes to ether1";
/ip firewall connection remove [ find protocol~"tcp" ];
/ip firewall connection remove [ find protocol~"udp" ];
:delay 2
:log warning "Set routes to ether1";
}
На предыдущих скриншотах видно, что также нужно создать Routing Table = reserve, правило Mangle, для пометки пакетов к адресу 77.88.8.8, чтобы пинг на этот адрес всегда шел через резервный маршрут, и 2 маршрута для пинга основного и резервного канала.
Заключение
Я ранее упоминал, что я предусмотрел не все, и у меня возникла еще одна непредвиденная проблема, которая и побудила меня написать эту статью. По приезде в другую страну, оказалось, что модем не поддерживает частоты местного оператора, и запустить интернет через него не получилось. И у меня пришла в голову мысль использовать телефон в качестве точки доступа с местной симкой (в телефоне она заработала), и к нему подключать WIFI клиента на map lite и далее по списку. Увидев эту конструкцию невольно улыбнулся, однако работает все это достаточно стабильно, так что вариант вполне жизнеспособный, и к начальному списку оборудования можно смело добавлять смартфон с возможностью раздачи интернета.
Статья получилась сумбурная, поскольку написал ее внезапно и это мой первый опыт, надеюсь кому-то будет полезно.