Свой сетевой диск для iPhone — поднимаем Samba на Centos
Добрый день друзья! Я как и многие, столкнулся с очередной нехваткой памяти на своем iPhone. Ведь, как известно, сколько бы памяти не было на вашем телефоне — ее всегда мало. Постоянная съемка видео, создание фото, загрузка контента в режиме воспроизведения оффлайн, или же просто работа в интернете(браузер и мессенджеры) — все это требует немалого объема встроенного NVMe накопителя. Разумеется можно воспользоваться платной подпиской на iCloud, получив таким образом еще пару терабайт памяти в облаке, но и они конечны, да и к тому-же стоят не малых денег. К счастью, операционная система iOS (как впрочем и Android), благодаря встроенному приложению Файлы(Files), позволяют легко подключить удаленный сетевой диск(по протоколу SMB), и в последующем сохранять на него любые данные. Остается только обзавестись своим сетевым диском(облачным хранилищем), на несколько терабайт и наслаждаться жизнью. Сегодня мы рассмотрим, как установить, настроить и подключить сетевой диск к iPhone на примере операционной системы CentOs 7 и Samba-сервера.
Исходные данные, что имеем? В нашем распоряжении имеется сервер, с постоянным подключением к сети интернет на скорости 1ГБит, с постоянным(статическим) IP-адресом, с установленной и настроенной операционной системой CentOS 7, с панелью управления BrainyCP(последнее не имеет особого значения, просто для удобства). Но, все ниже описанные действия можно выполнить и на обычном ПК, без постоянного статичного IP и скоростного подключения к сети.
Что необходимо будет сделать?
- Установить сервер Samba;
- Создать пользователя и задать пароль;
- Настроить конфигурацию сервера Samba для доступа к публичной и приватной директории;
- Настроить Firewall в операционной системе;
- Наш сервер стоит за NAT, то есть нужно прокинуть порты;
- Добавить сетевой диск в 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 заключается в открытии доступа к портам 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 (данный порт считается небезопасным).

Автор:






