При переезде в другую страну возникла необходимость сохранить рабочую сеть так, как будто я нахожусь в офисе, чтобы и я имел доступ к сети офиса, и мои коллеги имели доступ к моей сети, например, могли напечатать мне на принтер. Причем, главная задача состояла в том, чтобы развертывание сети было максимально быстрым и простым. В идеале должно быть достаточно включить роутер в розетку.
Это не пошаговая инструкция для настройки, для понимания желательно иметь опыт настройки роутеров 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 клиент, который поднимает VPN туннель. Не забудьте в фаервол добавить правило masquarade на обоих роутерах.
![Модем не подключен. Модем не подключен.](https://habrastorage.org/getpro/habr/upload_files/660/bbb/8d7/660bbb8d7466b256c8024b8526e1c317.png)
Также, во избежание проблем с маршрутизацией, на SSTP сервере в профиле указываем Only One = yes.
![Это нужно чтобы VPN подключение не дублировалось при прерывании связи. Это нужно чтобы VPN подключение не дублировалось при прерывании связи.](https://habrastorage.org/getpro/habr/upload_files/0d3/3d3/46c/0d33d346cd11516514a4a6e72b9a1250.png)
Общая схема сети следующая:
Офисная сеть 192.168.2.0/24;
Моя сеть 192.168.5.0/24;
Точка доступа map lite 192.168.6.1;
Модем 192.168.8.1 (по умолчанию);
VPN 10.1.2.1 – 10.1.2.5.
![](https://habrastorage.org/getpro/habr/upload_files/1b3/bdb/4c4/1b3bdb4c4ad27975b1c95d4e3491d564.png)
Маршрутизация
Самое главное здесь настроить маршрутизацию.
![Не помеченные маршруты динамические. Не обращайте внимания на отключенный. Не помеченные маршруты динамические. Не обращайте внимания на отключенный.](https://habrastorage.org/getpro/habr/upload_files/e0c/715/17c/e0c71517c8b6d6960fd8c8a2e8eea98b.png)
1. Все что идет в локальную сеть офиса направляем через туннель, аналогичный маршрут в обратном направлении нужно создать на офисном роутере.
2. Здесь маршрут для российских сайтов которые недоступны извне. Для этого в файерволле создаем список сайтов с пометкой rf
Скрин
![Также, создаем список локальных адресов. Также, создаем список локальных адресов.](https://habrastorage.org/getpro/habr/upload_files/4cb/3c3/e4f/4cb3c3e4f13931757055e3fc966b4275.png)
и метим пакеты к этим сайтам во вкладке Mangle.
Скрин
![Здесь вы можете видеть правило метки пакетов для пинга резервного канала, метка соответственно reserve. Здесь вы можете видеть правило метки пакетов для пинга резервного канала, метка соответственно reserve.](https://habrastorage.org/getpro/habr/upload_files/19e/3a0/8cf/19e3a08cf66a41add60752e7a2be98fd.png)
В данном маршруте нужно указать Routing Table = rf, предварительно создав ее.
Скрин
![Также, здесь есть таблица для резервного канала. Также, здесь есть таблица для резервного канала.](https://habrastorage.org/getpro/habr/upload_files/07f/8e4/574/07f8e4574b8badd5d9ab5a33ea5e5b35.png)
.
3. Это два маршрута для пинга основного и резервного канала и для автоматического переключения между ними (подробнее ниже). Гейтвей резервного пинга – это адрес модема, его менять не понадобится, а вот гейтвей основного канала необходимо будет здесь менять при смене этого канала. Это единственное, что нужно будет править в конфиге при смене локации и интернет провайдера соответственно, но до правки интернет все равно будет работать через модем, так что правило plug&play выполняется.
4. Данный маршрут для резервного канала через модем, в нем Routing Table = reserve.
Резервный канал через модем
На данном этапе у нас уже должно все работать, и мы имеем возможность пробрасывать отдельные сайты через офисный интернет. Но практика показала, что даже стационарный интернет может быть нестабильным, и, тем более, раз уж у нас есть модем, грех не воспользоваться возможностью сделать через него резервный канал.
Для этого я модифицировал найденный на просторах интернета скрипт и добавил его в расписание с запуском каждую минуту. Этот скрипт пингует два адреса, каждый через свой канал, и в зависимости от доступности канала включает или выключает правило Mangle, которое метит все пакеты, кроме локальных, чтобы они шли через резервный канал. Перед этим создаем в Address Lists список локальных адресов, в моем случае это 192.168.2.0/24 и 192.168.5.0/24.
![Обратите внимание на комментарий, он используется в скрипте для поиска этого правила. Обратите внимание на комментарий, он используется в скрипте для поиска этого правила.](https://habrastorage.org/getpro/habr/upload_files/089/a05/c22/089a05c22b45c1685213a5b897586840.png)
Скрипт
: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 и далее по списку. Увидев эту конструкцию невольно улыбнулся, однако работает все это достаточно стабильно, так что вариант вполне жизнеспособный, и к начальному списку оборудования можно смело добавлять смартфон с возможностью раздачи интернета.
Статья получилась сумбурная, поскольку написал ее внезапно и это мой первый опыт, надеюсь кому-то будет полезно.
roofcat
Решаю сейчас похожую задачу, с очень похожим набором оборудования - тоже Микротики, тоже hap AC2 в качестве рутера. Смотрел на map lite в качестве альтернативы, более легкой и компактной, но идея заюзать его в качестве возможного источника WAN трафика - более правильная. Но в моей задачке хочу весь трафик из HAP AC2 прогонять через удаленный маршрутизатор (другой AC2 в московской квартире) чтобы работало все "как дома". Попробую адаптировать изложенные подходы, у меня пока что все построено на pptp, но как раз думал уходить на более легкий протокол