Создаём файловый сервер на Raspberry Pi.

Удалённое подключение к Raspberry.

Имя  
Эл. почта  
Сообщение  
  

Программу Raspberry Pi Imager можно скачать с Яндекса.

Напишите отзыв.

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

 

Топология сети.

И так флэшка готова. Вставляем флэшку в Raspberry. Как уже упоминалось при первом включении подключаем к Raspberry клавиатуру и монитор. Подаём питание на Raspberry. После загрузки ОС попросит ввести логин и пароль, вводим логин -  ubuntu и пароль – ubuntu. Далее ОС предложит изменить пароль, сначала вводим пароль ubuntu, а затем вводим новый пароль, повторяем введённый пароль и вуаля система загружена. Здесь нужно посмотреть и записать IP адрес.

В качестве хранилища у меня нашолся старенький SSD диск на 120GB. Подключается диск через адаптер SATA – USB. Подключение монитора и клавиатуры нужно только сначала для ввода нового пароля и определения IP адреса Raspberry Pi в сети. Подключение к сети производиться по сетевому кабелю.

Установка linux Ubuntu Server 20.04.2

        В качестве операционной системы использовали Ubuntu Server 20.04.2 LTS. В Raspberry ОС загружается с флэшки, поэтому произведём запись образа ОС на флэшку с помощью программы Raspberry Pi Imager (программу можно скачать с Яндекса, ссылка в конце статьи).

Запускаем программу Raspberry Pi Imager. Нажимаем кнопку «CHOOSE OS» и выбираем пункт «Other general purpose OS». Далее выбираем пункт «Ubuntu».

В открывшемся окне выбираем пункт «Ubuntu Server 20.04.2 LTS» для 64 разрядной системы.

В следующем окне нажимаем кнопку «CHOOSE STORAGE», здесь нужно указать на какой носитель будет установлен образ. Ждём пока запишется на флэшку образ.

Далее клавиатуру и монитор можно отключить от Raspberry.

      Дальнейшие манипуляции с Rasberry будем проводить удалённо с компьютера под управлением Windows.

Если есть необходимость определения IP адреса удаленного Rasberry из-под Windows, это можно сделать из под cmd. Вводим команду arp –a

Для подключения к Rasberry из-под Windows используем программу putty.

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

Настройка FTP.

      Для файлового сервера в принципе достаточно настроек по умолчанию. Но всё же лучше проверить настройки и при необходимости поправить.

Производим обновление списка из официальных репозиториев и установку программы.

 

   sudo apt update

   sudo apt install vsftpd

 

После загрузки и установки FTP включаем сервис vsftpd и добавляем в автозагрузку.

 

   sudo systemctl start vsftpd

   sudo systemctl enable vsftpd

 

Далее производим настройку FTP. Но сначала сделаем копию файла конфигурации.

 

   sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

 

     Так как далее будем использовать встроенный редактор VI, опишем несколько основных команд редактора:

i – включает режим ввода текста;

: - включает режим команды.

В режиме ввода текста можем менять параметры файла, выход из режима Esc. Командный режим позволяет:

u – отмена последней команды;

wq – записать файл и выйти из редактора.

 

Открываем конфигурационный файл vsftpd.conf  в редакторе.

 

     sudo vi /etc/vsftpd.conf

 

В редакторе нужно проверить следующие настройки и при необходимости разблокировать:

  •  anonymous_enable = NO  - включить анонимный вход;
  •  local_enable = YES  - разрешить вход локальных пользователей;
  •  write_enable = YES  - авторизированные пользователи могут изменять файлы;
  •  local_umask = 022   - устанавливаем права доступа к чтению и изменению файлов и каталогов;
  •  dirmessage_enable = YES   - сообщения о выборе каталога после регистрации;
  •  xferlog_enable = YES   - записывать в лог файл все транзакции по передачи файлов;
  •  xferlog_std_format=YES   - стандартный формат лога;
  •  connect_from_port_20 = YES   - назначаем 20 порт для передачи данных;
  •  pam_service_name=vsftpd   - использовать PAM-библиотеки.

 

Далее сохраняем файл и выходим из редактора (команда wq). Перезапускаем файл vsftpd:

 

     sudo systemctl restart vsftpd.

Монтирование жесткого диска.

     Создадим каталог usbdrive , в который будет монтироваться жёсткий диск (хранилище файлов с общим доступом).

 

     sudo mkdir /mnt/usbdrive

 

Добавим права на запись: 

 

     sudo chmod 777 /mnt/usbdrive

 

Включаем автоматическое монтирование. Для этого изменяем файл fstab в редакторе VI:

 

     sudo vi /etc/fstab

 

В конце файла нужно вставить следующее:

 

     /dev/sda1 /mnt/usbdrive ntfs-3g default,rw 0 1

 

Сохранить файл и выйти.

Установка и настройка Samba.

      Вот и добрались до создания файлового сервера.

Сначала обновим инсталляционные пакеты и установим программу Samba.

 

     sudo apt-get update

     sudo apt-get install samba

     нажать–y

 

После окончания инсталляционного процесса проверим версию установленной программы:

 

     smbd –version

В этом скрине нет процесса установки пакетов, так как они уже установлены.

Далее приступаем к настройке Samba, для обеспечения совместного доступа. Сделаем копию конфигурационного файла smb.conf:

 

     sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orignl

 

Теперь открываем smb.conf в редакторе VI:

 

     sudo vi /etc/samba/smb.conf

 

Проверяем и добавляем следующее:

 

   [global]

   workgroup = WORKGROUP

   server string = Samba Server

   netbios name = ubuntu

   security = user

   map to guest = bad user

   dns proxy = no

   [Public]

   path = /mnt/usbdrive

   browsable =yes

   writable = yes

   guest ok = yes

   read only = no

   create mask = 644

 

Сохраняем файл и выходим из редактора (команда wq).

Следующим шагом является создание каталога доступного для всех в сети и дадим права доступа для записи:

 

     sudo mkdir -p /mnt/usbdrive/public

     sudo chmod 777 /mnt/usbdrive/public

 

В конце перезагрузим Samba:

 

     sudo service smbd restart

 

На этом настройку файлового сервера с публичным доступом закончили.

Подключение компьютера под управлением Windows к файловому серверу.

     После включения в сеть компьютера под Windows во вкладке сеть появляется устройство Ubuntu.

Если нового устройства не появилось, то нужно сделать следующие настройки. В панели управления выбираем «Центр управления сетями и общим доступом».

В окне «Центр управления сетями и общим доступом» нажимаем «Изменить дополнительные параметры общего доступа».

В окне «Дополнительные параметры общего доступа» выбрать «Включить сетевое обнаружение». Сохраняем изменения.

Открываем окно «Этот компьютер» (ярлык обычно находиться на рабочем столе), нажимаем «Подключить сетевой диск».

Если новое сетевое устройство не появилось, то введём путь вручную. В окне «Подключение сетевого диска» в пункте Папка прописываем:

     \\ubuntu\public

В итоге должно получиться как-то так:

Название диска можно поменять например «сетевой диск».

Подключение устройств на основе Android к файловому серверу.

     Подключиться к сетевым папкам штатным способом в android весьма проблематично. Но существуют сторонние приложения, позволяющие это сделать. Используем программу «Файловый менеджер +», программу можно скачать с Play Маркет.

     Запускаем файловый менеджер. Нажимаем иконку «Удаленные службы». В следующем окне нажимаем «Локальная сеть».  В окне Локальная сеть выбираем «UBUNTU».

     Вводим логин и пароль. Настройка на этом окончена. В папке Public находятся файлы, хранящиеся на сервере.

Вот, пожалуй и всё.

Включаем брандмауэр:

 

   sudo ufw enable

 

Открываем порты (в данном примере SSH):

 

   sudo ufw allow 22

 

Открываем порты для подсетки 192.168.1.0 (если подсетка другая ввести нужные данные):

 

   sudo ufw allow proto tcp from 192.168.1.0/24 to any port 20

   sudo ufw allow proto tcp from 192.168.1.0/24 to any port 21

   sudo ufw allow proto tcp from 192.168.1.0/24 to any port 22

 

Откроем порты для подсетки с использованием профиля приложения:

 

   sudo ufw allow from 192.168.1.0/24 to any app Samba

 

Просмотрим статус брандмауэра:

 

   sudo ufw status verbose

 

Получиться что-то вроде этого:

 

   22/tcp                     ALLOW IN    192.168.1.0/24

   22                         ALLOW IN    192.168.1.0/24

   137,138/udp (Samba)        ALLOW IN    192.168.1.0/24

   139,445/tcp (Samba)        ALLOW IN    192.168.1.0/24

   20/tcp                     ALLOW IN    192.168.1.0/24

   21/tcp                     ALLOW IN    192.168.1.0/24

   22 (v6)                    ALLOW IN    Anywhere (v6)

 

Для вывода статуса с нумерацией строк вводим: 

 

   sudo ufw status numbered

 

Для удаления строк из списка брандмауэра вводим:

 

   sudo ufw delete 1 (1-номер строки в статусе)

 

 

Второй способ настройки firewall.

 

В настройках firewall описанных выше есть «недостаток», это возможность подключения несанкционированного компьютера через подсетку. Например, получив доступ к WI-FI роутеру установленного в подсетку. Снизить вероятность проникновения можно с помощью прописки в firewall всех компьютеров в сети. Сделать это можно с помощью следующих сток:

 

   sudo ufw allow proto tcp from 192.168.1.101 to any port 8888

   sudo ufw allow from 192.168.1.101 to any app Samba

   sudo ufw allow proto tcp from 192.168.1.101 to any port 20

   sudo ufw allow proto tcp from 192.168.1.101 to any port 21

   sudo ufw allow proto tcp from 192.168.1.101 to any port 22

 

Порт 8888 используется программой RPi-Monitor (отображает параметры сервера температура, частота проца и т.д.) - программа требует отдельной установки.

 

Просмотрим статус брандмауэра: 

 

   sudo ufw status verbose

 

Получиться что-то вроде этого:

 

   To                                       Action           From

   --                                         ------              ----

   8888/tcp                             ALLOW IN    192.168.1.101

   137,138/udp (Samba)        ALLOW IN    192.168.1.101

   139,445/tcp (Samba)         ALLOW IN    192.168.1.101

   20/tcp                                 ALLOW IN    192.168.1.101

   21/tcp                                 ALLOW IN    192.168.1.101

   22/tcp                                 ALLOW IN    192.168.1.101

 

Вместо адреса 192.168.1.101 вводите свой IP адрес компьютера в сетке. Для других компьютеров повторяем процедуру, но уже с IP адресами подключаемых пользователей.

Конечно это не панацея защиты (ведь можно войти под IP компьютера который сейчас не подключен), но вероятность проникновения всё же снижается.

Настройка firewall.

Сервер.

 

Сервер решил собирать на базе Raspberry Pi 4 Model B. Заказал на АлиЭкспресс не очень дорогую подборку.