Тачка на прокачку — настраиваем и расширяем возможности D-Link DNS-325

в 2:43, , рубрики: d-link, dns-325, linux, NAS, update, администрирование linux-систем, расширение возможностей, системное администрирование, метки: , , , , , ,

NAS. Доступное по сети файловое хранилище, место слива бэкапов, возможность хранить необходимые данные в одном месте. Но ведь не только! Сегодня мы будем награждать наш DNS-325 новыми фичами. Владельцы девайсов той же серии (например, DNS-320, DNS-345, DNS-346) тоже не уйдут обиженными. Под катом более десятка фото и скриншотов, будьте бдительны!
Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

Почему именно этот NAS? Во-первых, он имеет достаточно приличные характеристики: практически бесшумное охлаждение, 2 диска с интерфейсом SATA2 (3 диска нужно далеко не каждому, 1 диск — маловато будет), 1.2 Ггц процессор и 256 RAM. Кроме того, на нем установлен самый себе настоящий linux, а значит можно заставить его делать почти что угодно! Заранее хочу предупредить — я не очень опытный пользователь linux, так что если где-то намудрил с терминологией, о чем то забыл или добавил лишний шаг — буду рад замечаниям!

0.Обновление прошивки
Первым делом крайне рекомендую обновить прошивку, благо, последняя версия сильно стабилизирует работу и убирает массу багов, например — в работе FTP-сервера. Обновление выполняется очень просто — качаем прошивку с официального FTP — ftp://ftp.dlink.ru/pub/NAS/DNS-325/Firmware/ (на момент написания последняя версия 1.03, файл ftp://ftp.dlink.ru/pub/NAS/DNS-325/Firmware/DNS-325_A1_FW_v1_03.rar ), распаковываем (внутри будет tar файл), идем на вот эту страничку в системе и обновляемся:Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325
1.Важно знать про диски

  1. Формат файловой системы — EXT3. Без вариантов. Если у вас другая — придется переформатировать, NAS умеет это делать самостоятельно.
  2. Формат файловой системы USB-винтов и флешек — как EXT3, так и FAT/NTFS.
  3. Скрипты для управления Осью ставятся на первый винт (Volume1), если вы смотрите на NAS — он будет справа.
2.Создаем шары (доступные по сети папки)

Тут всё конечно просто, но есть один подвох, ставивший в тупик не только меня: что бы получить список директорий — надо кликать по названию папки или винта.Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325
После создания директорий — создаем пользователей.
Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325
Там же на ходу указываем, какой пользователю нужен доступ, кроме SMB (стандартный для windows доступ к директориям) — например, FTP.
Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325
3.Подключаем FTP

Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325Как видно из скриншота, всё просто. Но вот что важно: после добавления новых пользователей или удаления старых крайне желательно перезапустить FTP, если он не сделал этого сам.Кроме того, если у вас NAS воткнут в роутер — не забудьте пробросить порты наружу! (если вам нужен доступ к FTP из залокалья). На моём D-Link DIR-615 например настройки выглядят так:Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325
4.Подключаем видео-трансляцию (UPnP медиа-сервер, чем смотреть на андроиде)

Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325Включаем, выбираем папки… Поддерживает все встретившиеся мне типы файлов. Минусы: реиндексацию придется запускать руками. Неприятно.Чем смотреть видео? На планшете и телефоне у меня андроид, так что я использую бесплатный UPnPlay.
5.Устанавливаем fun_plug (ssh доступ к NASу)

Заранее озаботьтесь telnet и ssh-клиентами — я под Windows пользуюсь банальным putty, но их так много, что рекомендовать нечто конкретное я не решусь.
  1. Итак, во-первых, заливаем на первый винчестер файлик fun_plug (http://wolf-u.li/u/433) и fun_plug.tgz (http://inreto.de/dns323/fun-plug/0.7/arm/fun_plug.tgz)
  2. Перезагружаем NAS — теперь мы можем подключаться по telnet. Подключаемся по имени или адресу — без пароля!

    Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

  3. Устанавливаем root'овый пароль
    usermod -s /ffp/bin/sh root
    mkdir -p /ffp/home/root/
    sed -ie 's#:/home/root:#:/ffp/home/root:#g' /etc/passwd
    pwconv
    

    Если появятся ошибки '«usermod»: «usermod: no changes»' или '«pwconv»: «pwconv: failed to change the mode of /etc/passwd- to 0600»' — просто игнорируйте их.

    passwd
    

    Вводим новый пароль.

    login
    

    Вводим логин root и ваш пароль — получаем в ответ сообщение «no mail». Следующие действия необходимы для сохранения пароля:

    wget http://wolf-u.li/u/172/ -O /ffp/sbin/store-passwd.sh
    store-passwd.sh
    

    Активируем SSH

    chmod a+x /ffp/start/sshd.sh
    sh /ffp/start/sshd.sh start
    

    А теперь — подключаемся в другом окне по SSH, отвечаем утвердительно на вопрос о сохранении ключа, и если всё прошло гладко — отключаем автостарт telnet-сервиса в первом окне:

    chmod -x /ffp/start/telnetd.sh
    

    Подготовка завершена — теперь у вас есть полноценный доступ и полный контроль над системой. Если же вдруг внезапно вам понадобится удалить fun_plug, то

    1. Удаляем файл в корне fun_plug
    2. Перезагружаемся
    3. Удаляем директорию ffp
6.Устанавливаем дополнительные репозитории (нужны для шагов 7-9, да и просто полезны)

  1. Добавляем дополнительные репозитории
    echo "mijzelf http://downloads.zyxel.nas-central.org/Users/Mijzelf/FFP-Stick/packages/0.7/arm" >> /ffp/etc/funpkg/sites
    echo "memiks http://ffp.memiks.fr/pkg" >> /ffp/etc/funpkg/sites
    echo "kylek http://kylek.is-a-geek.org:31337/files/ffp/0.7-arm" >> /ffp/etc/funpkg/sites
    
  2. Устанавливаем Optware
    wget http://wolf-u.li/u/233 -O /ffp/start/optware.sh
    chmod a+x /ffp/start/optware.sh
    /ffp/start/optware.sh start
    

После этих действий рекомендую перелогинитья. Теперь вы можете работать с репозиториями двумя путями:

  1. Через slacker. Достаточно удобен за счет полноценного визуального интерфейса в текстовом режиме.
    slacker -U<br/> 
    

    обновить информацию о доступных программах

    slacker -i
    

    установить программу (выбрать в визуальном интерфейсе нужную)

    slacker -r
    

    удалить программу (выбрать в визуальном интерфейсе нужную)

  2. Через ipkg. Команды:
    ipkg update
    

    обновить информацию о доступных программах

    ipkg upgrade
    

    обновить установленные программы

    ipkg install [название программы]
    

    установить программу

    ipkg info [название программы]
    

    получить информацию о программе. В названии можно использовать шаблоны, например, «scree*»

    ipkg remove [название программы]
    

    удалить программу.

7.Устанавливаем Midnight Commander (файловый менеджер)

Зачем он нужен? Производить Операции над файлами и папками внутри массива. Мне он нравится больше, чем браузерный интерфейс, работает быстрее, можно запустить на фоне, разлогиниться, а он будет себе копировать/перемещать.

  1. Изначально у меня постоянно были проблемы с русскими буквами, расцветкой, управлением клавишами курсорными (выбирайте любые 2, а то и 3), но таки был выработан следующий алгоритм. Собственно, устанавливаем:
    ipkg install pcre glib e2fsprogs slang libpng mc
    
  2. Создаем скрипт с именем mc.sh (ну или любым другим) в папке /ffp/etc/profile.d/ со следующим содержимым:
    #!/ffp/bin/sh
    export TERM="xterm"
    export TERMINFO="/ffp/share/terminfo"
    export LANG="en_US.utf8"
    
  3. Выполняем команду
    chmod a+x /ffp/etc/profile.d/mc.sh
    

    После чего перелогинимся.

  4. Теперь можете запускать коммандер командой
    mc
    

    И у вас будет и поддержка русских имен файлов, и нормальное управление клавишами. Если есть таки проблема с русскими именами — идем вот в это меню и всё будет хорошо:Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

    Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

    Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

8.Устанавливаем screen (запускаем команды на фоне)

Screen — крайне полезная утилита, позволяющая вам создавать «экраны», работающие на фоне. Вся прелесть в том, что если прервется связь или вы закроете putty — сеанс пользователя останется работать на фоне. Пригодно, если нужно что-то скачать наприме, или переместить папку с диска на диск. Подключаемся, запускам screen, отдаем команду, отключаемся — а NAS знай себе шуршит и выполняет указание.

  1. Устанавливаем
    ipkg install screen
    
  2. Создаем скрипт с именем screen.sh (ну или любым другим) в папке /ffp/etc/profile.d/ и следующим содержимым:
    #!/ffp/bin/sh
    alias screen="screen -U"
    

    Это необходимо для автоматического запуска screen'а в UTF8 режиме. Перелогинимся.

Теперь — как им пользоваться.
screen — запустить экран
screen -R — вернуться в последний запущенный экран. Если экранов несколько — будет выдан список, начинающихся с номеров — переход в конкретный экран идет командой screen -R [номер].
ctrl+a D — выйти из экрана, не закрывая его (отцепиться от окна)
ctrl+a k — закрыть текущее окно

9.Устанавливаем Transmission (торрентокачалку)

Хотя в NASе есть встроенная качалка торрентов, качество её работы столь далеко от идеала, что установить иную крайне-крайне желательно, если вам конечно нужен такой функционал.

  1. Выполняем команду
    slacker -i
    

    выбираем transmission и curl, после нажимаем «ok».

  2. Выполняем следующие команды
    chown -R nobody /mnt/HD/HD_a2/torrent
    mkdir /ffp/var/transmission
    mkdir /ffp/var/transmission/incomplete
    chown -R nobody /ffp/var/transmission
    
  3. Теперь редактируем файл /ffp/start/transmission.sh, меняем путь на такой:
    TRANSMISSION_HOME=/ffp/var/transmission
    
  4. Выполняем команду для первого запуска и инициализации конфига:
    su nobody -c "transmission-daemon -f -g /ffp/var/transmission -w /mnt/HD/HD_a2/torrent -t -u admin -v password -a 127.0.0.1,192.168.*.*"
    

    Где admin — ваше имя пользователя для работы с веб-интерфейсом, password — пароль для него же, 127.0.0.1,192.168.*.* — перечень IP, с которых можно будет войти в веб-интерфейсПодождите запуска, после чего завершите работу системы нажатием CTRL+C.

  5. Далее — настраиваем. Для этого отредактируем файлик /ffp/var/transmission/settings.json
    Наиболее интересные для нас строки:

    "incomplete-dir": "/ffp/var/transmission/incomplete",
    

    Директория для недокачанных файлов

    "incomplete-dir-enabled": true,

    Хранить недокачанные файлы в данной директории

    "peer-port": 11000,
    "peer-port-random-high": 11999,
    "peer-port-random-low": 11001,
    

    Порты для скачивания и отдачи.

    "rpc-port": 9091,
    

    Порт, по которому будет доступен веб интерфейс. Например, в данном случае он будет работать по адресу http://192.168.0.200:9091 изнутри сети

    "rpc-whitelist": "127.0.0.1,192.168.*.* "
    

    Сделать доступным веб-интерфейс только с этих IP

    "rpc-whitelist-enabled": true,
    

    Включить ограничение доступа к панели управления по IP.

  6. Завершаем установку:
    chown -R nobody /ffp/var/transmission
    chmod a+x /ffp/start/transmission.sh
    /ffp/start/transmission.sh start
    

Плюс не забудьте прокинуть наружу порты, в моём DIR-615 настройки выглядят так:Тачка на прокачку — настраиваем и расширяем возможности D Link DNS 325

10.Нерешенные проблемы

  • UPnP сервер автоматически не реиндексирует файлы — нужно делать это вручную.
  • Не удалось скомпилировать davfs2 или иной сервис/утилиту для работы c WebDav. Точнее, оно конечно компилируется, при запуске — просит логин, пароль, уточняет, уверены ли мы… После чего падает. Молча. Соответственно, не удаётся по WebDav монтировать облачные хранилища вроде Dropbox или Яндекс.диска.
  • Внешние USB-носители подключаются с правами «все всем можно». Ограничить нельзя.
  • При работе изнутри screen'а не работают клавишы PageUp/PageDown (вместо них набираются буквы)

Возможно, Хабросообщество поможет с данными проблемами мне и другим будущим/нынешним владельцам данного устройства

11.Список использованной литературы

Автор: Newbilius

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js