Свой сетевой диск для iPhone — поднимаем Samba на Centos

Author Автор: Роман Чернышов    Опубликовано: 27 августа 2024

Добрый день друзья! Я как и многие, столкнулся с очередной нехваткой памяти на своем iPhone. Ведь, как известно, сколько бы памяти не было на вашем телефоне — ее всегда мало. Постоянная съемка видео, создание фото, загрузка контента в режиме воспроизведения оффлайн, или же просто работа в интернете(браузер и мессенджеры) — все это требует немалого объема встроенного NVMe накопителя. Разумеется можно воспользоваться платной подпиской на iCloud, получив таким образом еще пару терабайт памяти в облаке, но и они конечны, да и к тому-же стоят не малых денег. К счастью, операционная система iOS (как впрочем и Android), благодаря встроенному приложению Файлы(Files), позволяют легко подключить удаленный сетевой диск(по протоколу SMB), и в последующем сохранять на него любые данные. Остается только обзавестись своим сетевым диском(облачным хранилищем), на несколько терабайт и наслаждаться жизнью. Сегодня мы рассмотрим, как установить, настроить и подключить сетевой диск к iPhone на примере операционной системы CentOs 7 и Samba-сервера.

Исходные данные, что имеем? В нашем распоряжении имеется сервер, с постоянным подключением к сети интернет на скорости 1ГБит, с постоянным(статическим) IP-адресом, с установленной и настроенной операционной системой CentOS 7, с панелью управления BrainyCP(последнее не имеет особого значения, просто для удобства). Но, все ниже описанные действия можно выполнить и на обычном ПК, без постоянного статичного IP и скоростного подключения к сети.

Что необходимо будет сделать?

  1. Установить сервер Samba;
  2. Создать пользователя и задать пароль;
  3. Настроить конфигурацию сервера Samba для доступа к публичной и приватной директории;
  4. Настроить Firewall в операционной системе;
  5. Наш сервер стоит за NAT, то есть нужно прокинуть порты;
  6. Добавить сетевой диск в iPhone.

Установка Samba на CentOS 7

Устанавливаем Samba, текущая версия 4.10.16. Для этого, подключившись к серверу по SSH, в командной строке выполняем:

yum install samba -y

Создаем директории для общего доступа

В моем случае это будут директории /home/samba/private/ и /home/samba/public/, для приватного доступа и публичного соответственно:

mkdir /home/samba
mkdir /home/samba/private
mkdir /home/samba/public

Устанавливаем права доступа на чтение и запись, для всех директорий:

chmod -R 777 /home/samba/

Создаем пользователя и задаем пароль

Для авторизации при подключении к серверу Samba, и доступа к директориям, создаем отдельного пользователя в системе:

useradd sambauser

задаем ему пароль:

passwd sambauser

добавляем нового пользователя в одноименную группу sambauser:

Usermod -aG sambauser

и создаем нового пользователя sambauser в самой Samba:

smbpasswd -a sambauser

Настроить конфигурацию сервера Samba для доступа к публичной и приватной директории

Конфигурационный файл сервера Samba, будет расположен в /etc/samba/smb.conf, если его нет, вы можете создать его, взяв в качестве основы экземпляр /etc/samba/smb.conf.example, скопировав его следующей командой:

mv /etc/samba/smb.conf.example /etc/samba/smb.conf

Задаем содержимое конфигурационного файла, состоящее из трех секций, global — общие настройки сервера, public — настройки доступа к публичной директории, private — настройки доступа к приватной директории:

[global]
; Общие настройки
; Рабочая группа, оставим WORKGROUP
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
; Данный параметр необходим для поддержки авторизации из ОС Windows
ntlm auth = true
; Логируем работы службы. Лог по умолчанию расположен в /var/log/samba/
log level = 3
 
[public]
; Настройки публичной директории. Можно вообще убрать эту секцию, если вам публичная директория не нужна
comment = Public Directory
path = /home/samba/public
guest ok = yes
force user = nobody
browsable = yes
writable = yes
create mode = 0777
directory mode = 0777
 
[private]
; Настройки приватной директории
comment = Private Directory
path = /home/samba/private
; Добавляем группу пользователей sambauser, для которых разрешена авторизация и доступ
valid users = @sambauser
guest ok = no
browsable = yes
writable = yes

После создания конфигурационного файла, можно проверить его корректность специальной утилитой, которая сообщит об ошибке в случае ее обнаружения:

testparm
  • Настроить Firewall в операционной системе
  • В моем случае настройка Firewall заключается в открытии доступа к портам 139 и 445, с помощью утилиты iptables, для этого выполняем в командной строке:

    iptables -t filter -A INPUT -p tcp --dport 445 -j ACCEPT
    iptables -t filter -A INPUT -p tcp --dport 139 -j ACCEPT

    Иногда, в некоторых системах управления сервером, типа BrainyCP, по умолчанию порты 445 и 139, могут быть закрыты Firewall отдельным правилом, этот момент стоит проверить.

    Также прокидываем данные порты на роутере, в случае если сервер стоит за NAT.

    Перезагружаем службу Samba

    systemctl restart smb.service

    Добавить сетевой диск в на iPhone

    После проделанных действий, нам стал доступен сетевой диск, который можно подключить как к операционной системе Windows, так и iOS для использования в iPhone по следующему адресу smb:\\ip_address\private, при подключении система запросит логин и пароль.

    Для подключения к iPhone, запускаем приложение Файлы(Files) и в правом верхней углу выбираем Меню/Подключить сетевой диск, далее указываем адрес подключения, вводим логин и пароль. После чего, данный сетевой диск будет доступен в списке директорий iPhone при сохранении файлов, фото и видео. То есть, вы можете таким образом хранить информацию на внешнем, своем личном, облачном хранилище.

    Установка и работа с клиентом Samba

    Для подключения к серверу Samba из ОС Centos 7(например для проверки подключения), устанавливаем Samba Client.

    yum install samba-client -y

    Подключение к сервера Samba:

    mbclient //ip_address/private

    Получим список ресурсов SMB, доступных анонимному пользователю:

    smbclient -L ip_server

    Получим список ресурсов SMB, доступных user_name:

    smbclient -L ip_server -U user_name

    Подключение к Samba как к FTP (команды cd,ls,get,put,quit):

    smbclient //192.168.1.1/myshare -u user_name

    Дополнительно

    Посмотреть статус работы Samba сервера:

    smbstatus

    Просмотр информации о составе сети:

    smbtree -b -N

    Сканируем/ищем SMB-хосты в вашей сети:

    findsmb

    Поиск хостов по NetBIOS (NetBIOS name используется в Samba):

    nmblookup host_name

    Ищем устройство с именем server1 в сети 192.168.1.0/24:

    nmblookup -U 192.168.1.255 server1
     
    Монтирование SMB-директорий:
    <pre lang="bash">mount -t smbfs -o username=my_user,password=My_pass //host/myshare /mnt/my_mount

    Для проверки доступности потов на сервере из вне, может быть полезна утилита netcat(для Windows Zenmap), которую нужно будет установить на сторонний внешний сервер (и в дальнейшем проверить доступность портов на нашем Smba сервере).

    yum install netcat

    После установки, выполняем:

    nc -zvw3 ip_server 445

    Нюансы

    К сожалению в случае с SMB протоколом и Samba, не все так сладко, как и в любом деле, есть нюансы, которые стоит учитывать:

    • Подключение по протоколу SMB относительно стабильно работает в локальной сети и менее стабильно в сети интернет;
    • Не стоит делать доступными порты 445 и 139 в глобальной сети, так как этим могут воспользоваться злоумышленники и попросту взломать(путем перебора паролей) ваш сервер получив доступ к хранящимся в приватной директории данным;
    • На практике, при сохранении больших файлов с iPhone, на удаленный сервер по протоколу SMB, я несколько раз столкнулся с ошибкой соединения;
    • Из-за того, что доступ к Samba серверу осуществляется через порт 445 (а изменить порт подключения на клиентах нельзя), иногда возникают проблемы с доступом к серверу из-за автоматической блокировки данного порта со стороны Firewall (данный порт считается небезопасным).

    Оставить комментарий

    Автор блога
    Роман Чернышов
    Веб-разработчик,
    Full Stack
    Senior, Architect
    PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
    Заказать работу
    предложить оффер

    Моя книга
    Книга. Веб-разработчик. Легкий вход в профессию
    Печатная книга
    Веб-разработчик.
    Легкий вход в профессию
    Купить за 359₽
    Популярные записи
    Последние вопросы
    Список вопросов
    Последние комментарии
    Меню

    Archive

    Мои проекты
    Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка