Возможно ли полностью реализовать хотелку на микротике?
Используется два провайдера по 100Мбит/с. Каждый выдает адрес по DHCP с привязкой по MAC. Подключение по витой паре Ethernet. IP адреса белые от каждого провайдера.
1. Для каждого провайдера нужно поднять туннель OpenVPN-клиент. Через туннель проходит только трафик для конкретных адресов назначения (список адресов с сетями размерностью /32.../22).
2. Для каждого провайдера нужно поднять 2-3 6in4 туннеля от брокеров, для поддержки IPv6.
3. Необходима балансировка трафика между провайдерами (WAN IPv4), OpenVPN-туннелями, и 6in4 туннелями.
4. Нужно следить пингом (или чем-то еще) за тем подняты ли туннели и интерфейсы. Если не доступны — то перенаправлять весь трафик на оставшиеся интерфейсы. При возобновлении пинга ранее недоступного интерфейса, снова вернуться к политике балансировки трафика.
5. DNS-запросы должны отправляться на определенный пул адресов вышестоящих публичных DNS-серверов, не DNSSEC.
6. Раздача адресов в LAN через DHCP, DHCPv6/SLAAC.
7. Реализовать возможность фильтрации рекламы и прочего мусора на уровне DNS-сервера, без использования публичных или иных сторонних защищенных DNS. Должен быть список блокируемых хостов с перенаправлением на 127.0.0.1 или 0.0.0.0
Для этой задачи не планируется покупка чего-либо наподобие выделенных серверов, и прочего.
Железка RB4011iGS+RM прошивка 6.49beta54
Из перечисленного удалось сделать балансировку трафика между WAN интерфейсами (WAN1 и WAN2). При поднятии интерфейса дополнительно в таблицу маршрутизации прописываются маршруты с меткой для каждого WAN при помощи скрипта на каждом DHCP-клиенте. Далее с помощью таблицы Mangle маркируется подключение и при помощи PCC балансируется.
5 пункт удалось реализовать достаточно просто. Добавил в список кучу необходимых адресов. Но хотелось бы более подробно разобраться как это грамотно реализовывается.
7 пункт реализован при помощи скрипта, который заполняет список разрешения DNS блокируемыми хостами c перенаправлениями на 127.0.0.1. Пока этот список не заполнится, подситема DNS просто зависает. Даже VPN-клиенты не могут подключиться, это продолжается около пяти минут. Одно из четырех ядер загружено на 100%, почему не загружаются оставшиеся ядра пока что мне не понятно. Как это исправить не знаю. Вообще не нашел информации по распараллеливанию чего-либо скриптами, и распределением нагрузки на ядра процессора.
С горем пополам удалось заставить работать два VPN клиента. С кучей плясок и костылей. Маршруты мне прилетают по Push, как от этого избавиться я не знаю. Дальше при помощи /Routings filters я отсеиваю эти маршруты и маркирую. После чего по аналогии с WAN маркирую соединение в таблице Mangle и при помощи PCC что-то там балансируется. При этом используется тот же PCC что и для WAN только с разными пропорциями. Потому что входной интерфейс LAN.
Мне не удалось заставить подключаться каждый VPN клиент к конкретному WAN.
Оба VPN подключаются к одному WAN при этом если отключить этот WAN то клиенты VPN переключаются на второй. Как я не игрался с роутами и таблицами Mangle так ничего и не получилось. Либо не работает вообще ничего, либо работает что-то одно. И при маркировании маршрутов при помощи /Routings filters, полученных по Push route, маркируются все одной меткой от двух VPN клиентов. Короче ерунда полная. При использовании VRF у меня вообще ничего ни разу не заработало. Хотя маршруты так же добавлял и в main таблицу.
По IPv6 пока что ничего не удалось сделать. Как балансировать трафик IPv6 я вообще не представляю. Читал что при помощи протоколов маршрутизации, но с этим я никогда не сталкивался.
Как двигаться дальше? Я немного запутался.В качестве оффтопа. Эту же задачу я полностью реализовывал на OpenWRT при помощи трех маршрутизаторов. Там для балансировки IPv6 пришлось установить NATv6.