Домашняя сеть на базе Linux.

Некоторое обилие компьютерной техники дома сподвигло на покупку wi-fi роутера для  устройства домашней сети. Что требовалось? Да в общем-то самый минимум: единое файловое хранилище (музыка, фильмы), торрент клиент с общим доступом, сервер для web-разработки (apache, mysql, perl, php, svn), терминальный доступ к операционным системам, установленных под VirtualBox, ну и ряд разных плюшек в довесок. Итак, у нас дано:

  • Wi-fi роутер D-link
  • Старенький компьютер (Slackware 12.2)
  • Ноутбук Acer Aspire 5100 (Slackware 12.2)
  • Субноутбук Asus eeePC 901 (Xandros)

Поехали.

Настройка роутера.
Здесь все просто, цепляемся на один из LAN портов c любой машины, логинимся, меняем пароль администратора и приступаем к настройке. Здесь кому-что нравится. Я указал essid точки доступа, выбрал в качестве метода шифрования WEP, прописал выдачу ip адресов всем машинам (сервер, ноутбук, субноутбук) c привязкой по MAC-адресу (по умолчанию, каждой машине выдается ip из настраиваемого диапазона, в соответствие с тем, в каком порядке они подключаются, и если для ноутбуков это не критично, то для сервера хочется иметь постоянный ip). Ip раздал просто и незатейлево:

  • 192.168.0.1 — роутер
  • 192.168.0.100 — сервер
  • 192.168.0.101 — ноутбук LAN
  • 192.168.0.104 — ноутбук Wireless
  • 192.168.0.103 — субноутбук LAN
  • 192.168.0.102 — субноутбук Wireless

На этом я остановился.

Настройку Apache, Mysql, PHP, SVN я опущу, мануалов по этому поводу и без того в сети хватает, начну с настройки NFS.

Настройка NFS.
Почему именно NFS? На самом деле все просто. И мой ноутбук, и субноутбук жены и сам сервер работают под управлением Linux, поэтому необходимости в той же Samba просто нет. С другой стороны, использовать не менее удобный sshfs на eeePC не представляется возможным, в силу отсутствия там нормального программного обеспечния (жена наотрез отказалась сносить предустановленный Xsandros, который на удивление беден софтом, не располагает компиляторами как таковыми, а в репозитории Asus’а такой прекрасной вещи как sshfs не наблюдается).
Первое, что нам потребуется, это определить те ресурсы, которые мы хотим расшарить посредством NFS (хотя правильнее будет сказать, что мы будем экспортировать каталоги, которые разрешим монтировать на других машинах сети), для этого редактируем

/etc/exports

. Выглядит это приблизительно вот так:

/media/hd0/audio 192.168.0.102(rw,no_subtree_check) 192.168.0.104(rw,no_root_squash,no_subtree_check)
/media/hd2/video 192.168.0.102(rw,no_subtree_check) 192.168.0.104(rw,no_root_squash,no_subtree_check)
/media/hd1/docs  192.168.0.104(rw,no_root_squash,no_subtree_check)

Здесь небольше пояснение. Через пробел, в каждой строке мы указываем директорию для экспорта и машины, на которых позволим монтировать эту директорию+опции, то есть схема такая:

/dir ip1(option,option) ip2(option,option,option)

Теперь об опциях. Я использовал всего 3:

  • rw — разрешить чтение/запись (ro — соответственно, чтолько чтение)
  • no_subtree_check — не проводить проверку вложенных директорий
  • no_root_squash — отключение ограничения прав root

Подробнее об опциях

man exports

.

После этого достаточно перезапустить демон NFS командой

/etc/rc.d/rc.nfsd restart

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

/etc/rc.d/rc.nfsd

установлены как 0755. Все, настройка серверной части NFS завершена.

На клиентских машинах я не стал мудрить и просто прописал монтирование NFS разделов в

/etc/fstab

. Делается это просто:

server:/myshare  /mountdir   nfs   intr,soft,lock

где, intr – позволяет прервать процесс при необходимости, soft – предотвращает от зависания в случае недоступности удалённой машины.
Единственный минус, если на клиентской машине смонтировать сразу несколько NFS разделов, то машинка начинает ощутимо подтормаживать.

