Собрались админы в поход, а сервер дома забыли. (страшный сон)
Идея построить автономное сетевое хранилище, как и множество подобных, родилась в сумбуре мыслей, вызванных, не в последнюю очередь, переходом многих компаний на отечественное ПО. Одним из таких программных продуктов, начавших свое победное шествие по стране, является операционная система Astra Linux, хранящая соответственно в своих недрах операционную систему Debian. Так случилось, что с системой Астры мне пришлось иметь дело в профессиональной деятельности. Думая о тренировке своих сил в линуксе, я и вспомнил о наличии у меня такого прекрасного произведения китайского творчества, как Orange Pi Lite 2. Для создания NAS подойдет почти любая плата из линейки Orange Pi или Raspberry Pi, главное не брать уж слишком старую - не более 10 лет, но и слишком новая и дорогая тоже будет излишне мощной.
Эта маленькая плата построена на процессоре H6 Quad-core 64-bit ARM Cortex™-A53, 1 Gb оперативной памяти. Она отличается наличием WiFi, двух USB, один из которых версии 3.0, что и станет впоследствии звеном событий, приведшим меня в мир хранилищ. Размеры у неё небольшие - 69 мм × 48 мм вес 50г. Плата была выпущена лет шесть назад, и, по современным меркам, неспешная, но для обучения и тренировок, отлично подходит.
Первым шагом стала простая установка операционной системы на мою плату. Делал все строго с компьютера по управлением Windows. В целом, последовательность действий, следующая:
флеш карта формата microsd , быстрая и надёжная вставляется в кардридер и на нее записывается система. Для записи используется программа USBImager https://gitlab.com/bztsrc/usbimager
Так же крайне рекомендую проделать следующую операцию после записи.
С помощью любой программы управления дисками уменьшить размер раздела на флешке после записи. Флешки сейчас довольно объемные, менее 16 Гб найти сложно. А порой очень хочется сохранить себе образ уже с наработками и настройками. И для такого бэкапа я использовал Win32DiskImager https://win32diskimager.org. Главное поставить галочку Read Only Allocated Partition.
Дистрибутив операционной системы, конечно же это Armbian, заточенный на архитектуру ARM Debian, берем с официального сайта https://www.armbian.com/orange-pi-lite-2/
Дистрибутивы делятся по степени поддержки. На мою плату, к сожалению, доступен только, так называемый, Community Support, с минимальной поддержкой, но и этого вполне достаточно. Из двух вариантов предлагаемых дистрибутивов, ставим минимальный. Он называется примерно так Armbian_community_24.11.0-trunk.25_Orangepilite2_noble_current_6.6.44_gnome_desktop.img.xz
После как дистрибутив записали вынимаем карту и вставляем ее в плату, подключаем питание HDMI, мышку и клавиатуру. Если все сделано верно картина на экране следующая.
Немного потренировавшись в настройках системы, я решил попробовать, а сможет ли данная плата работать от пауэрбанка. Блок питания для данной платы требуется 5 вольт 3 ампера. Более или менее свежего пауэрбанка у меня в закромах не нашлось, поэтому закупил один из самых простейших но ёмких Perfeo Waterfall 40000 mAh.
При проверке на практике в моей конфигурации потребление платы, снятое с лабораторного блока питания, колебалось от 0.6 до 1 ампера.
Как уже упоминалось выше, у платы в наличии один USB 3.0 (или 3.1 gen 1), так что, само собой, решил его задействовать как файлообменник. Для снижения потребления электроэнергии взял SSD для теста на 250 Гб. И переходник к нему. Никакими характеристиками не морочился, брал бюджетное, диск вообще из закромов. В USB 2.0 подключил сетевую USB карту от старого ноутбука ASUS.
Так же к сборке добавился вентилятор 40мм самой убогой из фирм Exegate, но как говорится, на безрыбье и Exegate кулер, до Noctua проект ещё не дорос.
Всё было собрано навесом на столе и начался процесс настройки
Сетевая схема была следующая: USB карта работает, как канал скачивания торрентов и быстрого доступа. Встроенный WiFi работает, как точка доступа, предоставляя доступ к хранилищу для устройств, может работать как мост с проводным интерфейсом (в моей конфигурации отключено). В моем случае все железо система armbian поняла по умолчанию. Если какой-то интерфейс не появился в системе, то стоит поискать драйвера.
Общий список соединений выводится командой ip a
Подключаемся к сети и устанавливаем следующие пакеты в armbian, предваряя стандартным sudo apt update && sudo apt upgrade
bridge-utils
bsdutils
debconf-utils
debianutils
hostapd
openvswitch-common
openvswitch-switch
usbutils
wireguard-tools
wireless-tools
wpasupplicant
network-manager
isc-dhcp-server
Основную настройку можно разделить на три этапа:
Настройка NETPLAN
Это утилита для настройки сети, конфигурация пишется на языке YAML.
Файлы конфигурации лежат в папке /etc/netplan и имеют расширение .yaml
Вот пример моего файла:
# Added by Armbian
#
# Reference: https://netplan.readthedocs.io/en/stable/netplan-yaml/
#
# Let systemd-networkd manage all Ethernet devices on this system, but be configured by Netplan.
network:
version: 2
renderer: networkd
ethernets:
enx9cebe80e3204:
dhcp4: yes
dhcp6: no
wlan0:
dhcp4: no
# optional: yes
addresses:
- 192.168.88.1/24
# bridges:
# br0:
# dhcp4: yes
# interfaces:
# - wlan0
# - enx9cebe80e3204
Имеет значение расположение элементов - подпункт отодвигается на два пробела, за символом # идут комментарии и данные не читаются.
У меня в наличии два интерфейса “wlan0:” - это встроенная wifi карта, и “enx9cebe80e3204:” - это сетевой USB интерфейс ASUS. Далее все просто - сетевой карте дается разрешение получать адрес dhcp, а WiFi получает статический адрес с маской 255.255.255.0. Главное чтобы адресация WiFi и Ethernet не пересекались, на интерфейсе WiFi будет работать сервер DHCP
Настройка isc-dhcp-server
Далее настраиваем DHCP сервер:
/etc/default# nano isc-dhcp-server
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
#DHCPDv4_CONF=
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
#DHCPDv4_PID=/var/run/dhcpd.pid
#DHCPDv6_PID=/var/run/dhcpd6.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
#OPTIONS=""
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="wlan0"
#INTERFACESv6=""
Здесь только одна настройка работать только на интерфейсе WiFi "wlan0"
/etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
# option definitions common to all supported networks...
option domain-name "orange_nas";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;
# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;
# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
#subnet 10.152.187.0 netmask 255.255.255.0 {
#}
# This is a very basic subnet declaration.
subnet 192.168.88.0 netmask 255.255.255.0 {
range 192.168.88.10 192.168.88.100;
option routers 192.168.88.1;
}
Указываем доменное имя "orange_nas";
Сервера DNS 8.8.8.8, 8.8.4.4;(Это сервера Google можно любые на ваш выбор если сеть не связана мостом с интернетом (см. выше) это не принципиально)
Остальное как есть.
Внизу главная настройка подсеть и маска (subnet 192.168.88.0 netmask 255.255.255.0), должны совпадать с настройками интерфейса в NETPLAN, в скобочках {} диапазон выдаваемых адресов и адрес нашего сервера на интерфейсе WiFi "wlan0".
Настройка HOSTAPD
/etc/hostapd/hostapd.conf
Это настройка точки доступа, ниже опишу каждый пункт.
interface=wlan0
driver=nl80211
# the interface used by the AP
hw_mode=a
# g simply means 2.4GHz band
channel=48
# the channel to use
ieee80211d=1
ieee80211ac=1
# limit the frequencies used to those allowed in the country
country_code=RU
# the country code
ieee80211n=1
# 802.11n support
wmm_enabled=1
# QoS support
# ignore_broadcast_ssid=0
ssid=Orange_AP
# the name of the AP
auth_algs=1
# 1=wpa, 2=wep, 3=both
wpa=2
# WPA2 only
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
wpa_passphrase=Password
Интерфейс на котором запускаем точку доступа interface=wlan0
Драйвер (в зависимости от оборудования) driver=nl80211
Тип сети(a - 5Hhz g - 2.4Hhz) hw_mode=a
Канал(внимательно смотрите какие каналы на каких частотах)channel=48
Разрешение работы с данным типом сети ieee80211d=1
Разрешение работы с данным типом сети ieee80211ac=1
Разрешение работы с данным типом сети ieee80211n=1
Частотные ограничения в стране пребывания country_code=RU
Просто разрешаем wmm_enabled=1
Имя точки доступа ssid=Orange_AP
Алгоритмы авторизации
auth_algs=1
# 1=wpa, 2=wep, 3=both
wpa=2
# WPA2 only
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ПАРОЛЬ !!!
wpa_passphrase=Password
Настройка Openmediavault и его плагинов
Ну и наконец, переходим непосредственно к настройке хранилища.
https://www.openmediavault.org
Дело в том, что последняя версия ARMBIAN, на данный момент, bookworm, а на него ставится только версия 7 Openmediavault (на данный момент 7.4.6-1 (Sandworm), поэтому стандартный способ через armbian-config не работает и для установки воспользовался скриптом:
https://github.com/OpenMediaVault-Plugin-Developers/installScript
Сеть настраивалась вручную, значит настройки сети пропускаем
wget https://github.com/OpenMediaVault-Plugin-Developers/installScript/raw/master/install
chmod +x install
sudo ./install -n
устанавливаться будет долго, но после установки при открытии в браузере адреса сети получим окно приветствия и введем admin и пароль openmediavault
Соответственно доступ будет с каждого интерфейса на свой адрес (wifi адрес указан в настройках, ethernet получен по dhcp смотреть в роутере или на сервере).
Для доступа к диску найдем его в хранилище.
Потом создадим файловую систему (в связи с небольшой памятью и мощностью рекомендую классику ext4) ВНИМАНИЕ - ДАННЫЕ НА ДИСКЕ УДАЛЯТСЯ!!!
Потом общий каталог
Далее добавим сервисы:
FTP - сервер FTP(если нужен)
Flashmemory - системный
MiniDLNA - медиконтент по сети
NFS - сервер NFS(если нужен)
Rsync
SMB/CIFS -Доступ из систем windows
SSH
iPerf3 -Измерение скорости доступа к серверу
Переходим к торентокачалке
Compose
Добавим галочку в omv-extras
Перейдем в сервисы в настройки compose
Добавим места размещения данных на диске. Перейдем в файлы и добавим из примеров qbittorent. Вход по тому же адресу но используя свой порт 8080.
Пароль добыть несколько сложнее -после запуска сервиса необходимо перейти в логи и посмотреть там временный пароль, его естественно поменять.
Итак, основной софт готов, теперь можно заняться окончательно моделингом, сборкой и корпусом.
Для начала создал деталь, объединяющую вместе плату Orange Pi, кулер и ssd диск. Моделировал в своем любимом ПО Solidworks
Собрал, добавил pbs 2.54 разъем для подключения питания непосредственно к колодке GPIO
Окончательная сборка при помощи 3D печати
в следующей главе.