[OpenWrt Wiki] uHTTPd Web Server Configuration

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

Для начала,

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

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


Нам понадобится многоядерный процессор для комфортного создания своей прошивки (я собирал на i7). Но и Core2Duo сойдет, разве что подольше собираться будет. OS подойдет Ubuntu 15 x86_64.

Настройка vlan:

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

network — switch

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

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

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

Проще говоря, мы впускаем через 3 порта 3 разных сети, которые затем внутри устройства распределяются по полочкам.

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

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

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

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

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

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

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

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

Mwan3 или крутая выручалочка админа


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

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

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

Приступим:

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

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

Далее, настроим правила работы каналов:

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

configuration — rules

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

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

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

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

Будет заходить по статическому ключу. Генерацию ключа можно произвести на клиентской стороне:

sudo openvpn --genkey --secret office2.key

Ключ нужно поместить в /etc/openvpn/keys/ (сервер, клиент).

OpenVPN на роутере у нас уже установлен и мы начнем править конфиг. Для этого зайдем на TP-Link по 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. Приводим конфиг к виду:

Lig php под openwrt — osboy notes

В репозитории OpenWrt есть несколько веб-серверов, практически на любой вкус. Причём, при установке веб-интерфейса LuCI автоматически устанавливается сервер uHTTPd. Однако, мы вправе выбирать, чем нам удобнее пользоваться. Так я, например, предпочитаю сервер Lighttpd — он легковесный, но обладает довольно большими возможностями и гибко настраивается под различные нужды. Поэтому сейчас попробуем его установить и настроить на роутере с OpenWrt.

Установка Lighttpd и PHP

opkg update
opkg install lighttpd lighttpd-mod-cgi php5 php5-cgi

Настройка вэб-сервера
Теперь редактируем файл /etc/lighttpd/lighttpd.conf. Ниже я привожу только те фрагменты, которые мы изменяем.
Включаем CGI модуль:

server.modules = (
"mod_cgi"
)

Так как корневая директория сервера по умолчанию /www/ используется для LuCI, выбираем другую директорию:

server.document-root = "/var/www/vh280713/data/www/osboynotes.ru/"

Так же, указываем корневую директорию в файле /etc/php.ini:

doc_root = "/website"

Для того, чтобы файлы с расширением .php на нашем сервере обрабатывались PHP интерпретатором, добавляем в /etc/lighttpd/lighttpd.conf:

cgi.assign = ( ".php" => "/usr/bin/php-cgi" )

А так же, указываем серверу искать файлы index.php:

index-file.names = ( "index.html", "index.htm", "index.php" )

Если у нас будет несколько виртуальных хостов, то можно использовать модуль simple_vhost, или добавить виртуальные хосты вручную:

$HTTP["host"] == "website2.my.domain" {
server.document-root = "/website2/"
}

Настройка LuCI на Lighttpd
По умолчанию наш сервер работает на 80 порту. А доступ к LuCI мы можем сделать, например, на 81 порту, с помощью сокета:

$SERVER["socket"] == ":81" {
server.document-root = "/www/"
cgi.assign = ( "luci" => "/usr/bin/lua" )
}

Запуск сервера

Теперь, когда всё настроили, можем протестировать работу нашего сервера. Создадим корневую директорию для нашего веб-сайта и тестовую страничку:

mkdir /website
echo "<?php phpinfo(); ?>" > /var/www/vh280713/data/www/osboynotes.ru/index.php

Останавливаем uhttpd и запускаем lighttpd:

etc/init.d/uhttpd stop
/etc/init.d/uhttpd disable
/etc/init.d/lighttpd start
/etc/init.d/lighttpd enable

Теперь можно попробовать зайти на наш тестовый сайт: http://website.my.domain ; и в веб-интерфейс LuCI: http://website.my.domain:81 .

Полезные ссылки:
OpenWrt Wiki — howto: Lighttpd
OpenWrt Wiki — howto: Set up a LAMP stack on OpenWrt
OpenWrt Wiki — howto: LuCI on lighttpd
OpenWrt Wiki — howto: PHP

Using openwrt/lede to build a lamp/wordpress dev server on a travel router

There are loads of packages to install, so I’m not listing prerequisites. However, I will state at the outset that, since you’ll need to use CLI/terminal programs, you might want to get up to speed on PuTTY and scp (secure copy). It’s no fun wrestling with unfamiliar software on your own computer while trying to wrangle a remote machine.

TCP/IP is widely documented but still causes confusion. (I got good advice from Hnyman on this very forum.) A brutally quick account: your broadband router has a fixed IP address on the local network (LAN). It dynamically assigns IP addresses to the devices which connect to it. Your new router will need a fixed IP address so that you will be able to find it easily on the LAN, but that address has to align with the stuff the broadband router is doing.

To find exactly what the broadband router is up to, launch a terminal on your own computer and do:

route -n

The response will look like this:

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.254 0.0.0.0 UG 1024 0 0 wlan0
169.244.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlan0
192.158.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0

Special bonus for UK readers: BT broadband routers mostly use the IP address 192.168.1.254. Either way, make a note of that gateway IP address.

Launch PuTTY from the terminal and start a new session with the ip address of the new router. Log in as ‘root’ using whatever password you set via LuCI. If the login is successful, you’ll see an OpenWrt logo in text and a command prompt. Update the gateway address by typing a uci command:

uci set network.lan.gateway 192.168.1.254

Depending on setup you may also need to type:

uci set network.lan.dns 192.168.1.254

…then:

uci commit network
reboot

The new router *should* now be set up for your existing LAN. Check by using OpenWrt’s package manager to install nano, thus:

opkg update
opkg install nano

If you get errors, there is a network configuration problem. Google is your friend!

However, assuming you’ve got nano running, you’ll be able to review all your network config options at one pass by doing:

nano /etc/config/network
BTW, when you’ve finished with nano, it will be faster to reload the network than to reboot the router:

/etc/init.d/network reload

OpenWrt/LEDE is tiny, and so are its numerous packages. This enables the system to operate from the meagre storage provided by the average router. The MT300A offers only 16Mb, but that’s enough for LEDE plus a LAMP stack.

Unfortunately, it isn’t enough for WordPress, which presently runs to about 20Mb.

A full solution to this problem is to dedicate an external USB stick to the router using a technique called overlaying, documented here: extroot

NOTES:
* I found that, after following these instructions, I still needed to access the LuCI GUI tool, select ‘System/Mount Points’, check the ‘Enabled’ option and reboot the new router to gain access to the extended storage.
* I used extroot/overlay because I didn’t want to wrangle multiple storage devices on the router. However, the technique has a downside: the USB stick can’t easily be moved between devices, so you can’t, for instance, replug it into your own machine to copy files. You might prefer to mount the USB stick on the router and access it as /dev/sda1 or whatever without bothering to overlay it. Useful pointers here: https://snippets.khromov.se/installing-wordpress-on-a-tiny-wireless-router/

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.

More information about cookies

Данная команда записывает все найденные разделы для автоматического подключения в файл /etc/config/fstab. дальше нам надо немого подредактировать этот файл к виду:

config 'global'
        option  anon_swap       '0'
        option  anon_mount      '0'
        option  auto_swap       '1'
        option  auto_mount      '1'
        option  delay_root      '0'
        option  check_fs        '0'

config 'mount'
        option  target  '/'
        option  uuid    '7d3abfaf-493a-46bb-9730-1d793ecb9783'
        option  enabled '1'

config 'mount'
        option  target  '/home'
        option  uuid    '7d3abfaf-463a-46db-9730-1d793ecb4593'
        option  enabled '1'

config 'swap'
        option  uuid    '76d36596-5710-4b77-a3a7-02a66d469750'
        option  enabled '1'

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

vi /etc/config/fstab

Как пользоваться данным редактором можно посмотреть тут или опять же обратится в Google.Перезагружаем роутер. Опять заходим в консоль и проверяем все ли правильно подмонтировалось:

И ищем наши разделы на флешке / hdd * вы же не забыли подключить вашу флешку / hdd к роутеру правда?

mount /dev/sdaX /mnt
mkdir /tmp/cproot
mkdir /home
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt -x                                      
sync 
umount /mnt
umount /tmp/cproot

Установка / настройка openwrt

    Прежде всего сразу оговорюсь что Вы все делаете на свой страх и риск, так как существует вероятность «окирпичивания» Вашего роутера. Проверяем есть ли Ваш роутер в списке поддерживаемых устройств, для этого заходим на сайт

Жмем на соответствующую ссылку и ищем там свое устройство в списке. В принципе информация там не всегда актуальная, я в этом убедился на своем личном опыте со своим роутером который в этом списке значится как не полностью поддерживаемый, хотя и включен уже в trunk. Желательно запомнить на каком чипсете построен Ваш роутер для облегчения поиска именно Вашей прошивки.

    После этого переходим в вкладку «Downloads»

    Тут стоит выбрать какую ветку использовать стабильную (Attitude Adjustment) или соответственно «trunk» в папке snapshots, сразу замечу если Ваш роутер более менее новой модели, то скорее всего в стабильной ветке вы его не найдете.

    Переходим непосредственно к скачиванию прошивки.

После того как прошивка скачалась переходим к прошивки Вашего роутера. Для этого необходимо зайти в его вэб-интерфейс который обычно располагается по адресу 192.168.1.1 или 192.168.0.1 в зависимости от производителя роутера.

Подробнее по процессу прошивки и настройки Wi-Fi и всего остального для конкретного роутера можете обратится в Google, а то эта статься может растянуться до неприличных размеров, мы же остановимся именно на установке и настройке Transmission.

Установка torrent клиента transmission.

opkg update
opkg install transmission-daemon transmission-cli transmission-web transmission-remote
/etc/init.d/transmission enable

Открываем файл настроек клиента и редактируем под свои нужды:

vi /etc/config/transmission

Установка и настройка transmission

     После прошивки роутера запускаем

если Ваша ОС Windows, если Linux то просто запускаете терминал. В поле адрес вбиваем 192.168.1.1 для PuTTY либо команду

telnet 192.168.1.1

для Linux. После успешного подключения переходим к установке / настройке пакетов.

Перед скачиванием пакетов следует маленькое отступление. Так как в роутере физической памяти достаточно мало, колеблется от 4 до 16 мегабайт в зависимости от продвинутости и цены Вашего роутера, нам следует заранее побеспокоится о его увеличении. Ведь мы в любом случае собираемся подключать к нему флешку или жесткий диск так почему бы нам не сделать чтобы роутер грузился непосредственно с раздела на нашем носителе? Давайте сделаем это! Перед всеми манипуляциями с роутером нужно «разбить» Ваш HDD/флешку на несколько разделов.

  1. Раздел под своп (100-200 МБ будет достаточно) * при использовании HDD, при использовании флешки не рекомендуется, так как имеется хоть и большой но все таки ограниченный запас циклов перезаписи
  2. Раздел с которой будет грузится роутер (на Ваше усмотрение от 50 МБ и выше) с файловой системой Ext3 или Ext4 * Вот тут то нам и может пригодится вторая флешка, куда лучше разместить загрузочную область и область для хранения закачек на разных устройствах чтобы безболезненно извлекать ее для скидывания информации без выключения роутера.
  3. Раздел под Ваши загрузки / хранилище все оставшееся место желательно тоже в Ext3/4 если хотите периодический использовать носитель на компьютере то NTFS но приготовьтесь к периодическим ошибкам, так как Linux с этим типом ФС «дружит» довольно посредственно, так же дополнительно придется установить еще один пакет ntfs-3g.

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

по той же причине что и первое обращение к этому источнику.

    Приступим. Вводим последовательно команды в терминале

Установка необходимых пакетов:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install subversion git g   libncurses5-dev zlib1g-dev gawk -y

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

Идем в «магазин» за исходниками. Я выбрал 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:

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

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

make defconfig

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

make menuconfig

Удалил:

opkg из (base system)

убрал опцию сборки с поддержкой ipv6 (Global build settings)

ppp (Network).

Заключение:


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

Но ничего страшного!

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

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.1.22) Маска 255.255.255.03) Кабель ethernet — в порт LAN14) Выключите роутер5) Включите и дождитесь пока загорится значок шестеренки6) Зажмите на 1-2 секунды кнопку роутера QSS — шестеренка заморгает очень быстро7)

mtd -r write /tmp/имяпрошивки.bin firmware

Роутер скушает прошивку и перезагрузится.

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

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

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

1) Назначьте сетевому адаптеру на компьютере IP адрес 192.168.0.662) Маска 255.255.255.03) Кабель ethernet — в порт LAN14) Запустите tftp сервер с дефолтной прошивкой в папке под названием «wr741ndv4_tp_recovery.bin» (нужно переименовать файл прошивки)4)

Выключите роутер5) Возьмите острый и тонкий предмет (ручка)6) Возьмите роутер в руки, поверните его к лицу портами, ручку держите в свободной руке7) Включите роутер и тут же зажмите QSS пальцем одной руки reset ручкой в другой руке. Потренируйтесь и это получится.8)

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

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

Оцените статью
Хостинги