Превращаем недорогой роутер в домашний сервер

Настройка Transmission

Transmission — это с помощью которого можно закачивать, совершенно любые файлы, на флешку или жесткий диск, которые подключены к вашему роутеру, даже когда ваш компьютер выключен.

Для того чтобы установить transmission
на роутер с прошивкой dd-wrt, нужно выполнить команду:

opkg install transmission-
web

Для первоначальной настройки, требуется запустить transmission
на несколько секунд, для этого выполняем команду:

transmission-
daemon

Ждем около двадцати секунд и выполняем команду:

killall transmission-
daemon

Теперь запускаем WinSCP и идем в каталог /mnt/root/.config/transmission-daemon и открываем для редактирования файл settings.json (если этот файл отсутствует, создаем).

Удаляем все содержимое и вставляем следующий текст, предварительно отредактировать параметры: «rpc-username» и «rpc-password».

{

«alt-speed-down»
:
50
,

«alt-speed-enabled»
:
false
,

«alt-speed-time-begin»
:
540
,

«alt-speed-time-day»
:
127
,

«alt-speed-time-enabled»
:
false
,

«alt-speed-time-end»
:
1020
,

«alt-speed-up»
:
50
,

«bind-address-ipv4»
:
«0.0.0.0»
,

«bind-address-ipv6»
:
«::»
,

«blocklist-enabled»
:
true
,

«blocklist-url»
:
«http://www.example.com/blocklist»
,

«cache-size-mb»
:
2
,

«dht-enabled»
:
true
,

«download-dir»
:
«/mnt/share/torrents»
,

«download-limit»
:
100
,

«download-limit-enabled»
:
1
,

«encryption»
:
2
,

«idle-seeding-limit»
:
30
,

«idle-seeding-limit-enabled»
:
false
,

«incomplete-dir»
:
«/mnt/share/incomplite»
,

«incomplete-dir-enabled»
:
false
,

«lazy-bitfield-enabled»
:
true
,

«lpd-enabled»
:
false
,

«max-peers-global»
:
35
,

«message-level»
:
2
,

«open-file-limit»
:
32
,

«peer-limit-global»
:
240
,

«peer-limit-per-torrent»
:
60
,

«peer-port»
:
25000
,

«peer-port-random-high»
:
65535
,

«peer-port-random-low»
:
49152
,

«peer-port-random-on-start»
:
false
,

«peer-socket-tos»
:
0
,

«pex-enabled»
:
true
,

«port-forwarding-enabled»
:
true
,

«preallocation»
:
1
,

«ratio-limit»
:
2
,

«ratio-limit-enabled»
:
false
,

«rename-partial-files»
:
true
,

«rpc-authentication-required»
:
true
,

«rpc-bind-address»
:
«0.0.0.0»
,

«rpc-enabled»
:
true
,

«rpc-password»
:
«придумать пароль»
,

«rpc-port»
:
9091
,

«rpc-username»
:
«придумать логин»
,

«rpc-whitelist»
:
«»
,

«rpc-whitelist-enabled»
:
false
,

«script-torrent-done-enabled»
:
false
,

«script-torrent-done-filename»
:
«»
,

«speed-limit-down»
:
100
,

«speed-limit-down-enabled»
:
false
,

«speed-limit-up»
:
100
,

«speed-limit-up-enabled»
:
false
,

«start-added-torrents»
:
true
,

«trash-original-torrent-files»
:
false
,

«umask»
:
18
,

«upload-limit»
:
200
,

«upload-limit-enabled»
:
1
,

«upload-slots-per-torrent»
:
14

}

Сохраняем файл. Через WinSCP создаем каталоги.

DD-WRT — это прошивка на основе Linux, которая способна превратить беспроводной широкополосной маршрутизатор потребительского класса (дешевле 70 долларов) в мощный центр сети. DD-WRT реализует для этих дешевых устройств все возможности сетевого стека Linux: проводную и беспроводную маршрутизацию, межсетевые экраны, QoS, DHCP-сервер и механизм перенаправления пакетов, RADIUS-сервер, OpenVPN, VLAN, wake-on-LAN, режим повторителя WDS (wireless distribution system), игровую инфраструктуру KAI, шифрование WPA2, аутентификацию и многие другие возможности (см. раздел » «). DD-WRT также предлагает удобный пользовательский графический интерфейс для администрирования и набор инструментов для командной строки, возможности которых можно расширять с помощью сценариев.

В этой статье объясняется, как загрузить DD-WRT, настроить для администратора защищенные графический интерфейс и интерфейс командной строки, а также как проверить и настроить оборудование маршрутизатора обеспечение.

Себастьян Готшаль (Sebastian Gottschall), также известный как BrainSlayer, является основным автором прошивки DD-WRT, а также отвечает за её поддержку. Команда DD-WRT состоит из основной группы разработчиков и сообщества добровольных помощников (см. раздел » «). DD-WRT является бесплатной для некоммерческого использования, в то время как коммерческие пользователи должны приобрести лицензию. Также команда DD-WRT предлагает опции профессиональных услуг, а на их сайте можно приобрести качественное аппаратные компоненты, например, от Ubiquiti и Senao. Дополнительные пожертвования в виде финансов или аппаратного обеспечения, а также помощь другим пользователям на форумах также приветствуются.

Защищенное общение с маршрутизатором

По умолчанию Web-интерфейс использует протокол HTTP, в котором информация передается открытым текстом, так что доступ к административному интерфейсу следует защитить, переключившись на протокол HTTPS на странице Administration
(администрирование) > Management
(управление) > Web Access
(Web-доступ). Нажмите на кнопку Apply Settings
для немедленного сохранения и активации изменений, а потом перезапустите Web-браузер и откройте адрес https://192.168.1.1 (или другой IP-адрес, который используется вашим устройством). В первый раз вам будет показано предупреждение о сертификате Web-сайта, который был подтвержден NewMedia-NET GmbH. Подтвердите подлинность этого сертификата, чтобы Web-браузер сохранил его локально. В будущем вы сможете сами выступить в роли сертифицирующего органа и сгенерировать свой собственный сертификат, правда, этот вопрос выходит за рамки данной статьи.

Также администрирование DD-WRT можно выполнять из командной строки, что даёт доступ к конфигурационным возможностям, не поддерживаемым Web-интерфейсом. Это также еще одна возможность для управления маршрутизатором, если Web-интерфейс перестанет работать. По умолчанию используется протокол Telnet, а не SSH. Обратиться к маршрутизатору по протоколу Telnet можно следующим образом:

$ telnet 192.168.1.1
DD-WRT login: root
Password:

В качестве имени пользователя всегда должен использовать root, в независимости от того, какое имя пользователя вы установили раньше, а пароль должен быть именно тот, который был установлен вами. Для выхода из telnet-сеанса необходимо ввести exit . Использование telnet допустимо на этапе знакомства с DD-WRT, но поскольку этот протокол не обладает никакой защитой, необходимо отключить его и перейти на SSL, когда вы начнете использовать маршрутизатор в рабочем режиме. Для этого необходимо перейти на страницу Services
(службы) > Services
в Web-интерфейсе, как показано на .

После нажатия на кнопку Apply Settings
вы сможете подключиться к DD-WRT уже через SSH. Как и раньше используется имя пользователя root и фактический пароль.

Хотите добиться ещё большей безопасности? Тогда настройте вход с использованием открытого ключа и без использования пароля – это защитит от попыток взлома перебором паролей и никто не сможет войти в систему, не имея копии закрытого ключа. Сначала нужно создать зашифрованную пару ключей, на Linux это можно сделать с помощью команды ssh-keygen .

$ ssh-keygen -t rsa -C router1 -f ~/.ssh/linksys

В этом примере создаётся пара RSA-ключей с названием linksys
. Открытый ключ называется linksys.pub
, а закрытый linksys
и оба хранятся в каталоге ~/.ssh
, стандартном месте для хранения SSH-ключей, хотя вы можете хранить свои ключи и в другом месте. Далее в файл /etc/ssh/ssh_config
необходимо добавить строку для идентификации данных ключей.

IdentityFile ~/.ssh/linksys

Параметр -C добавляет комментарий внутрь файла с открытым ключом, который на самом деле является обычным текстовым файлом. Впоследствии по этому комментарию я при необходимости смогу идентифицировать данный ключ. Теперь необходимо скопировать созданный открытый ключ на DD-WRT устройство, поместив содержимое файла с ключом в текстовое поле, находящееся в разделе SSH на странице Services
> Services
и отключить вход с помощью пароля, как показано на .

Остается нажать кнопку Save
, а затем кнопку Reboot Router
. Если у вас уже была открытая SSH-сессия, то она автоматически будет закрыта, а при следующем входе в систему пароль уже проверяться не будет. Если необходимо добавить несколько ключей, то они должны разделяться символом переноса строки.

Эти же действия можно выполнить и из командной строки, используя команду nvram . Убедитесь, что ваш открытый ключ в виде единой строки полностью находится в одинарных кавычках (в теле ключа могут встречаться пробелы, но не символы переноса строки).

При использовании nvram также можно установить несколько ключей, поместив отдельные ключи в кавычки и разделив их пробелами.

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

Команда nvram

Термин nvram
имеет несколько значений. Во-первых, это сокращение от non-volatile RAM, специального типа энергонезависимой памяти, сохраняющей данные при отключении питания. Флеш-память, используемая в маршрутизаторе, как раз относится к типу nvram
. Команда nvram используется для управления настройками аппаратного обеспечения, которые хранятся в последнем блоке флеш-памяти. Этот сегмент памяти часто также называется nvram
. Различные версии команды nvram учитывают специфику продуктов IBM, CISCO, Oracle и Apple. Версия команды nvram, используемой DD-WRT может только выводить и изменять значения, присвоенные переменным, а также удалять переменные. Если запустить её без указания опций, то будут выведены возможные опции и пример синтаксиса использования.

Команда nvram с параметром show выводит все доступные настройки вашего маршрутизатора. Вы можете использовать команду less , чтобы разделить имеющуюся информацию и выводить её постранично.

Или найти определенную переменную с помощью утилиты grep , как показано ниже.

Совет: если вы случайно отключите Web-интерфейс, но сохраните возможность подключения через telnet или SSH, то Web-интерфейс можно включить следующим способом.

Это изменение будет применено после перезагрузки. Значение параметра boot_wait нельзя изменить через GUI, но с помощью nvram это возможно. Сначала необходимо узнать текущее значение данного параметра.

Так как я крайне осторожна, то предпочту увеличить это значение до 10 секунд.

Стереть уже установленное значение переменной также очень просто.

Если вы не хотите, чтобы какое-то изменение можно было отменить, перезагрузив маршрутизатор, то просто не пользуйтесь командой nvram commit . Это хороший приём, который позволяет проводить эксперименты, так как достаточно просто перегрузить маршрутизатор, чтобы вернуться к предыдущему состоянию.

Команда nvram unset полностью удаляет указанную переменную. На ресурсе OpenWrt Wiki можно найти хорошее описание команды nvram (см. раздел » «).

Последним шансом на исправление испорченной конфигурации может стать сброс всех настроек маршрутизатора в значения по умолчанию, установленные в прошивке. Для этого необходимо нажать кнопку сброса (reset) на маршрутизаторе и удерживать её в течении 30 секунд, а затем перегрузить устройство. После этого будут восстановлены значения по умолчанию DD-WRT, а не оригинальной прошивки устройства, как ошибочно предполагают некоторые пользователи.

Создание второго раздела

JFFS2 — это журналируемая файловая система для флеш-памяти (Journalling Flash File System version 2), спроектированная для устройств хранения данных на основе флеш-памяти. Необходимо сделать небольшое отступление и рассказать, что такое флеш-память. Это специальное устройство, называемое MTD (Memory Technology Device). MTD – это не блочное устройство, в отличии от жестких дисков или USB-накопителей, но и не символьное устройство, как клавиатура или мышь. Блочные устройства построены на основе секторов фиксированного размера, например 512 или 1024 байта. В MTD-устройствах используются специальные «стираемые» блоки (eraseblock) размером 128 КБ или больше. Блочные устройства умеют делать две вещи: считывать и записывать сектора. MTD-устройства обладают большими возможностями: они могут считывать, записывать и «стирать» блоки.

Карты памяти Compact Flash и SD, USB-флешки на самом нижнем уровне также являются MTD-устройствами. Но для операционной системы они выглядят как блочные устройства, так как они используют технологию FTL (Flash Translation Layers — поуровневое преобразование флеш-памяти), которая эмулирует поведение блочного устройства поверх аппаратной флеш-памяти. Технология FTL может применяться в компьютере или в самом устройстве, в прошивке его контроллера. Если вы попробуете разобрать USB-накопитель, то, скорее всего, обнаружите в нём несколько NAND-чипов, которые и являются флеш-памятью, и микроконтроллер.

Для успешной работы с DD-WRT желательно знать несколько особенностей функционирования флеш-памяти. Во-первых, стираемые блоки NAND являются «атомарными», т.е. всё содержимое блока должно быть стёрто, прежде чем туда можно будет записать новые данные. Во-вторых, в Linux имеется подсистема MTD и команда mtd , позволяющие выполнять основные задачи, например, запись образа на устройство или его очистку. Чтобы получить информацию о синтаксисе и опциях команды mtd , её можно запустить на DD-WRT-устройстве без указания параметров. В DD-WRT WiKi также можно найти информацию и инструкции по работе с mtd . В-третьих, команда nvram располагается в самом последнем блоке и её размер программно ограничен 32 КБ, в независимости от того каков реальный размер блока.

Recover from a bad flash (EN): статья о том как восстановить маршрутизатор, после установки сбойной прошивки.
Web-сайт проекта DD-WRT .
Linux MTD : Web-сайт с отличной подборкой информации по различным устройствам для хранения данных.
DD-WRT Wiki : ресурс с различными руководствами по DD-WRT и списком поддерживаемых устройств.
Следите за

Поддерживаемые OEM-устройства

Прошивка DD-WRT была спроектирована для беспроводных маршрутизаторов стандарта IEEE802.11a/b/g/h/n, основанных на процессорах Atheros и Broadcom, например, Linksys WRT54GL, который по заявлению производителя поддерживает DD-WRT

Важной частью проекта DD-WRT являются списки устройств, поддерживающих данную технологию и несовместимых с ней. Рекомендуем использовать эти списки чтобы не тратить напрасно время на работу с несовместимым маршрутизатором (если только вы не хотите проверить, поддерживает ли данная модель DD-WRT, и затем поделится этими сведениями с сообществом)

Даже минимальная сборка DD-WRT для маршрутизаторов Broadcom, оборудованных всего 2 мегабайтами флеш-памяти, предлагает больше возможностей, нежели оригинальная прошивка от производителя. Для маршрутизаторов на основе Atheros требуется как минимум 4 МБ. Полную спецификацию устройства можно найти в базе данных, описывающей поддерживаемые устройства.

Вам, возможно, и не придется устанавливать DD-WRT самостоятельно, так как все больше производителей начинают поставлять оборудование с уже предустановленным DD-WRT. Компании Buffalo, Netgear, ASUS, Linksys и Toplink уже предлагают маршрутизаторы с уже инсталлированной прошивкой DD-WRT.

REAL SERVER РЕАЛЬНЫЙ СЕРВЕР

Нажав на ссылку подраздела REAL SERVER 9РЕАЛЬНЫЙ СЕРВЕР) , вы перейдете к подразделу EDIT REAL SERVER (НАСТРОЙКА РЕАЛЬНОГО СЕРВЕРА). В нем показано состояние физического сервера, выполняющего определенную виртуальную службу.

Рисунок 9-7. Подраздел REAL SERVER

Нажмите кнопку ADD (ДОБАВИТЬ) для добавления нового сервера. Для удаления существующего сервера, установите переключатель рядом с ним и нажмите кнопку DELETE (УДАЛИТЬ). Нажмите кнопку EDIT (ИЗМЕНИТЬ) для перехода к панели EDIT REAL SERVER (НАСТРОЙКА ВИРТУАЛЬНОГО СЕРВЕРА ), показанной на .

Рисунок 9-8. Панель настройки реального сервера

Эта панель состоит из трех полей:

Name (Имя)

Имя, описывающее реальный сервер.

Подсказка
 

Это имя не является именем компьютера, поэтому сделайте его описательным и легко понятным.

Address (Адрес)

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

Weight (Весовой коэфициент)

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

EDIT MONITORING SCRIPTS НАСТРОЙКА СЦЕНАРИЕВ МОНИТОРИНГА

В подразделе EDIT MONITORING SCRIPTS администратор может указать последовательности строк посылать/ждать для проверки корректной работы служб на каждом реальном сервере. Также здесь администратор может указать пользовательские сценарии, проверяющие службы, работающие сдинамически изменяемыми данными.

Рисунок 9-9. Подраздел EDIT MONITORING SCRIPTS

Send (Послать)

Введите в это поле строку, которую демон nanny будет посылать каждому реальному серверу. По умолчанию это поле заполняется показанной строкой для протокола HTTP. Вы можете изменить это значение как считаете нужным. Если вы оставите это поле пустым, демон nanny попытается просто установить соединение с портом, и, если ему это удастся, будет считать что служба работает.

В этом поле допускается только одна отправляемая последовательность, которая может содержать только печатаемые ASCII символы, а также приведенные ниже спецсимволы:

  • \n — новая строка.

  • \r — перевод строки.

  • \t — табуляция.

  • \ — отменяет специальное значение следующего символа.

Sending Program (Посылающая программа)

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

Для использования этой возможности вы должны написать сценарий, возвращающий текстовый ответ, сделать его исполняемым, и указать путь к нему в поле Sending Program.

Подсказка
 

Чтобы выполнить проверку каждого реального сервера в наборе, используйте специальный знак %h после пути к сценарию в поле Sending Program. Этот знак будет заменяться IP адресом опрашиваемого реального сервера при вызове сценария демоном nanny.

В подраздел EDIT MONITORING SCRIPTS включен пример сценария который вы можете использовать как образец для составления внешних сценариев, проверяющих службы.

Замечание
 

Если в поле Sending Program определен путь к внешней программе, поле Send будет игнорироваться.

Expect (Ждать)

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

Подсказка
 

Для определения строк которые можно посылать конкретной службе, установите telnet соединение с портом на реальном сервере и посмотрите что будет возвращено. Например, FTP, когда соединение установлено, возвращает 220 , так что вы можете ввести quit в поле Send и 220 в поле Expect.

Предупреждение
 

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

Настроив виртуальные сервера с помощью Piranha Configuration Tool, вы должны скопировать определенные файлы на резервный LVS маршрутизатор. За дополнительной информацией обратитесь к разделу
Синхронизация файлов конфигурации
.

Инсталляция

Процедура инсталляции зависит от конкретного маршрутизатора . Я использовала маршрутизатор Cisco/Linksys WRT160NL. Это довольно удобное небольшое устройство с четырьмя LAN-портами Ethernet, одним WAN-портом, 8 МБ флеш-памяти и 32 MB RAM, поддержкой технологии MIMO и USB-портом для подключения внешних устройств хранения данных, так что его можно использовать и в качестве файлового или медиа-сервера.

Для всех поддерживаемых маршрутизаторов есть подробные инструкции по установке. Необходимо точно следовать этим инструкциям и избегать «импровизаций», и тогда всё должно пройти хорошо. В процессе инсталляции периодически выдаются предупреждения о том, что нарушение этой процедуры может привести к полному выходу из строя устройства. Если ваш маршрутизатор все-таки «умрет», то попытайтесь восстановить его способами, описанными в статье «Recover from a bad flash» в wiki DD-WRT (см. ссылку в разделе » «). Правда, можно настолько сильно испортить программное обеспечение, что его даже нельзя будет восстановить с флеш-памяти.

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

IPTV через HTTP для просмотра по wifi

Если Ваш провайдер предоставляет услуги трансляции IPTV, так как Multicast вещание довольно сильно загружает канал, для просмотра iptv чезер Wifi
нужно преобразовать udp трафик в http, для этого выполним следующие действия:

Редактируем Startup

Добавляем комманду:

cd /
tmp
wget
http:

chmod
+
x udpxy
/
tmp/
udpxy —
a ip_адрес_роутера —
p 4760

m Ваш_внешний_Ip —
B 1Mb —
M 30

ip_адрес_роутера – если вы не меняли, то адрес 192.168.1.1

Ваш_внешний_Ip – Постоянный Ip-адрес предоставляемый провайдером.

В итоге полный Start скрипт должен быть примерно такой:

cd /
tmp
wget «http://files.0day.triolan.net.ua/triolan.ua/dd-wrt/atheros/udpxy»
>
http:
//files.0day.triolan.net.ua/triolan.ua/dd-wrt/atheros/udpxy

chmod
+
x udpxy
/
tmp/
udpxy —
a 192.
168.
1.
1 —
p 4760

m 178.
151.
85.
67 —
B 1Mb —
M 30

sleep
2

if
[

f /
mnt/
optware.
enable ]
;
then
mount —
o bind /
mnt/
etc /
etc
mount —
o bind /
mnt/
root /
tmp/
root
mount —
o bind /
mnt/
opt /
opt
else

exit

fi
if
[

d /
opt/
usr ]
;
then
export LD_LIBRARY_PATH=
«/opt/lib:/opt/usr/lib:/lib:/usr/lib»

export PATH=
«/opt/bin:/opt/usr/bin:/opt/sbin:/opt/usr/sbin:/bin:/sbin:/usr/sbin:/usr/bin»

else

exit

fi

После конфигурирования нажимаем “Save Startup”

Теперь для просмотра потока в IPTV Player нужно настроить сетевой интерфейс:

192.
168.
1.
1:
4760

Можно наслаждаться просмотром iptv по wifi
, без торможений, в высоком качестве.

Различия между опциями Save, Apply Settings и Reboot Router

На каждой странице с опциями для изменения конфигурации в Web-интерфейсе внизу имеются кнопки Save
(сохранить) и Apply Settings
(применить настройки), а иногда еще и кнопка Reboot Router
(перегрузить маршрутизатор). Кнопка Save
сохраняет ваши изменения, не применяя их, так что они не будут активированы до тех пор, пока маршрутизатор не будет перезагружен. Кнопка Apply Settings
сохраняет изменения и немедленно применяет их, при необходимости перезапуская службы. Кнопка Reboot Router
предназначена для изменений, требующих перезагрузки, поэтому необходимо их предварительно сохранить.

Ссылка на основную публикацию