Собираем свой OpenWRT на роутер Tp-Link TL-WR741ND v.4.25 c vlan, openvpn, ротацией провайдеров и блэкджеком

от автора

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

Выбор пал на роутер Tp-Link TL-WR741ND v.4.25 (цена 1150 рублей), который я выбрал по следующим характеристикам:

1) Низкая цена
2) Достаточное количество памяти для заявленных требований
3) Возможность запиливания USB (для истинных ценителей поковырять железку)
4) Поддержка OpenWrt Barrier breaker
5) Поддержка vlan-ов
6) Поразительная живучесть (роутер невозможно убить неверной прошивкой, функция восстановления прошивки по tftpd работает как часы, и не раз выручала во время неудачных экспериментов). О методах восстановления напишу в конце статьи. Их

Стандартная прошивка для данного роутера от OpenWrt не устраивала. Причиной тому были лишние пакеты, которые занимали место в драгоценной памяти данного малыша.

Было решено выпилить: ppp, поддержку ipv6, opkg (ставить же не будем больше ничего).
Добавить: openvpn-polarssl (меньше занимает места), luci-mwan3 (очень понравилась визуальная настройки и индикация работы каналов)

Итак, начнем:

1) Подготовка устройства

Для начала, обновим наше устройство до последней версии стандартной прошивки tp-link. Смысла описывать подробно данное действо я не вижу, все достаточно понятно и просто.

2) Сбор прошивки

Нам понадобится мощный многопроцессорный компьютер для комфортного создания своей прошивки. Но и Core2Duo сойдет, разве что подольше собираться будет. OS обычная — Linux 3 3.19.0-15-generic #15-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux.

Установка необходимых пакетов:
sudo apt-get install subversion git g++ libncurses5-dev zlib1g-dev gawk 

Отвечаем yes и ждем…

Все дальнейшие команды сборки делаются от обычного пользователя, не от рута!

Идем в «магазин» за исходниками. Я выбрал OpenWrt Bariier Breaker за удобство в настройке и отличную стабильность на предыдущем роутере (TP-LINK Archer C7).

svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker wrt cd ~/wrt svn update 

В домашней папке у нас появится папка wrt, где мы и будем производить сборку.

Скачаем исходники дополнительных пакетов (типа Luci):

./scripts/feeds update -a ./scripts/feeds install -a 

Выполним настройку платформы

make menuconfig 

Появится псевдографическое меню, где мы выберем Target System, Subtarget и Target Profile:

image

Вся навигация свободится к выбору нужного пункта (стрелками) и нажатием enter, выбор компонента — также enter, выход из меню — стрелки вправо-влево — Exit. Не забудьте сохранить конфиг.

Применяем стандартные параметры для профиля:

make defconfig 

Модифицируем набор пакетов:

make menuconfig 

Удалил:
opkg из (base system)
убрал опцию сборки с поддержкой ipv6 (Global build settings)
ppp (Network).

Добавил:
Luci
luci-app-mwan3 (Luci-Applications)
openvpn-polarssl (Network-vpn).

Не забудьте сохранить конфигурацию!

Начинаем сборку:

make -j5 V=s 

Параметр -j5 указывает на количество ядер +1 поток для быстрой сборки, а V=s — на вывод подробностей (если будут ошибки).

Процесс займет долгое время, 10-15 минут на i7 процессоре, после чего в директории /home/user/wrt/bin/ar71xx появятся наши прошивки для различных версий роутера. Если не появились — смотрим в логи сборки — наверняка, вы превысили размер прошивки и увидите строку: «firmware is too big». Придется делать make clean, make distclean и начинать все заново. (с шага ./scripts/feeds update -a )

Нас интересуют:
openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-factory.bin — «заводская» прошивка, шьем в первую очередь
openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-sysupgrade.bin — обновка для удачно прошитого девайса

Перекидываем их через WinSCP на компьютер с подключенным по ethernet-у роутером.

