Домашний медиа-сервер (NAT + Samba + Torrent + DLNA) на платформе Ubuntu Server. Часть 1.

  • Автор:

ubuntu-home-server-000.jpg

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

Несколько слов об аппаратной части. Если не планируется перекодировка медиаконтента силами сервера, то для обслуживания домашней сети вполне можно выбрать компактные mini-ITX решения на базе новых процессоров Intel Atom D2700/2500 или аналогичных решений от AMD. Это позволяет собрать компактную и практически бесшумную систему которую можно без труда разместить в любом удобном месте. Единственная сложность в этом случае - поиск дополнительной низкопрофильной сетевой карты.

Так как основная работа нашего сервера заключается в предоставлении медиаконтента, то дисковая подсистема должна обеспечивать высокую скорость последовательного доступа и быть способной обслуживать нескольких клиентов одновременно. Поэтому не стоит выбирать экономичные диски и диски со скоростью вращения 5400 об/мин, в тоже время нет особой необходимости в приобретении производительных жестких дисков, с задачей одновременного доступа к медиаконтенту трех-пяти клиентов отлично справятся диски массовых серий.

Если же вы планируете работу с тяжелым FullHD материалом и не хотите идти на компромиссы, то отличным решением будут жесткие диски Seagate серии SV35, на сегодняшний день это лучшие для подобных задач из протестированных нами дисков. Необходимость в RAID массиве представляется нам сомнительной, если только вы не собираетесь хранить на сервере в единственном экземпляре домашний фото и видеоархив.

Что касается совмещения функции медиасервера и беспроводной точки доступа в одном устройстве, то мы не видим в этом смысла. При организации домашней Wi-Fi сети основной задачей является максимально возможная зона покрытия без увеличения мощности сигнала, поэтому точку доступа следует располагать где-то в середине квартиры или дома, в то время как медиасервер и сетевое оборудование лучше расположить там, где они никому не будут мешать и к ним будет затруднен несанкционированный доступ.

Примерная схема домашней сети будет иметь вид:

ubuntu-home-server-001.jpg

В специально отведенном месте находятся медиасервер и сетевое оборудование, туда же сведена сетевая разводка для стационарных клиентов, точка доступа Wi-Fi расположена с учетом получения наилучшей зоны покрытия и может быть подключена с использованием PoE, что избавит вас от необходимости отдельно подводить питание. С ней работают все мобильные устройства домашней сети и те из стационарных, подключение которых посредством кабеля затруднено. При этом необходимо помнить, что Wi-Fi канал делится между всеми клиентами и для стационарных устройств по возможности следует использовать проводную сеть.

Разобравшись с общими вопросами, перейдем к практической части. Наша задача: создать на базе Ubuntu Server 12.04 домашний медиасервер, который будет обеспечивать общий доступ в интернет, сетевое хранилище для медиаконтента и иных документов, торрент-клиент и DLNA-сервер для простого и удобного доступа к мультимедийному содержимому мобильных и бытовых устройств. Процесс настройки мы разделим на этапы, каждый из которых будет создавать отдельный сервис и если вам не требуется та и или иная функциональность, то вы можете их пропустить.

Общий доступ в интернет и сетевые службы (NAT + DHCP).

Первым делом необходимо выполнить настройку сети. Будем считать что интерфейс eth0 у нас смотрит в сеть провайдера, а eth1 во внутреннюю сеть. Если провайдер предоставляет доступ в интернет посредством коммутируемого соединения, то вам потребуется настроить его дополнительно, например воспользовавшись нашей статьей.

Сетевые настройки хранятся в /etc/network/interfaces, откроем его

sudo nano /etc/network/interfaces

и приведем к следующему виду:

auto eth0
iface eth0 inet static
address 192.168.3.106
netmask 255.255.255.0
gateway 192.168.3.1
dns-nameservers 192.168.3.1

auto eth1
iface eth1 inet static
address 192.168.30.100
netmask 255.255.255.0

post-up /etc/nat

Внимание! Настройки eth0 в нашем случае приведены исключительно в качестве примера, вам необходимо настроить данный интерфейс в соответствии с настройками вашего провайдера.

Последняя строка предназначена для автоматической загрузки правил iptables, которые будут располагаться в файле /etc/nat. Перезапустим сеть:

sudo /etc/init.d/networking restart

В процессе перезапуска мы получим сообщение об ошибке, что /etc/nat не найден, которое можем смело проигнорировать. Если все было сделано правильно, то на сервере появится интернет.

Установим последние обновления:

sudo apt-get update
sudo apt-get upgrade

и для удобства администрирования установим ssh и mc:

sudo apt-get install mc ssh

Теперь создадим /etc/nat

sudo touch /etc/nat 

и приступим к его редактированию:

#!/bin/sh

# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# Сбрасываем настройки брандмауэра
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Разрешаем доступ из локальной сети
iptables -A INPUT -i eth1 -j ACCEPT

# Разрешаем инициированные нами подключения извне
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем подключения по SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

#Запрещаем входящие извне
iptables -A INPUT -i eth0 -j DROP

# Разрешаем инициированные нами транзитные подключения извне
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем транзитный трафик извне
iptables -A FORWARD -i eth0 -o eth1 -j DROP

# Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.30.0/24 -j MASQUERADE

Сохраняем файл и делаем его исполняемым:

sudo chmod +x /etc/nat

Перезагружаем сервер:

sudo reboot

После выполнения вышеуказанных действий наш имеет доступ в интернет и может раздавать его во внутреннюю сеть. Однако клиенты все еще не могут автоматически получать сетевые настройки, для этого нам необходим DHCP-сервер. Мы рекомендуем пакет dnsmasq, который кроме DHCP-сервера содержит кеширующий DNS-прокси:

sudo apt-get install dnsmasq

Перейдем к настройке, для этого откроем файл /etc/dnsmasq.conf, найдем и зададим следующие опции:

address=/ubuntu-home.local/192.168.30.100

данная опция позволит обращаться к нашему серверу не по ip-адресу, а по понятному простым пользователям имени, в нашем случае ubuntu-home.local.

listen-address=127.0.0.1, 192.168.30.100

Задает адреса сетевых интерфейсов, на которых будет доступен DHCP и DNS сервер.

dhcp-range=192.168.30.150,192.168.30.250,255.255.255.0,12h

Указывает диапазон адресов выдаваемый DHCP сервером 192.168.30.150-250 и срок аренды - 12 часов.

Это необходимый минимум настроек, перезапускаем службу:

sudo service dnsmasq restart

после чего пробуем получить сетевые настройки на клиентском устройстве и выйти с него в интернет. На этом первый этап можно считать завершенным. Устанавливать для домашней сети прокси-сервер (squid и т.п.) мы не видим смысла, так как никаких значительных преимуществ вы не получите.

Сетевое хранилище (Samba)

Одна из основных функций домашнего сервера, который должен обеспечивать хранение и легкий доступ к данным посредством протокола SMB, т.е. через привычные общие файлы и папки Windows.

Установим сервер samba:

sudo apt-get install samba

затем откроем конфигурационный файл /etc/samba/smb.conf и приступим к настройкам.

В секции Global Settings укажем сетевое имя и рабочую группу в которую входят устройства вашей домашней сети:

workgroup = HOME
server string = %h server (Samba, Ubuntu)

Вторая строка обозначает, что будет использоваться имя сервера которое вы указали при установке, можете указать там свое желаемое имя.

В секции Networking укажем сетевые интерфейсы, на которых будет доступно сетевое хранилище:

interfaces = 127.0.0.0/8 eth1

В секции Authentication устанавливаем:

security = share

В конец секции Misc добавим строку включающую поддержку протокола SMB2:

max protocol = SMB2

Сохраним файл и закроем его. Теперь самое время создать папки для наших общих ресурсов. Мы будем хранить пользовательские данные в /data, где создадим для разного типа контента папки Backups, Documents, Downloads, Movies, Music и Pictures. Однако вам никто не мешает создать свои собственные папки. Для создания структуры каталогов выполним следующие команды:

sudo mkdir /data
sudo mkdir /data/Backups
sudo mkdir /data/Documents
...
sudo mkdir /data/Pictures

Затем установим на созданные папки полные права для всех, чтобы любой пользователь с любого устройства мог читать и записывать файлы в сетевое хранилище:

sudo chmod 777 -R /data

Теперь снова откроем /etc/samba/smb.conf и создадим общие ресурсы. В самый конец конфигурационного файла добавим:

[Backups]
path = /data/Backups
guest ok = yes
writeable = yes

[Documents]
path = /data/Documents
guest ok = yes
writeable = yes
...

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

Создав все необходимые общие ресурсы перезапустим сервис:

sudo service smbd restart

Наш сервер должен появиться в сетевом окружении и зайдя на него мы должны увидеть созданные нами общие папки.

ubuntu-home-server-002.jpg

На этом настройку сетевого хранилища можно считать законченной, как и первую часть нашего материала. В следующей части мы рассмотрим настройку торрент-клиента и DLNA медиа-сервера.

Дополнительные материалы:

  1. Домашний медиа-сервер (NAT + Samba + Torrent + DLNA) на платформе Ubuntu Server. Часть 1.
  2. Домашний медиа-сервер (NAT + Samba + Torrent + DLNA) на платформе Ubuntu Server. Часть 2.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments