OpenWRT, или Что еще можно сделать со своим роутером

    Здравствуйте, на написание данной статьи меня натолкнула аналогичная, но в качестве сервера выступала Raspberry Pi. По моему мнению использовать эту маленькую, но при этом достаточно мощную платку в этих целях немного не целесообразно, у многих есть wi-fi роутер с USB портом, а следовательно зачем включать в розетку целый блок питания от компьютера давая при этом пускай и не большой, но все таки расход электроэнергии когда в розетку включено уже все что надо.
В данной статье рассмотрим установку торрентокачалки на практический любой роутер с USB и поддержкой OpenWRT прошивки. В наличии у меня имеется Linksys E3000, но конкретной разницы в установке и настройке OpenWRT нет. Что нам для этого будет нужно:

  • Непосредственно роутер с разьемом USB, в идеале конечно с двумя.
  • Флешка/ USB HDD произвольного объема под Ваши нужды чем больше тем лучше.
  • Буквально пол часа свободного времени чтобы все поставить и настроить.
  • Прямые руки.


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

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



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



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



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



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



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

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

     После прошивки роутера запускаем PuTTY если Ваша ОС 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.

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

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

opkg update
opkg install block-mount kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-storage kmod-fs-ext4


Этими командами мы обновили базу репозиториев на роутере и установили необходимые нам пакеты: модули ядра для поддержки USB и модули файловой системы


block info


И ищем наши разделы на флешке / 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


Здесь взамен sdaX надо выбрать тот раздел с которого мы собираемся производить загрузку в дальнейшем. Все остальные команды предназначены для копирования загрузочного раздела роутера на флешку / HDD.


block detect > /etc/config/fstab


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

root@OpenWrt:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                 2758072    118004   2501828   5% /
/dev/root                 2048      2048         0 100% /rom
tmpfs                    63340        76     63264   0% /tmp
tmpfs                      512         0       512   0% /dev
/dev/sda1              2758072    118004   2501828   5% 


Тут следует обратить внимание на то чтобы rootfs совпадал по параметрам с /dev/sda1, если это так то у нас все получилось. Переходим к следующему пункту.

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


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


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

vi /etc/config/transmission


config transmission
        option enable 1    #  непосредственно включает клиент
        option config_dir '/etc/transmission'   # расположение фалов настроек клиента
        option alt_speed_down 50   # ограничение скорости
        option alt_speed_enabled false
        option alt_speed_time_begin  540
        option alt_speed_time_day 127
        option alt_speed_time_enabled false
        option alt_speed_time_end 1020
        option alt_speed_up 50
        option bind_address_ipv4 '0.0.0.0'
        option bind_address_ipv6 '::'
        option blocklist_enabled false
        option dht_enabled true
        option download_dir '/home/'  # директория для загрузок
        option encryption 0   # шифрование
        option incomplete_dir '/home'  # директория для не завершенных загрузок
        option incomplete_dir_enabled false # включение/выключение директории для незавершенных загрузок
        option lazy_bitfield_enabled true
        option lpd_enabled false
        option message_level 2
        option open_file_limit 32
        option peer_limit_global 240
        option peer_limit_per_torrent 60
        option peer_port 51413
        option peer_port_random_high 65535
        option peer_port_random_low 49152
        option peer_port_random_on_start false
        option peer_socket_tos 0
        option pex_enabled true
        option port_forwarding_enabled false
        option preallocation 1
        option proxy ""
        option proxy_auth_enabled false
        option proxy_auth_password ''
        option proxy_auth_username ''
        option proxy_enabled false
        option proxy_port 80
        option proxy_type 0
        option ratio_limit 2.0000
        option ratio_limit_enabled false
        option rename_partial_files true
        option rpc_authentication_required false
        option rpc_bind_address '0.0.0.0'
        option rpc_enabled true
        option rpc_password ''
        option rpc_port 9091
        option rpc_username ''
        option rpc_whitelist '127.0.0.1,192.168.1.*'
        option rpc_whitelist_enabled false
        option script_torrent_done_enabled false
        option script_torrent_done_filename ''
        option speed_limit_down 100
        option speed_limit_down_enabled false
        option speed_limit_up 40
        option speed_limit_up_enabled true
        option start_added_torrents false
        option trash_original_torrent_files false
        option umask 18
        option upload_slots_per_torrent 14
        option watch_dir_enabled false
        option watch_dir ''


Запускаем и проверяем:

/etc/init.d/transmission start


Запускаем браузер и вводим 192.168.1.1:9091 если все работает то на этом все.

Если данная статья кого то заинтересует готов так же рассказать о настройке «файлопомойки», поднятия VPN сервера, настройка IPTV на OpenWRT.

    Предвижу мнение многих что на Хабре да и во всем интернете полно подобных инструкций, но все же постарался максимально подробно и просто расписать весь процесс установки и настройки. Так же недавно в OpenWRT немного изменился принцип использование флешки в качестве root раздела, сейчас эта информация уже доступна в вики проекта но только на английском языке.

UPD: В этой статье не описана настройка подключения интернета от Вашего провайдера, так как слишком много нюансов настроек. Без подключения роутера к интернету естественно ничего не выйдет.
Поделиться публикацией
Комментарии 26
    +8
    Еще одна инструкция по пользованию сайтом OpenWRT.org.
      +1
      Согласен, но не у всех есть желание и хотя бы минимальные знания английского чтобы во всем этом разбираться. Все таки читать инструкции на родном для него языке куда проще для большинства.
        0
        Кругом не правы! ;) У меня с английским не очень круто и предпочитаю его развивать стой информацией, которая необходима и на нее никто не сделал перевода к примеру Oreilly.REST.API.Design.Rulebook. А вот подобные статьи, они дают простейшую инструкцию что и как сделать и избавляют от лишних телодвижений ;)
        0
        Даешь мануал по настройке OpenVPN сервера на OpenWRT и настройкой под это дело клиентов на Android и Windows\*nix\Mac!
        Торопись, а то я быстрей напишу, у меня такая статья в планах уже полгода как :)

        Люди, дайте человеку инвайт! Дело же пишет.
          0
          Думаю долго затягивать не буду :) со свободным временем в ближайшее время должно быть все в порядке:)
          0
          Так есть же мануал wiki.openwrt.org/inbox/vpn.howto, чего велосипеды изобретать?
            0
            Хотя бы по той же причине что и этот пост. Нет подобного аналога на русском языке.
            0
            Инвайт уже кто то дал:)
            0
            Я один не понял как роутер после установки OpenWRT установит необходимые пакеты без настройки соединения с провайдером?
              0
              В этой статье этого и нет. Слишком много провайдеров, соответственно и нюансов их настройки. Хотя согласен забыл об этом упомянуть в статье.
                +2
                Раз в год, по традиции, на хабре появляется статья, как поставить transmission-daemon на OpenWrt.
                0
                Если не секрет что за магия происходит в следующем блоке?
                mount --bind / /tmp/cproot
                tar -C /tmp/cproot -cvf —. | tar -C /mnt -xvf — sync; umount /mnt
                umount /tmp/cproot
                  +1
                  Копируется корневой раздел на флешку.
                    0
                    Тут есть две ошибки. Во первых длинный юникодный дефис "—" после «cvf» и «xvf» (должен быть короткий "-"), во вторых «sync; umount /mnt» должны идти отдельной строкой. Поправьте, пожалуйста.
                    Если ваши команды выполнить «как есть» роутер брикается, правда вылечить можно извлечением диска из порта.
                      0
                      Вот кстати тогда и Вам сразу вопрос, этот юникодный дефис автоматом вставляется, уже раз десять попробовал бесполезно.
                        0
                        Возможно это происходит потому, что у вас используется тег blockquote вместо source lang=«Bash».
                          0
                          Огромное спасибо, исправил
                  +2
                  У вас после исправления точка пропала. правильная строка:
                  tar -C /tmp/cproot -cvf - . | tar -C /mnt -x
                  
                    0
                    Смотрю bd-ремуксы онлайн через uTorrent (3.2.3) с плагином uSequential на скорости 50мбит. MediaGet умеет так же, и ace-stream.
                    Качать целиком приходится только bd3d iso, но это редко.
                      0
                      Извиняюсь, что поднимаю сию тему из могилы, но возник вопрос:
                      Можно ли подключиться к админке роутера с openwrt из интернета не используя DDNS и белый IP?
                        0
                        Сервер с белым IP все равно нужен. Если он есть то можно с autossh
                        wiki.openwrt.org/doc/howto/autossh
                        Про пробивание nat вот тут описано…
                        habrahabr.ru/post/150151

                        fastd — (Open Source, Linux, OpenWRT, C++)
                        Крайне легковесный (100кб), та же история с NAT

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое