Сетевой диск
Настройка сервера на AlmaLinux 8.10 -> Сетевой диск
Сетевой диск обеспечивает централизованное хранение данных с возможностью совместного доступа с разных устройств и платформ, упрощает совместную работу, позволяет настраивать права доступа, автоматизировать резервное копирование, экономить локальное дисковое пространство, а также обеспечивает удалённый доступ через VPN и упрощает администрирование и контроль безопасности данных.
Подключение диска
Подсоединяем новый диск к системе. В примере используем диск на 8 Тб.
Определяем имя устройства (диска): lsblk -o NAME,SIZE,TYPE,MODEL
Создаем таблицу разделов GPT, которая нужна для дисков >2 Тб: parted /dev/sda --script mklabel gpt
Создаём первый раздел на 4 Тб: parted /dev/sda --script mkpart primary 0% 4000GB
Создаём второй раздел на 2 ТБ (чуть больше)parted /dev/sda --script mkpart primary 4000GB 6001GBЭто создаст /dev/sda2 объёмом 2001 ГБ.
Создаём третий раздел на 2 ТБ (чуть меньше): parted /dev/sda --script mkpart primary 6001GB 8002GB
Проверяем, что все три раздела правильно определились: lsblk /dev/sda
Шифруем первый раздел (/dev/sda1): cryptsetup luksFormat /dev/sda1после ввода команды потребуется подтвердить действие и задать пароль: WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sda1:
Verify passphrase:
Открываем зашифрованный том и задаем ему имя (например, luks1)cryptsetup open /dev/sda1 luks1После этого потребуется ввести пароль, заданный ранее: Enter passphrase for /dev/sda1:
Далее форматируем раздел как ext4: mkfs.ext4 /dev/mapper/luks1
Создаём точку монтирования: mkdir -p /mnt/share1И монтируем раздел: mount /dev/mapper/luks1 /mnt/share1
Важно!
После перезагрузки сервера LUKS-диск будет закрыт, и его нужно будет:
- Расшифровать вручную (ввести пароль);
- Смонтировать заново.
Присоединяем диск: cryptsetup open /dev/sda1 luks1
mount /dev/mapper/luks1 /mnt/share1
Если разделов несколько, присоединяем их все: cryptsetup open /dev/sda2 luks2
mount /dev/mapper/luks2 /mnt/share2
WireGuard
WireGuard — это современный VPN-протокол и реализация, разработанная с упором на простоту, безопасность и высокую производительность; используется для создания защищённых туннелей между устройствами, обеспечивая шифрование трафика с использованием современных криптографических алгоритмов (Curve25519, ChaCha20, Poly1305 и др.).
На сервере AlmaLinux генерируем приватный и публичный ключи сервера:wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pubСоздаем приватный и публичный ключи для 2-х пользователей: wg genkey | tee user1.key | wg pubkey > user1.pubwg genkey | tee user2.key | wg pubkey > user2.pub
По этой схеме можно создать любое количество пользователей. При этом при редактировании конфигурационного файла придется просто создать дополнительные блоки [Peer] с разными "AllowedIPs" по аналогии с примером.
Полученные данные вставляем в конфигурационный файл WireGuard: vim /etc/wireguard/wg0.conf[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
# Приватный ключ сервера
PrivateKey = 1wsjqN4YlNyEGXgP6wZp8rL1f5xrLySG90Y81opzOvU=
[Peer]
# содержимое user1.pub
PublicKey = YVCJizNvvZSZq8dYny4blcQ3hVXIlKmeEo70TCZ3Rye=
AllowedIPs = 10.8.0.2/32
[Peer]
# содержимое user2.pub
PublicKey = cQ3hVXIlKmeEo70TCZ3RyeYVCJizNvvZSZq8dYny4bl=
AllowedIPs = 10.8.0.3/32
Применяем изменения после внесения изменений в конфигурацию: wg-quick down wg0 && wg-quick up wg0
Когда нам необходимо подключить сетевой диск к iPhone сделать это проще всего с помощью QR-кода. Для создания изображения QR-кода сначала потребуется создать обычный текстовой файл в котором будут указаны данные конфигурации пользователя. Сделаем это для user2 на сервере AlmaLinux 8.10.
Редактируем файл для iPhone: vim /etc/wireguard/user2.conf[Interface]
# содержимое user2.key
PrivateKey = QJmHsNYHOEHQglNEitMGtWfGwo8IDQSJ69StPQISqq6=
Address = 10.8.0.3/32
DNS = 1.1.1.1
[Peer]
# содержание публичного ключа сервера
PublicKey = iJPW6KZBOr7I6BzZ9nKex0nabhhUExtRotAstHFdqAm=
Endpoint = 1.2.3.4:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25Преобразуем конфиг в QR-код: qrencode -o iphone.png < user2.conf
Для того, чтобы iOS могла не только читать данные с сетевого диска, но и записывать на него, необходимо добавить дополнительные настройки.
Включаем поддержку расширенных атрибутов (Extended Attributes) на файловой системе: ea support = yesЗагружаем модули VFS Samba: vfs objects = catia fruit streams_xattr
- catia — преобразует несовместимые символы в именах файлов между Windows и macOS;
- fruit — активирует поддержку Apple SMB-расширений (AAPL), включая превью, resource forks, Finder info, улучшенное копирование;
- streams_xattr — сохраняет альтернативные потоки (например, ресурсы macOS) как расширенные атрибуты в файловой системе Linux.
Активируем AAPL-расширения протокола SMB2/3, используемые macOS/iOS: fruit:aapl = yes
Настройка Samba
Samba — это служба, позволяющая Linux-серверу обмениваться файлами с компьютерами Windows по протоколу SMB.
Устанавливаем Samba: dnf install -y samba
Редактируем конфигурационный файл: vim /etc/samba/smb.conf
Начинаем с секции, в которой задаются общие параметры Samba: [global]
workgroup = SAMBA
interfaces = lo wg0 192.168.1.0/24 10.8.0.0/24
log file = /var/log/samba/log.%m
max log size = 500
security = user
passdb backend = tdbsam
store dos attributes = yes
После внесения изменений в конфигурацию перезагружаем службу: systemctl restart smb
Создаём Samba-пользователя "smbuser1", не давая ему shell-доступ: useradd -M -s /sbin/nologin smbuser1smbpasswd -a smbuser1
- -M — не создаёт домашний каталог
- -s /sbin/nologin — запрещает вход в систему
- smbpasswd — создаёт пароль только для доступа по Samba
Открываем доступ в firewall: firewall-cmd --permanent --add-service=sambafirewall-cmd --reload
Разрешаем доступ Samba к нужной папке в SELinux: chcon -R -t samba_share_t /mnt/share1
Синхронизация с Windows 7
Для того, чтобы иметь на сетевом диске копию необходимых данных, которые хранятся на компьютере под управлением Windows 7 надо сделать синхронизацию.
Перед синхронизацией проверить нет ли на диске зашифрованных папок и файлов (обычно выделены зеленым цветом): cipher /U /N /S:D:\и если таковые будут найдены (в примере на диске D) - снять соответствующие атрибуты, чтобы не мешали синхронизации.
После этого запустить синхронизацию. Следующий пример запускает зеркальное копирование (синхронизацию) данных с диска "D" на сетевой диск "Z": robocopy D:\ Z:\ /MIR /COPY:DAT /DCOPY:T /Z /W:5 /R:10 /FFT /MT:8 /V /TEE /LOG+:"C:\robocopy.log" /XD "$RECYCLE.BIN" "System Volume Information"
Когда надо скопировать (синхронизировать) одну папку: robocopy Z:\folder1 E:\folder1 /MIR /COPY:DAT /DCOPY:T /Z /W:5 /R:3 /FFT /MT:8 /V /LOG+:"C:\robocopy.log"
Метки: сетевой диск
Опрос
В каком году был сделан ваш сайт? (голосов: 24)
- до 2015 года - 23 (96%)
- в 2015 - 0 (0%)
- в 2016 - 0 (0%)
- в 2017 - 0 (0%)
- в 2018 - 1 (4%)
- в 2019 - 0 (0%)