Настройка FTP.
Изредка нужно что-нибудь забросить/стянуть с сервера, причем в/из директории, которая остается за рамками экспорта NFS, и иногда удобнее делать это именно по FTP.
В стандартной поставке Slackware есть vsftpd, маленький, шустрый и достаточно безопасный FTP сервер. Его конфигурация предельно проста, так что описывать ее я не стану, все что вам понадобится, это конфигурационный файл

vsftpd.conf

. Для автозапуска сервера достаточно прописать в

/etc/rc.d/rc.local

следующую строчку:

/usr/sbin/vsftpd &

Настройка терминального доступа.
Непосредственный терминальный доступ к серверу мне оказался без необходимости, хватает ssh, если кому интересно, может погуглить на тему xrdp. В большей степени меня интересовал терминальный доступ к виртуальным машинам, которые крутятся на сервере (к вопросу о виртуальных машинах, ранее я писал о локализации приложения, так вот, из-за огромного количества библиотек среды Gnome, которые этому приложению требовались и которые ну никак не хотелось ставить на свой ноутбук, я тестировал приложение на Ubuntu 8.10, которая установлена на одной из виртуальных машин, ну и естественно, при тестировании верстки никак нельзя забывать об Internet Explorer, а эта вещь лучше всего себя чувствует в своей родной среде). При создании виртуальной машины в VirtualBox, достаточно включить «Удаленный дисплей» и назначить порт для соединения, после чего, на сервере можно запустить виртуальную машину следующим образом:

$ VBoxVRDP -s <em>имя_виртуальной_машины</em> &amp;

Я делаю это зайдя на сервер по ssh, а так как данный процесс я запускаю в фоновом режиме, то спокойно закрыв ssh соединение, уже на своем ноутбуке, обращаюсь к запущенной виртуальной машине посредством rdesktop:

$ rdesktop 192.168.0.100:3389

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

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

$ transmission-daemon [options]

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

$ transmission-daemon -g ~/.config/transmission-daemon/

Основные опции я опущу, отмечу только следующее: для запуска в режиме демона необходимо скомпилировать transmission с флагом —with-daemon, а для доступа через веб интерфейс с других машин, нужно в конфигурационном файле указать следующее:

"rpc-whitelist": "192.168.0.102,192.168.0.104", (список разрешенных адресов)
"rpc-port": номер порта, (по умолчанию 9091)
"rpc-username": пользователь, (если включена аутентификация)
"rpc-password": пароль, (если включена аутентификация)

А чтобы все это добро стартовало вместе с запуском системы, я внес эту команду в

/etc/rc.d/rc.local

. Теперь достаточно на клиентской машине в адресной строке браузера набрать 192.168.0.100:9091, и, если ip вашей машины в списке доверенных (если вы конечно вообще активировали список доверенных машин), то после ввода логина/пароля вы попадете в веб интерфейс торрент клиента, который, кстати, на мой взгляд, весьма и весьма удобный.

Настройка MPD — музыкального демона.
Одна из приятных плюшек. Музыкальный демон MPD позволяет создавать и управлять плейлистами на стороне сервера, а так же управлять воспроизведением музыки прямо на сервере. Аккустика подключена у меня именно к серверу и порой удобно порулить музыкой которая проигрывается на нем. После установки создаем конфиг

/etc/mpd.conf

и заполняем его как-то вот так:

music_directory "/media/hd0/audio" #тут будет вся музыка
playlist_directory "/media/hd0/mpd/playlists"
db_file "/media/hd0/mpd/tag_cache"
log_file "/media/hd0/mpd/mpd.log"
error_file "/media/hd0/mpd/errors.log"
pid_file "/media/hd0/mpd/pid"
bind_to_address "192.168.0.100"
port "6600"

Так же нужно создать директорию, которую мы указали в playlist_directory. После чего запускаем

/usr/bin/mpd

. Я, опять таки, повесил запуск на автозагрузку, то бишь в

/etc/rc.d/rc.local

.
Оговорюсь сразу, клиентов для этого чуда мысли немало, и тут дело вкуса, кому что подойдет, я лично выбрал gmpc, а жене на субноутбук поставил расширение для Firefox, которое довольно забавно называется — Music Player Minion. После установки клиента, скармливаем ему адрес сервера, порт и наслаждаемся 🙂

Вот вкратце и все. Так как я наверняка буду продолжать эксперименты над сервером, то вероятнее всего вскоре стоит ожидать продолжения этой статьи.

Домашняя сеть на базе Linux.

Домашняя сеть на базе Linux.: 9 комментариев

  1. jetxee:

    Если в eeepc-xandros есть nautilus, то можно открывать каталоги на удалённой машине, нажав CTRL-L, указав sftp://user@host. Без fuse/sshfs. Открыв раз, можно поставить закладку. Для eeepc-xandros, кстати, вроде есть дополнительные репозитории (я, правда, не изучал, что там, но их много).

    WEP раскалывается за несколько секунд чуть ли не на нетбуке. Чем использовать его, можно сразу делать открытую сеть. Если делать закрытую сеть, то или WPA, или WPA2. А так любой сосед или подросток в подъезде может смотреть, что вы там по NFS туда-сюда гоняете. И, кстати, видеть ftp-пароль на вашем сервере, он передаётся тоже открытым текстом.

    1. gwinn:

      По поводу Xandros — уже не актуально, у жены на eeepc поселилась Ubuntu 9.04 Netbook Remix, и там она уже сама разобралась, как ей удобнее подключаться.
      А по поводу WEP, тут абсолютно согласен, просто у меня анлим, и как-то особо не переживал. Более того, несколько дней назад его таки раскололи — в списке активных подключений засветился неизвестный mac-адрес, все бы ничего, но канал не толстый, а посему, поставил WPA2 с длиной ключа 200 бит, плюс, разрешил получение ip только указанным mac-адресам.

  2. По поводу MPD — могу порекомендовать отличный вёб-интерфейс к нему Pitchfork, выглядит так:
    http://farm4.static.flickr.com/3139/3063769872_0331de8f5a.jpg?v=0
    У нас в компании компов много, каждому экстеншн ставить лениво да и ловить тормоза при запуске firefox лишний раз неохота, поэтому вёб-морда удобнее.

  3. А как решается проблема с правами на файлы? Ведь через NFS если монтируется, то владельцы файлов передаются через цыфири (uid), в результате если на сервере есть юзер с uid 1002 а на клиенте — нет, то получится неизвестный владелец и всякие openoffice не смогут в этот файл писать, даже если будут права 777. Также если в эту папку копируются файлы с правами 640 то другие их вероятно не смогут изменить или даже увидеть.
    Сам столкнулся с такой же проблемой, пока для себя решил через маунт от рута куданить и дополнительный маунт юзерам под их правами через bindfs, но это больше похоже на костыль ;(

    1. gwinn:

      На самом деле, большинство пользователей, если они не под рутом сидят, входят в группу users, на это и стоит опираться, именно на uid группы, во всяком случае, у нас с женой пока проблем не возникало, да и пара товарищей ко мне порой со своими ноутами заглядывает, тоже как бы пока все без проблем. А еще можно попытаться задать umask для создания фйлов на монтируемом разделе, что бы файлы создавались с правами 0644, а директории с правами 0755, это по крайней мере снизит количество конфликтов.

      1. В ubuntu по-умолчанию в группу users не входят юзера почему-то. Да и цифра gid у группы users может отличаться в зависимости от дистриба (убунту, федора, сусе и т.п.) поэтому тоже не всегда может всё срастись. Также нужно будет на всех компах править umask чтобы созданные ими файлы были доступны для правки остальным.

        Плюс основная проблема с которой я столкнулся — если владелец файла неизвестный, то openoffice не хочет записывать в такой файл, даже если там права будут 777.
        Поэтому если на 1 компе есть юзер с uid 1007, а на другом — ещё такого нет, то чтобы поправить опенофисом файлег этого юзера, подмаунченный через nfs, придётся копировать себе, менять владельца, править, копировать обратно, что доставляет мне массу дополнительных удовольствий 🙁

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *