Сетевое хранилище жизненно необходимо системным администраторам, обслуживающим корпоративные сети с большими объёмами трафика. К тому же такое устройство можно устроить у себя дома, создав на его базе свое-образный «файловый склад». К сожалению, нынешняя экономическая ситуация такова, что далеко не каждый пользователь может позволить себе такую покупку, поэтому умельцам приходиться идти на различные ухищрения.
В данной статье рассмотрена реализация полноценного файлового хранилища, созданного на базе одноплатного мини-ПК Raspberry Pi 2. Представленное устройство умещается на ладони, а его производительности более чем достаточно для решения поставленной задачи. Нам понадобятся:
- компьютер Raspberry Pi 2;
- карта памяти microSD на 8–16 Гб;
- работающий роутер;
- кабель microUSB–USB;
- блок питания с USB-разъёмом (5 В, 2 А);
- внешний HDD-накопитель;
- USB-Hub с внешним питанием от сети 220 В;
- Ethernet-кабель или USB-адаптер беспроводной сети (для подключения к роутеру).
Установка ОС и настройка Raspberry
Первоначально необходимо подключить к Raspberry монитор и клавиатуру. На microSD-карту записываем образ официальной операционной системы – Raspbian. Питание Rasbperry pi 2 осуществляется через microUSB-порт. При первом же запуске мы увидим меню настроек (см. рис. 1), которое также можно вызвать командой sudo raspi-config.
Здесь же рекомендуется включить SSH-протокол, выбрать удобную раскладку клавиатуры, а также изменить стандартный пароль пользователя на более простой. Сохраняем настройки и перезагружаемся.
Затем подключаемся к домашней сети посредством беспроводного USB-адаптера или же кабеля с патч-кордом. Как только вы убедитесь, что Raspberry подключена к Интернету, введите следующие команды: sudo raspi-update, затем sudo apt-get update и sudo apt-get upgrade.
Этими действиями мы обновили операционную систему и все установленные пакеты.
Статический IP
Для удобства следует присвоить Raspberry постоянный IP-адрес. Делается это изменением соответствующего конфигурационного файла. Вводим в терминале команду sudo nano/etc/network/interfaces. Удаляем всё содержимое и вставляем свои данные:
iface <сетевой_интерфейс(eth0 или wlan0)> inet static
address <IP_Raspberry>
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
Адрес broadcast и маску сети можно узнать при помощи команды sudo ifconfig. Geteway выводится командой sudo route -nee. Перезагружаемся командой sudo reboot.
Дальнейшие наши действия будут зависеть от типа операционной системы, установленной на основном компьютере. Это может быть либо Windows, либо Linux и ему подобные системы. Рассмотрим оба варианта.
SSH-подключение для Windows
Этот вариант самый простой. Первым делом подключаемся к Raspberry через SSH-клиента. Можно использовать Putty – простой клиент, открывающий доступ к удалённому терминалу. Ключ безопасности для клиента и сервера генерируется автоматически при первом же подключении. Для подключения с помощью клиента Putty достаточно перейти на вкладку SSH, создать новое соединение на основе IP-адреса и подключиться. Программа так же попросит ввести комбинацию логин-пароль от Raspberry. Скриншот рабочей области описанного клиента представлен на рисунке 2.
Если соединение установлено успешно, вы увидите соответствующее сообщение в новом окошке терминала.
Подключение для Linux
Обычно на Linux-дистрибутивах ключи для SSH-соединения генерируются самим пользователем. Поэтому переключаемся на основной ПК и вводим: ssh-keygen -t rsa -C “your_email@ex.com”.
Далее копируем ключи на Raspberry, используя команду ssh-copy-id pi@<IP_Raspberry>.
Затем соглашаемся с подключением и вводим пароль от своей учётной записи. На этом всё. Подключиться к будущему серверу можно командой ssh pi@<IP_Raspberry>, где «pi» – имя основного пользователя. Кстати, можно создать нового пользователя. Для этого необходимо зайти от имени root и ввести usermod -l <New_ name> -d /home/<New_ name> -m pi.
Теперь можно отключать монитор и клавиатуру от Raspberry, поскольку для нашего же удобства дальнейшие процедуры будут выполняться с основной машины по SSH-соединению.
Безопасность SSH-соединения
Как обезопасить свой SSH-канал и упростить процесс подключения? Запрещаем вход под «рутом», отключаем проверку пароля и меняем стандартный SSH-порт в соответствующем файле sudo nano/etc/ssh/sshd_config.
Требуемые изменения выглядят следующим образом:
PasswordAuthentication no
PermitRootLogin no
Port 22222 (пример нового порта)
Перезагружаем Raspberry. Однако теперь, чтобы подключиться по SSH, нам потребуется указывать новый порт и новое имя пользователя, если таковой имеется. Такая команда будет слишком громоздкой: ssh -p 22222 <имя_пользователя>@<IP_Raspberry>.
Упростим эту процедуру, перейдя в домашний каталог и открыв файл-конфиг nano .ssh/config.
Добавляем сюда следующий код:
Host <IP_Raspberry>
Hostname <имя хоста>
User<имя пользователя>
Port 22222
Теперь подключение по SSH вы-полняется по упрощённой команде ssh <IP_Rasbperry>.
Подключаем HDD
Raspberry Pi 2 не всегда способна работать с внешними HDD – сказывается нехватка питания. Именно поэтому потребуется USB-Hub с отдельным питанием. Необходимо подключить хаб к Raspberry через USB-интерфейс. Накопитель подключается к хабу. Общая схема подключения изображена на рисунке 3.
Теперь подключаемся к Raspberry по SSH и создаём папку, в которую будет монтироваться содержимое нашего HDD. Создаём новую директорию: sudo mkdir hdd. Далее – sudo blkid. Это специальная утилита, позволяющая узнать UUID жёсткого диска. На выходе мы получим следующее: /dev/sda1: LABEL=”Seagate Expansion Drive” UUID=”7CD8ECADSF2A6” TYPE=”NTFS”.
Нам требуется поле UUID. Запоминаем его значение и работаем над совмести-мостью новой файловой системы: sudo apt-get install ntfs-3g. Затем открываем текстовый файл fstab (sudo nano /etc/fstab) и дописываем туда короткую строку: UUID=”<полученный_UUID>” <путь_к_папке_hhd> ntfs-3g rw,force,exec,users 0 0.
Сохраняем и перезагружаемся. Нами получено серверное хранилище, содержимое которого отображается на компьютере Raspberry Pi 2 в папке hhd.
Работаем с Raspberry вне локальной сети
Иногда у пользователя нет возможности перенастроить сервер по локальной сети. Поэтому рассмотрим вариант удалённого подключения к нашему устройству извне. Если пользователь является обладателем статического IP внешней сети, то процесс значительно упрощается – делаем переадресацию внешнего адреса на внутренний.
Обладателям динамического IP потребуется использовать dynamic DNS. Рекомендую использовать www.noip.com. Заходим на этот сайт, регистрируемся и переходим к ADD A HOST. В соответствующем поле вводим наш IP и добавляем хост. Затем, ищем DDNS-опции в настройках роутера и забиваем в соответствующих полях данные с полученного аккаунта и, собственно, доменное имя. Если таких настроек нет, пользователю потребуется скачать программу Dynamic DNS Update Client и настроить аналогичным образом. Так сервис Noip будет знать ваш новый IP.
Теперь переадресуем внешний IP на локальный. Открываем настройки роутера, находим вкладку «Переадресация», затем «Виртуальные серверы» и вносим изменения:
Порт сервиса: 22222
Внутренний порт: 22222
IP-адрес: <исходный IP>
Протокол: Все
Заходим на Raspberry через SSH и открываем файл .ssh/config. Добавляем сюда:
Host <имя домена>
Hostname <имя домена>
User <имя пользователя>
Port 22222
Теперь можно соединяться с сервером из любой точки мира, главное, чтобы под рукой был стабильно работающий Интернет.
Ставим SSHFS
Раз уж мы затронули тему подключения к серверу извне, то смонтируем удалённую папку по SSHFS. Таким образом, пользователь сможет пользоваться хранилищем вне локальной сети, что достаточно удобно в наши дни.
Сначала следует установить SSHFS на основную машину (в данном случае рассматривается компьютер с Linux) – команда: sudo apt-get install sshfs.
Затем создадим каталог, в который будет монтироваться Raspberry: mkdir pi.
Сразу же монтируем Raspberry в но-вый каталог: sshfs <IP_Raspberry>: /home/<имя_пользователя>/hdd pi.
Теперь все данные с жёсткого диска можно брать из папки pi, которая расположена на основной машине. Пользователь может пользоваться «новым» хранилищем не только дома, но и за его пределами.
Литература
- www.geekelectronics.org/raspberry-pi/raspberry-pi-pervyj-zapusk.html.
- www.nixp.ru/articles/5.html.
- www.beget.ru/articles/ssh_windows.