Заходим по адресу: 192.168.0.1 и прошиваем новоиспеченной прошивкой, ждем перезагрузки, затем заходим по адресу: 192.168.1.1

root без пароля (его назначим при первом входе — вверху будет висеть желтый баннер с предупреждением и ссылкой на смену пароля).

Заходим в веб-интерфейсе: system — backup/flash firmware и в пункте Flash new firmware загружаем обновление openwrt-ar71xx-generic-tl-wr741nd-v4-squashfs-sysupgrade.bin.

Ну наконец-то, самое сложное позади, теперь у нас современная прошивка и НАШ набор программ.

3) Настройка vlan:

Происходит в меню роутера: network — switch

image

Тут не обошлось без непоняток — нумерация портов в роутере и в конфигурации vlan не совпадает. На скриншоте я постарался объяснить как они изменены. Порт WAN в роутере не участвует в vlan-функционале.

Tagged — Это общий интерфейс, сюда направляется каждый vlan (101, 102, 103), который затем распределяется по интерфейсам wan (основной провайдер), wan2 (резервный провайдер), eth0.103 (vlan для локальной сети).

Untagged — Это точка входа канала в роутер (ethernet-кабель). Не перепутайте с каналами. Я подписал сзади роутера нужные названия, чтобы в будущем небыло путаницы (провайдер№1 101, провайдер№2 102, локалка 103).

После изменений нажмите Save, но не Apply! Мы ведь не хотим остаться без сети во время настройки?

Теперь, нужно создать нужные интерфейсы в Network — Interfaces:

image

Удалим wan6 интерфейс (мы не используем ipv6 в данном случае).

Изменим wan интерфейс для первого провайдера, укажем нужные данные для подключения (например, провайдер дает инет по dhcp), и укажем какой vlan использовать для этого интерфейса. Вот тут-то и идет сопоставление vlan: провод: интерфейс.

image

Для второго провайдера wan2 укажем eth0.102.

Для Lan укажем объединить интерфейсы в bridge eth0 и eth0.103:

image

В настройках интерфейсов wan и wan2 укажите метрику устройств (обязательно для работы mwan3):

image

Теперь смело можно жать на Save&Apply и проверить введенные настройки.

4) mwan3 или крутая выручалочка админа

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

Для админа пройдет головная боль по временному отключению какого-либо из каналов, и не нужно городить костыльные скрипты по переключению. Я забыл о проблемах в офисе с интернетом и не переживаю когда падает один из них (мне приходят sms по данным событиям).

Я точно знаю, что OpenVPN через 30 секунд переключится на резервный канал (слава параметру multihome), связь с главным офисом в г.Москва восстановится и некоторые пользователи и начальники не заметят данный инцидент.

Приступим:

Зайдем в network — load balancing — configuration:

image

И включим wan2 в работу:

image

image

Далее, настроим политику работы каналов:
1) Balance — Каналы складываются, скорость увеличивается, есть отказоустойчивость (переключение). Рекомендую.
2) wan_only — только провайдер№1
3) wan2_only — только провайдер№2

configuration — rules

image

Остальные rules можно удалить или оставить другую политику.

Подробно я останавливаться на mwan3 не буду — скажу только, что есть возможность пускать трафик до определенного ресурса через один из каналов, если есть привязка на данном ресурсе по IP.

5) Офисная дружба или openvpn

Отлично, интернет настроили, теперь нужно соединить 2 офиса вместе.

openvpn у нас уже установлен и мы начнем править конфиг в роутере. Для этого зайдем на роутер по ssh.

vi /etc/config/openvpn

В самом верху изменяем:

package openvpn  ################################################# # Sample to include a custom config file.       # #################################################  config openvpn custom_config          # Set to 1 to enable this instance:         option enabled 1          # Include OpenVPN configuration         option config /etc/openvpn/openvpn.conf 

Cохраняем, выходим. Тут мы включили кастомный конфиг в /etc/openvpn/openvpn.conf — лично для меня это как-то привычнее.

