Настройка OpenWRT, mwan3, adblock, openvpn, IPv6 (6in4) ч.1
Приветствую!
Disclaimer.
В ОС семейства Linux я профан, так же как и в компьютерных сетях.
Пост рассчитан на людей с прямыми руками, умеющими пользоваться поисковыми системами (гуглить).
ТЗ, или мои хотелки:
1. Реализовать балансировку нагрузки, и отказоустойчивость, между двумя провайдерами (ISP). Каждый провайдер предоставляет безлимитное подключение 100 мегабит по витой паре.
2. Настроить по несколько туннелей IPv6 to IPv4 (6in4) от туннельных брокеров, на каждом провайдере. Реализовать балансировку нагрузки между туннелями.
3. Настроить несколько OpenVPN клиентов, на каждом провайдере, для конкретных адресов (заблокированных сайтов). Настроить балансировку нагрузки между OpenVPN клиентами.
4. Настроить блокировку рекламы (AdBlock) на уровне DNS сервера.
5. Реализация должна быть дешевой и простой. Не имеет значения на чем все будет реализовано.
Для реализации задумки взяты за основу три маршрутизатора Netgear R6300v2, на которые должна устанавливаться ОС OpenWRT. Просто лишь потому что они удачно подвернулись на вторичном рынке.
На сайте проекта OpenWRT заявлена почти полная поддержка этих маршрутизаторов. Единственное, что вообще не будет работать это Wi-Fi 802.11ac (5 ГГц). Wi-Fi 802.11b/g/n (2.4 ГГц) можно сказать что тоже не будет работать. Вся проблема в открытых исходниках от Broadcom Inc, которых попросту нет. Что противоречит концепции проекта OpenWrt.
Для меня это не критично, так как для этих стандартов используется маршрутизатор ASUS RT-AC66U B1 под управлением ОС FreshTomato 2020.2.
Для каждого провайдера используется свой R6300v2, на котором реализуются пункты ТЗ 2-4. На третьем — реализуется первый пункт ТЗ. То есть третий маршрутизатор выступает просто балансировщиком нагрузки между первыми двумя маршрутизаторами.
На момент написания этой статьи на маршрутизаторах установлена ОС OpenWrt 19.07.2
Вкратце опишу процесс "накатывания" прошивки OpenWrt.
Для начала нужно скачать файл прошивки "netgear-r6300v2-webflash.bin" с сайта ftp://ftp.dd-wrt.com/betas/ проекта DD-WRT. Потому что напрямую прошить маршрутизатор OpenWrt не удастся.
После прошивки промежуточной прошивки от DD-WRT, прошиваем файл "openwrt-19.07.0-rc2-bcm53xx-netgear-r6300-v2-squashfs.chk", который можно скачать по адресу https://downloads.openwrt.org/releases/19.07.2/targets/bcm53...
Процесс прошивки не сложный, нужно зайти в меню для обновления прошивки, указать файл и загрузить его в маршрутизатор.
Если нужно подробно описать как прошивать маршрутизатор, и в случае чего возвращать его с "того света" при неудачной прошивке, то напишите об этом в комментариях.
Так же, если нужно, опишу процесс разгона (overclocking) маршрутизатора R6300v2. Получив частоту ЦП 1200МГц, вместо штатной 800МГц, памяти 800МГц базовой частоты, вместо 533МГц.
На каждом провайдере у меня раньше, и сейчас тоже, стоят самые дешевые Wi-Fi маршрутизаторы Tenda W316R. Достаточно давно именно через них шла раздача Wi-Fi на несколько смартфонов.
Сейчас же они оставлены по одной простой причине — если что-то прилетит по витой паре, например гроза, то в первую очередь выйдут из строя W316R, при этом R6300v2 должны уцелеть.
Да и пока игрался с R6300v2, W316R были просто незаменимы, так как у меня каждый провайдер выдает IP-адреса через DHCP сервер, с привязкой по MAC-адресу. Благодаря чему я мог оперативно переключать кабель в W316R что бы просто получить доступ к сети, если что-то шло не так с R6300v2.
А таких ситуаций за две недели было немало. Примерно столько времени было потрачено на все пляски. Потому что на тот момент опыта работы с OpenWRT, и линуксом в частности, у меня не было вообще, да и сейчас его нет.
Итак подключаем R6300v2 к интернету, и скачиваем пакеты:
6in4 (для создания IPv6 туннелей)
kmod-ipt-nat6 (нужен для NAT IPv6, при балансировке нагрузки между туннелями)
luci-i18n-ttyd-ru (можно запускать терминал из браузера)
luci-i18n-firewall-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-base-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-opkg-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-mwan3-ru (если используется несколько WAN интерфейсов)
luci-i18n-adblock-ru (блокировщик рекламы)
wget (нужен для адблок, утилита для скачивания списков блокировки)
tcpdump-mini (нужен для адблок, утилита для создания отчетов)
coreutils-sort (нужен для адблок)
gawk (поддержка gnu awk в качестве альтернативы умолчанию для busybox)
luci-i18n-openvpn-ru (OpenVPN клиент)
openvpn-openssl (без этого вообще не работает)
openvpn-easy-rsa (нужен для OpenVPN)
Для маршрутизатора который занят только балансировкой нагрузки между двумя оставшимися, достаточно только таких пакетов:
kmod-ipt-nat6 (нужен для NAT IPv6, при балансировке нагрузки между туннелями)
luci-i18n-ttyd-ru (можно запускать терминал из браузера)
luci-i18n-firewall-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-base-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-opkg-ru (русификация ПО установленного по умолчанию в OpenWRT)
luci-i18n-mwan3-ru (если используется несколько WAN интерфейсов)
Все что необходимо подтянется автоматом при скачивании перечисленных выше пакетов. Галочку для перезаписи существующих файлов нигде не ставим.
После установки всех пакетов перезагружаем маршрутизатор.
Если нет лишних маршрутизаторов как у меня, и вообще есть проблемы загрузить пакеты через маршрутизатор, то есть один способ. Для этого нужно выкачать содержимое директорий под R6300v2 на сейте OpenWRT, установить простенькую программку HTTP сервера себе на комп, и изменить пути получения пакетов для opkg в маршрутизаторе. Если нужно пишите, создам отдельный подробный пост как это делать. Это особенно полезно если имеется целый парк маршрутизаторов, особенно в изолированной локальной сети.
Теперь можно приступить к созданию необходимой конфигурации. Для этого удобно пользоваться программой WinSCP.exe, можно скачать по этой ссылке: https://winscp.net/eng/download.php
Запускаем программу, выбираем протокол передачи: SCP, в качестве имени хоста вбиваем адрес маршрутизатора, обычно 192.168.1.1, порт: 22, имя пользователя: root. Если вводили пароль, то так же указываем и его, у себя я пароли не использую.
Заходим в папку /etc/config, для редактирования нам понадобятся такие файлы:
/etc/config/network
/etc/config/dhcp
/etc/config/firewall
/etc/config/mwan3
/etc/config/system
/etc/config/adblock
/etc/config/openvpn
Копируем эти файлы в любую папку на компьютере. Для редактирования удобно использовать Notepad++.
Еще потребуется создать файл скрипта /etc/firewall.nat6, атрибуты "firewall.nat6" rw-r--r--. Этот скрипт реализует работу NATv6, позже опишу зачем такое извращение. И создать папку /etc/openvpn/ в которую нужно закинуть файлы конфигурации *.ovpn клиента openvpn. Атрибуты для этой папки должны быть "rwxr-xr-x".
Что-то многовато получилось. Думаю на сегодня хватит.
На очереди статья с описанием и содержимым перечисленных выше файлов конфигураций. И итоги того что получилось.
Если кому-то эта тема интересна, дайте знать стоит ли продолжать? Возможно здесь такое никому не нужно?