Далее, сам конфиг:
mkdir /etc/openvpn mkdir /etc/openvpn/keys vi /etc/openvpn/openvpn.conf
На роутере у нас серверная сторона openvpn. Приводим конфиг к виду:

port 1194 #порт сервера  proto udp dev tun-office2 #обзовем интерфейс multihome #слушаем подключения на wan и wan2  ifconfig 10.0.0.2 10.0.0.3 #IP-шники окончания туннелей  secret /etc/openvpn/keys/office2.key #ключик  keepalive 5 30 #переподключение через 30 сек.   user nobody group nogroup  persist-tun persist-key  status /tmp/office2.status  log /tmp/office2.log #логи  verb 3 

Сохраняем, затем:
/etc/init.d/openvpn restart
Теперь клиент:

Примерный конфиг выглядит так:

remote wan.office2.ru #стучимся сначала сюда remote wan2.office2.ru #потом сюда (по очереди)  port 1194  proto udp dev tun-office1  ifconfig 10.0.0.3 10.0.0.2 # наоборот как на сервере route 192.168.30.0 255.255.255.0 #пропишем роут для включения офисной подсети роутера в главный офис  secret /etc/openvpn/keys/office2.key #клон ключа с сервера keepalive 5 30 #передергиваем туннель при плохом поведении одного из каналов  user nobody group nogroup  persist-tun persist-key  status /var/log/openvpn/office.status log /var/log/openvpn/office.log  verb 3 

Сохраняем конфиг, применяем:
/etc/init.d/openvpn restart
Смотрим ifconfig, логи и радуемся надежному каналу.

Заключение:

Конечно же, вы не один раз убьете свой роутер неудачной прошивкой, позарившись на удаление нужных компонентов base system.
Но ничего страшного!

Самый простой способ реанимировать роутер — это fail safe в openwrt:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.1.2
2) Маска 255.255.255.0
3) Кабель ethernet — в порт LAN1
4) Выключите роутер
5) Включите и дождитесь пока загорится значок шестеренки
6) Зажмите на 1-2 секунды кнопку роутера QSS — шестеренка заморгает очень быстро
7) Запустите телнет-клиент и подсоединитесь по адресу 192.168.1.1
8) Залейте в tmp роутера дефолтную прошифку для вашей модели, например, через мини-веб-сервер tinyweb
9) Выполните:

mtd -r write /tmp/имяпрошивки.bin firmware
Роутер скушает прошивку и перезагрузится.

Шеф, всё пропало!

Да, именно так я подумал, когда убил роутер еще тяжелее. Шестеренка не горела, а роутер циклически ребутался без остановки.

Воспользуемся замечательной функцией в прошивке tp-link-а — загрузка прошивки через tftp:

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.0.66
2) Маска 255.255.255.0
3) Кабель ethernet — в порт LAN1
4) Запустите tftp клиент с дефолтной прошивкой под названием «wr741ndv4_tp_recovery.bin» (нужно переименовать файл прошивки)
4) Выключите роутер
5) Возьмите остро-круглый предмет (ручка)
6) Возьмите роутер в руки, поверните его к лицу портами, ручку держите в свободной руке
7) Включите роутер и тут же зажмите QSS пальцем одной руки+reset ручкой в другой руке. Потренируйтесь и это получится.
8) Удерживайте зажатыми эти 2 кнопки 4-8 секунд, пока в tftp клиенте не пойдет загрузка прошивки в роутер. А она пойдет, не беспокойтесь.

Как только прошивка загрузилась (2-3 сек), отпустите кнопки. Выдохните, роутер спасен.

Использованы статьи:

wiki.openwrt.org/ru/doc/howto/build
denisyuriev.ru/linux/openwrt-linux/openwrt-sborka-iz-isxodnikov
habrahabr.ru/post/186760
wiki.gentoo.org/wiki/OpenVPN
wiki.openwrt.org/doc/howto/mwan3
wiki.openwrt.org/ru/doc/howto/generic.uninstall

ссылка на оригинал статьи http://habrahabr.ru/post/264299/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *