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

  1. Должна работать круглосуточно.
  2. Должна подключаться к нашей домашней сети.
  3. Должна иметь достаточный объем дискового пространства для хранения наших файлов.
  4. Должна предоставлять эти ресурсы в общий доступ по сети.
  5. Должна выступать как медиасервер (для телевизоров и медиаплейеров).
  6. Должна иметь торрент-клиент, закачки на который можно передавать удаленно.

Можно купить готовый NAS-сервер. Благо, при капитализме такого добра хватает в магазинах. Есть также медиа-плейеры с функцией медиа-сервера, где реализованы наши пожелания (или какая-то их часть), включая объемный жесткий диск. Есть роутеры, к которым можно подключить внешний жесткий диск через USB. При выборе такой системы обратите внимание на наличие необходимых функций, скорость передачи данных. Меня от этого варианта отталкивает несколько моментов.

Во-первых, ты покупаешь готовое устройство с фиксированным набором ништяков, изменить который или невозможно, или сложно.

Во-вторых, ты покупаешь, то есть тратишь кровно заработанные дензнаки. А это всегда неприятно.

В-третьих, … Даже хватит первых двух.

У многих при переходе на ноутбук возник вопрос: а куда деть (кому продать) старый компьютер? Выбросить жалко, он помнит контру, windows98, и вообще друзей не продают. Вот на него-то мы и зарядим нашу систему, в результате старый системник получит новую жизнь, мы не потеряем проверенного в боях товарисча, а приобретем полнофункциональное сетевое хранилище с функциями медиа-сервера.

Что мы будем ставить?

Система: FreeBSD 8.2. (Можно поставить и FreeNAS, это та же BSD, только урезанная, поэтому она нам не подходит, мы хотим иметь возможность расширять функциональность нашего сервера до пределов, ограниченных железом).

Примечание: Настоятельно рекомендую ознакомиться со статьей о NAS на Убунту. Возможно, для начинающего этот вариант будет гораздо легче.

ПО:

LAMP– ApacheMySQLPHP. Это нам потребуется для управления сервером через веб-интерфейс.

Mediatomb – медиа-сервер, позволяющий не только передавать файлы на медиа-проигрыватели (телевизоры, и т.п.), но и перекодировать на лету неизвестные им форматы.

Transmission – торрент-клиент, имеющий веб-интерфейс.

Samba для предоставления общего доступа к файловым ресурсам.

Если не заморачиваться на перекодировку на лету, тогда для создания сервера достаточно 486 процессора и 256 Мб оперативной памяти. Это и будет минимальными требованиями к железу. Еще нам нужен жесткий диск большого объема, возможно, несколько дисков. При комплектовании системного блока учтите нагрузку на блок питания. Компьютер будет работать круглые сутки, при этом желательно, чтоб он не сильно нагревался, не работал на пределе. Если установить прожорливый процессор, четыре жестких диска, тогда блок питания на 250 ватт умрет практически сразу. Поэтому рекомендую проверить его мощность, дискретную видеоплату выбросить, а привод cd/dvd отключить после установки системы.

Теперь про подключение к сети. Можно подключить его проводом, можно через WiFi, принципиально это значения не имеет, но нужно учесть следующее. Самые простые проводные сетевые адаптеры поддерживают скорость передачи 100 Мбит/с, не редкость гигабитные. А самый навороченный WiFi – 300 Мбит/с, но Вам еще понадобится канал для подключения клиентов (телевизоры, ноутбуки). Поэтому рекомендую сервер подключать проводом к роутеру, оставив весь WiFiклиентам.

Какой выбрать дистрибутив? Ни в коем случае не Current. Нам надо стабильную систему, а не полигон для испытаний. Из тех же соображений не рекомендую и Stable. Остался Release. Его и будем качать.

Итак, компьютер готов, дистрибутив FreeBSD скачали и записали на болванку. Можем приступать.

Установка FreeBSD.

Загружаемся с диска

 pic 01

Если ничего не трогать, автоматически выберется первый пункт и начнется установка

pic02 

Надпись сверху гласит: «Выберите страну, регион или группу. Для выбора используйте клавишу пробел или ентер». Выбираем Российскую Федерацию и жмем любую из указанных клавиш. Далее

pic03 

требуется выбрать кодировку – KOI8-R. Позднее мы перенастроим на использование UTF-8, но сразу, к сожалению, выбрать её нельзя. Далее попадаем в меню установщика.

pic04 

Выбираем путь самурая - «custom install», так как мы не шутки шутить тут собрались. В меню выборочной установки

pic05 

нас интересуют четыре пункта: Partition (создание слайсов), Label (разбиение дисков), Distributions (устанавливаемые дистрибутивы) и Commit (применить). Заходим в Partition.

pic06 

Это очень сложный вопрос про геометрию диска. Не запариваемся и отвечаем YES. При этом на старых машинах Вы можете потерять часть объема диска, но это – тема отдельного разговора. Размер диска Вы сможете проконтролировать в следующем окне установки.

pic07 

Здесь мы увидим наш диск (вверху ad0 – название устройства, у Вас оно может быть другим, это зависит от его вида, но запомните эти буквы), который нам предлагается разбить на слайсы. В конце первой строки – размер диска (у меня 32 Гб). Традиционно разные слайсы используются для размещения различных операционных систем, мы же планируем устанавливать только FreeBSD, поэтому нам достаточно единственного слайса на весь диск. При этом надо помнить, что на одном слайсе можно создать не более семи разделов, если Вы планируете большее их количество – создавайте больше слайсов (до четырех на один физический диск). Если Вы не поняли ничего из написанного выше – не отчаивайтесь, жмем кнопку «A» - использовать весь диск и получаем такую же картинку,  как у меня.

pic08 

Теперь жмем «Q» - выход. Следующий вопрос – про загрузчик.

pic09 

Так как система одна, выбираем первый пункт и идем дальше. Заходим в пункт «Label». Здесь предлагается создать разделы. Смысл в двух словах следующий. Можно также не заморачиваться и создать один раздел, но тогда всякий мусор может забить весь диск, не оставив места системе. Это вызовет её неработоспособность. Нам это не надо, тем более что именно для набивания мусором мы и делаем себе эту железяку. Выбор один: разнести систему и мусор по разным разделам. Для создания раздела нажимаем кнопку «C».

pic10 

В окне появится цифра – размер раздела в блоках, убираем эту цифру и пишем, как у меня. Буква в конце символизирует уже мегабайты, а не блоки. Это будет рутовый (коренной) раздел, в котором будет система, и к которому будут монтироваться остальные файловые системы. Полтора Гб ему хватит за глаза, поэтому жмем ентер и попадаем в следующее окошко.

pic11 

Здесь спрашивается – создавать файловую систему или своп (типа файл подкачки в Windows). Здесь выбираем FS. Следующий вопрос – точка монтирования. В данном случае – это корень (root), поэтому просто ставим «/».

pic12 

Далее по тому же принципу создаем все разделы, что у меня,

pic13 

для своп-раздела не забываем выбрать не файловую систему, а своп, тогда не будет вопроса про точку монтирования. Его размер обычно выбирается в полтора – два объема оперативной памяти. Два последних раздела называются sharedata и privatedata, просто на этом экране не хватило места для их полного отображения. Они планируются для создания общедоступных ресурсов, первый – для свободного доступа, второй – для определенного пользователя. Их размеры Вы можете выбрать в соответствии с возможностями диска и Вашими потребностями. Размер раздела «/usr» 10Гб нужен для компиляции ядра и установки портов, некоторые из них могут потребовать гигабайты места во время установки. Когда все указано, жмем кнопку «Q» и возвращаемся в меню. Теперь выберем дистрибутивы (distributions).

pic14 

Выбираем 4 Developer,

pic15 

так как в этом случае мы сразу получим весь набор портов и исходников. А то, что не будет игр – не страшно. По сути мы делаем сервер, а не геймерский комп. Возникает вопрос – на каком языке нам нужна документация по FreeBSD.

pic16 

Я думаю, никакая, сразу жмем Exit. Он переспрашивает

pic17 

– действительно ли нам нужна коллекция портов, отвечаем yes. Выходим из меню Distributions – Exit.

pic18 

Возвратившись в основное меню установщика, выбираем пункт Media, то есть источник установки.

pic19 

Отмечаем cd/dvd. И, наконец, последний пункт – применить Commit.

pic20 

В следующем окошке подтверждаем,

pic21 

что мы вменяемы и по собственному желанию замутили весь этот беспредел (yes). Установка началась.

pic22 

Теперь можно ненадолго расслабиться.

 После установки.

По завершении установки мы увидим такое сообщение: «Посетить главное меню для установки последних опций?»

pic23 

Обязательно отвечаем YES, так как нам нужно сделать еще несколько очень важных настроек. Главное – пароль рута (rootpassword), так как без пароля администратора мы не сможем попасть в систему.

pic24 

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

pic25 

Следующим шагом Usermanagement,

pic26 

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

pic27 

В появившемся окне

pic28 

указываем login(у меня ggg), группу обязательно wheel, чтобы этот пользователь мог использовать привилегии администратора, и пароль. Все остальное можно оставить без изменения. Создав пользователя, возвращаемся в главное меню (Exit).

pic29 

Теперь укажем кодировки консоли.

pic30 

В пункте Font

pic31 

выбираем IBM 866.

pic32 

В Keymap – Russia KOI8-R.

pic33 

Screenmap – KOI8-R to IBM 866.

pic34 

Ttys – KOI8-R.

pic35 

Напомню, что все это на первое время, потом все перепишем на UTF-8.

pic36 

Настройка сети (Networking). Чтобы наш сервер стал сервером, он должен быть подключен к сети. Необходимо настроить сетевой интерфейс (или интерфейсы, если их несколько).

pic37 

Первый вопрос – будем ли настраивать IP6.

pic38 

Ответ – NO, для домашней сети это абсолютно ненужная вещь. Дальше – настраивать ли этот интерфейс автоматически по dhcp.

pic39 

Конечно, нет. У сервера должен быть статический адрес. На следующей странице

pic40 

указываем имя, домен (можно придумать любое имя, например, myhome.ru), шлюз – gateway (обычно ip-адрес роутера), сервер имен – nameserver (обычно он же, либо сервера, указанные провайдером), ip-адрес и маску выбираем соответственно Вашей сети. Нажимаем «ок», на следующий вопрос «включить это интерфейс сейчас?»

pic41 

отвечаем yes. Опустимся в низ меню настройки сети networkingи включим ssh для безопасного доступа к нашему серверу по сети.

pic47 

Теперь можно выходить.

pic42 

Для выхода из главного меню

pic43 

надо нажать enter на кнопке ExitInstall. «Вы действительно решили выйти?»

pic44 

– конечно, yes. Теперь осталось только вынуть диск и нажать enter.

pic45 

После перезагрузки мы увидим приглашение на вход в нашу freebsd.

pic46 

Первые необходимые шаги.

Входим в систему как root, набираем это имя и пароль, записанный во время установки.

pic48 

Проверим работоспособность сети:

pingwww.seczone.ru

Прерывание – ctrl+c.

Если ответов нет – или наш сайт лежит, или у Вас что-то с сетью. Для проверки и изменения настроек системы можно использовать утилиту sysinstall. Просто наберите это слово в командной строке.

Все дальнейшие установки будут происходить из сети.

Установка MidnightCommander.

Нам нужен файловый менеджер. Поставим его из портов. Переходим в каталог с менеджером

cd /usr/ports/misc/mc

Устанавливаем

make install clean

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

По завершении установки надо выйти

exit

и снова зайти в систему, в командной строке просто набираем

mc

и радуемся первому установленному приложению.

pic49 

Теперь мы можем приступить к настройке нашей ОС. Сначала русификация в UTF-8. Редактируем файл /etc/login.conf, находим указанные строки и исправляем на то, что нам нужно:

russian|Russian Users Accounts:\

:charset=UTF-8:\

:lang=ru_RU.UTF-8:\

:tc=default:

После этого перестраиваем базу данных, набрав в командной строке команду

cap_mkdb /etc/login.conf

Указываем для каждого пользователя локаль:

# pw usermod -n <username> -L russian

Напримердля пользователя ggg:

# pw usermod -n ggg -L russian

Теперь при подключении через удаленный терминал Вы сможете использовать русский язык и будете видеть нормальные русские буквы. В консоли пока попробуем обойтись без него, позже перекомпилируем ядро с поддержкой UTF-8.

ВАЖНОЕ ПРИМЕЧАНИЕ: Поддержки UTF-8 на самом деле толковой нет, по крайней мере на 8.2 релизе. Поэтому русификация консоли не происходит, что тут ни делай, единственное, чего реально можно добиться - русификация локали и удаленного терминала. Действия, которые предлагаются в мануалах для русификации консоли я напишу, но они не работают, можете их пробовать, но на результат не рассчитывайте. 

Пересборка ядра.

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

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

Итак, сначала надо разобраться с имеющимся оборудованием. Либо набираем

dmesgdmesg.txt

и смотрим в получившемся файле, либо смотрим файл /var/log/messages:

pic50 

Feb 12 23:26:42 BsdNAS kernel: pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on

Feb 12 23:26:42 BsdNAS kernel: pci0: <ACPI PCI bus> on pcib0

Feb 12 23:26:42 BsdNAS kernel: isab0: <PCI-ISA bridge> at device 1.0 on pci0

Feb 12 23:26:42 BsdNAS kernel: atapci0: <Intel PIIX4 UDMA33 controller> port 0x1

Feb 12 23:26:42 BsdNAS kernel: ata0: [ITHREAD]

Feb 12 23:26:42 BsdNAS kernel: em0: <Intel(R) PRO/1000 Legacy Network Connection

Feb 12 23:26:42 BsdNAS kernel: ohci0: <OHCI (generic) USB controller> mem 0xf080

Feb 12 23:26:42 BsdNAS kernel: usbus0: <OHCI (generic) USB controller> on ohci0

Красным цветом выделены названия устройств, которые необходимо оставить в конфигурационном файле, ибо они используются (на моем компе, у Вас другие могут быть). Остальное достаточно подробно в хэндбуке, Добавлю лишь, не трогайте scbus (SCSI bus) ни в коем случае, так как через это и usb устройства работают, и пункт SCSI Periferals лучше совсем не изменять, пусть эти устройства останутся. Также не трогаем псевдодевайсы и шины.

После всего добавляем поддержку UTF-8 в системе (напомню, что это движение пользы не приносит), для этого в файл конфигурации добавляем следующие строки:

options                        TEKEN_UTF8

options                        TEKEN_XTERM

Включаем в ядро PF (файерволл) cALTQ (управление очередями сетевых пакетов):

devicepf         #включает поддержку межсетевого экрана ''Packet Filter''

devicepflog    #псевдоустройство протоколирования трафика

devicepfsync #псевдоустройство изменения состояния

options         ALTQ

options         ALTQ_CBQ        # Class Bases Queuing (CBQ)

options         ALTQ_RED        # Random Early Detection (RED)

options         ALTQ_RIO        # RED In/Out

options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)

options         ALTQ_PRIQ       # Priority Queuing (PRIQ)

options         ALTQ_NOPCC      # Required for SMP build

В итоге получится примерно следующее:

#

# GENERIC -- Generic kernel configuration file for FreeBSD/i386

#

# For more information on this file, please read the config(5) manual page,

# and/or the handbook section on Kernel Configuration Files:

#

#    http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html

#

# The handbook is also available locally in /usr/share/doc/handbook

# if you've installed the doc distribution, otherwise always see the

# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the

# latest information.

#

# An exhaustive list of options and more detailed explanations of the

# device lines is also present in the ../../conf/NOTES and NOTES files.

# If you are in doubt as to the purpose or necessity of a line, check first

# in NOTES.

#

# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.519.2.12.2.1 2010/12/21 17:09:25 kensmith Exp $

cpu           I686_CPU

ident         GENERIC

# To statically compile in device wiring instead of /boot/device.hints

#hints        "GENERIC.hints"             # Default places to look for devices.

# Use the following to compile in values accessible to the kernel

# through getenv() (or kenv(1) in userland). The format of the file

# is 'variable=value', see kenv(1)

#

# env         "GENERIC.env"

makeoptions   DEBUG=-g             # Build kernel with gdb(1) debug symbols

options       SCHED_ULE            # ULE scheduler

options       PREEMPTION           # Enable kernel thread preemption

options       INET                 # InterNETworking

options       INET6                # IPv6 communications protocols

options       SCTP                 # Stream Control Transmission Protocol

options       FFS                  # Berkeley Fast Filesystem

options       SOFTUPDATES          # Enable FFS soft updates support

options       UFS_ACL                     # Support for access control lists

options       UFS_DIRHASH          # Improve performance on big directories

options       UFS_GJOURNAL         # Enable gjournal-based UFS journaling

options       MD_ROOT                     # MD is a potential root device

options       NFSCLIENT            # Network Filesystem Client

options       NFSSERVER            # Network Filesystem Server

options       NFSLOCKD             # Network Lock Manager

options       NFS_ROOT             # NFS usable as /, requires NFSCLIENT

options       MSDOSFS                     # MSDOS Filesystem

options       CD9660               # ISO 9660 Filesystem

options       PROCFS               # Process filesystem (requires PSEUDOFS)

options       PSEUDOFS             # Pseudo-filesystem framework

options       GEOM_PART_GPT        # GUID Partition Tables.

options       GEOM_LABEL           # Provides labelization

options       COMPAT_43TTY         # BSD 4.3 TTY compat (sgtty)

options       COMPAT_FREEBSD4             # Compatible with FreeBSD4

options       COMPAT_FREEBSD5             # Compatible with FreeBSD5

options       COMPAT_FREEBSD6             # Compatible with FreeBSD6

options       COMPAT_FREEBSD7             # Compatible with FreeBSD7

options       SCSI_DELAY=5000             # Delay (in ms) before probing SCSI

options       KTRACE               # ktrace(1) support

options       STACK                # stack(9) support

options       SYSVSHM                     # SYSV-style shared memory

options       SYSVMSG                     # SYSV-style message queues

options       SYSVSEM                     # SYSV-style semaphores

options       P1003_1B_SEMAPHORES  # POSIX-style semaphores

options       _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions

options       PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed.

options       KBD_INSTALL_CDEV     # install a CDEV entry in /dev

options       HWPMC_HOOKS          # Necessary kernel hooks for hwpmc(4)

options       AUDIT                # Security event auditing

options       MAC                  # TrustedBSD MAC Framework

options       FLOWTABLE            # per-cpu routing cache

#options      KDTRACE_HOOKS        # Kernel DTrace hooks

options       INCLUDE_CONFIG_FILE     # Include this file in kernel

options       KDB                  # Kernel debugger related code

options       KDB_TRACE            # Print a stack trace for a panic

# To make an SMP kernel, the next two lines are needed

options       SMP                  # Symmetric MultiProcessor Kernel

device        apic                 # I/O APIC

# CPU frequency control

device        cpufreq

# Bus support.

device        acpi

device        eisa

device        pci

# Floppy drives

device        fdc

# ATA and ATAPI devices

device        ata

device        atadisk              # ATA disk drives

device        ataraid              # ATA RAID drives

device        atapicd              # ATAPI CDROM drives

device        atapifd              # ATAPI floppy drives

device        atapist              # ATAPI tape drives

options       ATA_STATIC_ID # Static device numbering

# SCSI Controllers

#device              ahb           # EISA AHA1742 family

#device              ahc           # AHA2940 and onboard AIC7xxx devices

#options      AHC_REG_PRETTY_PRINT # Print register bitfields in debug

                                   # output.  Adds ~128k to driver.

#device              ahd           # AHA39320/29320 and onboard AIC79xx devices

#options      AHD_REG_PRETTY_PRINT # Print register bitfields in debug

                                   # output.  Adds ~215k to driver.

#device              amd           # AMD 53C974 (Tekram DC-390(T))

#device              hptiop        # Highpoint RocketRaid 3xxx series

#device              isp           # Qlogic family

#device              ispfw         # Firmware for QLogic HBAs- normally a module

#device              mpt           # LSI-Logic MPT-Fusion

#device              ncr           # NCR/Symbios Logic

#device              sym           # NCR/Symbios Logic (newer chipsets + those of `ncr')

#device              trm           # Tekram DC395U/UW/F DC315U adapters

#device              adv           # Advansys SCSI adapters

#device              adw           # Advansys wide SCSI adapters

#device              aha           # Adaptec 154x SCSI adapters

#device              aic           # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.

#device              bt            # Buslogic/Mylex MultiMaster SCSI adapters

#device              ncv           # NCR 53C500

#device              nsp           # Workbit Ninja SCSI-3

device        stg           # TMC 18C30/18C50

# SCSI peripherals

device        scbus         # SCSI bus (required for SCSI)

device        ch            # SCSI media changers

device        da            # Direct Access (disks)

device        sa            # Sequential Access (tape etc)

device        cd            # CD

device        pass          # Passthrough device (direct SCSI access)

device        ses           # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem

#device              amr           # AMI MegaRAID

#device              arcmsr        # Areca SATA II RAID

#device              asr           # DPT SmartRAID V, VI and Adaptec SCSI RAID

#device              ciss          # Compaq Smart RAID 5*

#device              dpt           # DPT Smartcache III, IV - See NOTES for options

#device              hptmv         # Highpoint RocketRAID 182x

#device              hptrr         # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx

#device              iir           # Intel Integrated RAID

#device              ips           # IBM (Adaptec) ServeRAID

#device              mly           # Mylex AcceleRAID/eXtremeRAID

#device              twa           # 3ware 9000 series PATA/SATA RAID

# RAID controllers

#device              aac           # Adaptec FSA RAID

#device              aacp          # SCSI passthrough for aac (requires CAM)

#device              ida           # Compaq Smart RAID

#device              mfi           # LSI MegaRAID SAS

#device              mlx           # Mylex DAC960 family

#device              pst           # Promise Supertrak SX6000

#device              twe           # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse

device        atkbdc        # AT keyboard controller

device        atkbd         # AT keyboard

device        psm           # PS/2 mouse

device        kbdmux        # keyboard multiplexer

device        vga           # VGA video card driver

device        splash        # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console

device        sc

#device              agp           # support several AGP chipsets

# Power management support (see NOTES for more options)

#device              apm

# Add suspend/resume support for the i8254.

device        pmtimer

# PCCARD (PCMCIA) support

# PCMCIA and cardbus bridge support

#device              cbb           # cardbus (yenta) bridge

#device              pccard        # PC Card (16-bit) bus

#device              cardbus              # CardBus (32-bit) bus

# Serial (COM) ports

device        uart          # Generic UART driver

# Parallel port

device        ppc

device        ppbus         # Parallel port bus (required)

device        lpt           # Printer

device        plip          # TCP/IP over parallel

device        ppi           # Parallel port interface device

#device              vpo           # Requires scbus and da

# If you've got a "dumb" serial or parallel PCI card that is

# supported by the puc(4) glue driver, uncomment the following

# line to enable it (connects to sio, uart and/or ppc drivers):

#device              puc

# PCI Ethernet NICs.

#device              de            # DEC/Intel DC21x4x (``Tulip'')

device        em            # Intel PRO/1000 Gigabit Ethernet Family

#device              igb           # Intel PRO/1000 PCIE Server Gigabit Family

#device              ixgb          # Intel PRO/10GbE Ethernet Card

#device              le            # AMD Am7900 LANCE and Am79C9xx PCnet

#device              ti            # Alteon Networks Tigon I/II gigabit Ethernet

#device              txp           # 3Com 3cR990 (``Typhoon'')

#device              vx            # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.

# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!

device        miibus        # MII bus support

#device              ae            # Attansic/Atheros L2 FastEthernet

#device              age           # Attansic/Atheros L1 Gigabit Ethernet

#device              alc           # Atheros AR8131/AR8132 Ethernet

#device              ale           # Atheros AR8121/AR8113/AR8114 Ethernet

#device              bce           # Broadcom BCM5706/BCM5708 Gigabit Ethernet

#device              bfe           # Broadcom BCM440x 10/100 Ethernet

#device              bge           # Broadcom BCM570xx Gigabit Ethernet

#device              dc            # DEC/Intel 21143 and various workalikes

#device              et            # Agere ET1310 10/100/Gigabit Ethernet

#device              fxp           # Intel EtherExpress PRO/100B (82557, 82558)

#device              jme           # JMicron JMC250 Gigabit/JMC260 Fast Ethernet

#device              lge           # Level 1 LXT1001 gigabit Ethernet

#device              msk           # Marvell/SysKonnect Yukon II Gigabit Ethernet

#device              nfe           # nVidia nForce MCP on-board Ethernet

#device              nge           # NatSemi DP83820 gigabit Ethernet

##device             nve           # nVidia nForce MCP on-board Ethernet Networking

#device              pcn           # AMD Am79C97x PCI 10/100 (precedence over 'le')

#device              re            # RealTek 8139C+/8169/8169S/8110S

#device              rl            # RealTek 8129/8139

#device              sf            # Adaptec AIC-6915 (``Starfire'')

#device              sge           # Silicon Integrated Systems SiS190/191

#device              sis           # Silicon Integrated Systems SiS 900/SiS 7016

#device              sk            # SysKonnect SK-984x & SK-982x gigabit Ethernet

#device              ste           # Sundance ST201 (D-Link DFE-550TX)

#device              stge          # Sundance/Tamarack TC9021 gigabit Ethernet

#device              tl            # Texas Instruments ThunderLAN

#device              tx            # SMC EtherPower II (83c170 ``EPIC'')

#device              vge           # VIA VT612x gigabit Ethernet

#device              vr            # VIA Rhine, Rhine II

#device              wb            # Winbond W89C840F

#device              xl            # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs.  pccard NICs included.

#device              cs            # Crystal Semiconductor CS89x0 NIC

# 'device ed' requires 'device miibus'

#device              ed            # NE[12]000, SMC Ultra, 3c503, DS8390 cards

#device              ex            # Intel EtherExpress Pro/10 and Pro/10+

#device              ep            # Etherlink III based cards

#device              fe            # Fujitsu MB8696x based cards

#device              ie            # EtherExpress 8/16, 3C507, StarLAN 10 etc.

#device              sn            # SMC's 9000 series of Ethernet chips

#device              xe            # Xircom pccard Ethernet

# Wireless NIC cards

#device              wlan          # 802.11 support

#options      IEEE80211_DEBUG      # enable debug msgs

#options      IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's

#options      IEEE80211_SUPPORT_MESH      # enable 802.11s draft support

#device              wlan_wep      # 802.11 WEP support

#device              wlan_ccmp     # 802.11 CCMP support

#device              wlan_tkip     # 802.11 TKIP support

#device              wlan_amrr     # AMRR transmit rate control algorithm

#device              an            # Aironet 4500/4800 802.11 wireless NICs.

#device              ath           # Atheros pci/cardbus NIC's

#device              ath_hal              # pci/cardbus chip support

#options      AH_SUPPORT_AR5416    # enable AR5416 tx/rx descriptors

#device              ath_rate_sample      # SampleRate tx rate control for ath

#device              ral           # Ralink Technology RT2500 wireless NICs.

#device              wi            # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

#device              wl            # Older non 802.11 Wavelan wireless NIC.

# Pseudo devices.

device        loop          # Network loopback

device        random        # Entropy device

device        ether         # Ethernet support

device        vlan          # 802.1Q VLAN support

device        tun           # Packet tunnel.

device        pty           # BSD-style compatibility pseudo ttys

device        md            # Memory "disks"

device        gif           # IPv6 and IPv4 tunneling

device        faith         # IPv6-to-IPv4 relaying (translation)

device        firmware      # firmware assist module

# The `bpf' device enables the Berkeley Packet Filter.

# Be aware of the administrative consequences of enabling this!

# Note that 'bpf' is required for DHCP.

device        bpf           # Berkeley packet filter

# USB support

options       USB_DEBUG     # enable debug msgs

device        uhci          # UHCI PCI->USB interface

device        ohci          # OHCI PCI->USB interface

device        ehci          # EHCI PCI->USB interface (USB 2.0)

device        usb           # USB Bus (required)

#device              udbp          # USB Double Bulk Pipe devices

device        uhid          # "Human Interface Devices"

device        ukbd          # Keyboard

device        ulpt          # Printer

device        umass         # Disks/Mass storage - Requires scbus and da

device        ums           # Mouse

device        urio          # Diamond Rio 500 MP3 player

# USB Serial devices

#device              u3g           # USB-based 3G modems (Option, Huawei, Sierra)

device        uark          # Technologies ARK3116 based serial adapters

device        ubsa          # Belkin F5U103 and compatible serial adapters

device        uftdi         # For FTDI usb serial adapters

#device              uipaq         # Some WinCE based devices

#device              uplcom        # Prolific PL-2303 serial adapters

#device              uslcom        # SI Labs CP2101/CP2102 serial adapters

#device              uvisor        # Visor and Palm devices

device        uvscom        # USB serial support for DDI pocket's PHS

# USB Ethernet, requires miibus

#device              aue           # ADMtek USB Ethernet

#device              axe           # ASIX Electronics USB Ethernet

#device              cdce          # Generic USB over Ethernet

#device              cue           # CATC USB Ethernet

#device              kue           # Kawasaki LSI USB Ethernet

#device              rue           # RealTek RTL8150 USB Ethernet

#device              udav          # Davicom DM9601E USB

# USB Wireless

#device              rum           # Ralink Technology RT2501USB wireless NICs

#device              uath          # Atheros AR5523 wireless NICs

#device              ural          # Ralink Technology RT2500USB wireless NICs

#device              zyd           # ZyDAS zb1211/zb1211b wireless NICs

# FireWire support

device        firewire      # FireWire bus code

#device              sbp           # SCSI over FireWire (Requires scbus and da)

#device              fwe           # Ethernet over FireWire (non-standard!)

#device              fwip          # IP over FireWire (RFC 2734,3146)

#device              dcons         # Dumb console driver

#device              dcons_crom    # Configuration ROM for dcons

#Включаем поддержку UTF-8

options       TEKEN_UTF8

options       TEKEN_XTERM

#Включаем pf

device pf

device pflog

device pfsync

#Поддержка ALTQ

options              ALTQ

options              ALTQ_CBQ

options              ALTQ_RED

options              ALTQ_RIO

options              ALTQ_HFSC

options              ALTQ_PRIQ

options              ALTQ_NOPCC

Как видите, ненужные строки я не удалил, а только закомментарил. На всякий случай.

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

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

Закончим настройку кодировки UTF-8. Согласно разным руководствам, блогам и форумам для этого надо добавить следующие четыре строки

setenv LANG ru_RU.UTF-8

setenv LC_CTYPE ru_RU.UTF-8

setenv LC_COLLATE POSIX

setenv LC_ALL ru_RU.UTF-8

то ли в файл /etc/csh.cshrc, то ли в /etc/csh.login, то ли в .cshrc в профиле пользователя. Мне это не помогло ни фига.

Установка mySQLи Apache.

Как говорил Б.Н. Ельцин, «я долго думал, страдал», но все же решил рекомендовать установку этого всего из портов. Это может быть долго, но все зависимости будут сконфигурированы и установлены.

Итак для установки mysql

cd /usr/ports/databases/mysql55-server

make install clean

Начинаем отвечать на вопросы установщика:

 зшс51

Включаем SSL

На второй вопрос (про mysql-client) отвечаем так же.

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

mysql_enabled = “YES

Далее копируем конфигурационный файл для больших баз (вдруг у Вас огромная медиа-коллекция)

cp /usr/local/share/mysql/my-large.cnf /etc/my.cnf

запускаем сервер:

service mysql-server start

Создаем пароль администратора базы данных:

/usr/local/bin/mysqladmin -u root password 'mypassword'

Где mypassword – наш пароль.

 Можем переходить к установке Апача.

Переходим в папку с портом:

cd /usr/ports/www/apache22

Запускаем компиляцию и установку

make install clean

Параметры для Apache оставляем по умолчанию, то есть просто нажимаем «ок», ничего не меняя в крестиках. После установки заходим в уже знакомый /etc/rc.confи добавляем строку:

#apache22_enable=”YES”

запускаем:

#service apache22 start

Пробуем зайти на наш сервер, указав в браузере его ip-адрес. Если Вы все сделали как и я, увидите надпись «It works» (Он работает, по-аглицки).

Едем дальше, php. Переходим в папку:

#cd /usr/ports/lang/php52

#make install clean

В конфигураторе включаем дополнительно к имеющимся buildApachemodule. По окончании не расслабляемся, нам нужны еще и расширения:

#cd /usr/ports/lang/php52-extentions

#makeinstallclean

В конфигураторе добавляем поддержку MySQL.

После установки проверяем /usr/local/etc/apache22/httpd.confна наличие следующих строк (если их нет - добавляем):

LoadModule php5_module   libexec/apache22/libphp5.so

DirectoryIndex index.html index.shtml index.php index.htm

AddType application/x-httpd-php .phtml .php

AddType application/x-httpd-php-source .phps

Эти строки располагаются в файле не подряд, каждая в своем модуле, по смыслу увидите.

Для проверки функционирования php каталоге /usr/local/www/apache22/dataсоздадим файл index.phpсо следующим содержимым:

<?php

            echo php_info();

?>

Перезапускаем апача:

#serviceapache22 restart

после этого в браузере набираем

http://<ip-адрес>/index.php

Мы должны увидеть информацию о сервере и всех php-расширениях.

Теперь можно установить phpmyadmin – веб-консоль управления mysql сервером.

#cd /usr/ports/databases/phpmyadmin

#make install clean

По завершении процесса необходимо подправить конфигурационный файл веб-сервера /usr/local/etc/apache22/httpd.conf, добавив следующие строки (опять же где-нибудь рядом с подобными):

 Alias /pma/ "/usr/local/www/phpMyAdmin/"

    <Directory "/usr/local/www/phpMyAdmin/">

        Options none

        AllowOverride Limit

        Order Allow, Deny

        Allow from all

    </Directory>

Перезапускаем апача:

#service apache22 restart

после этого в браузере набираем

http://<ip-адрес>/pma/

В появившемся окне вводим имя пользователя root и пароль суперпользователя MySQL, который мы придумали ранее.

Можно переходить к

Установка SAMBA.

#cd /usr/ports/net/samba35

#make install clean

В конфигураторе добавим веб-интерфейс SWAT, остальное не меняем.

После установки редактируем файл /usr/local/etc/smb.conf, он должен содержать примерно следующее:

#======================= Global Settings =====================================

[global]

   workgroup = WORKGROUP

public=YES

guest ok=YES

null passwords=YES

map to guest = Bad User

#   security = user

  hosts allow = 192.168.1.

#   load printers = yes

guest account = nobody

   log file = /var/log/samba/log.%m

   max log size = 50

# Charset settings

   display charset = utf-8

   unix charset = utf-8

   dos charset = cp866

#============================ Share Definitions ==============================

[public]

   path = /sharedata

   guest ok = yes

   browsable = yes

   public = yes

   only guest = yes

   writable = yes

   create mask = 0777

   force create mode = 0777

   printable = no

[private]

   path = /privatedata

   valid users = ggg

   browsable = yes

   public = yes

   writable = yes

   create mask = 0755

   force create mode = 0755

   printable = no

Доступ к ресурсу public имеют все, а доступ к private только пользователь ggg.

В /etc/rc.conf добавим строку samba_enable=”YES

Можно запускать самбу.

#service samba start

Посмотрим сетевое окружение

рис52 

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

1)      В файле /etc/inetd.conf раскомментарить строку с описанием сервиса swat (последняя строка)

2)      В файле /etc/rc.conf добавить строку inetd_enable=”YES

3)      Запустить суперсервер inetd

#service inetd start

Теперь можно заходить через браузер по адресу http://<ip-адрес>:901

 рис53

Установка mediatomb

#cd /usr/ports/net/mediatomb

#make install clean

Все настройки оставляем по умолчанию, когда спросит про поддержку UTF-8, поддержку национальных языков (NLS)- отмечаем крестиком.

Вот мой конфиг от медиатомба. Можете его целиком взять. Изменено имя BsdMedia, база данных используется MySQL, и включены DLNAзаголовки для телевизоров и другой техники:

<?xml version="1.0" encoding="UTF-8"?>

<config version="2" xmlns="http://mediatomb.cc/config/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://mediatomb.cc/config/2 http://mediatomb.cc/config/2.xsd">

  <server>

    <ui enabled="yes" show-tooltips="yes">

      <accounts enabled="no" session-timeout="30">

        <account user="mediatomb" password="mediatomb"/>

      </accounts>

    </ui>

    <name>BsdMedia</name>

    <udn>uuid:3536604f-8189-49a7-b3ad-9c6d091bc5dc</udn>

    <home>/var/mediatomb</home>

    <webroot>/usr/local/share/mediatomb/web</webroot>

    <storage caching="yes">

      <sqlite3 enabled="no">

        <database-file>mediatomb.db</database-file>

      </sqlite3>

      <mysql enabled="yes">

        <host>localhost</host>

        <username>mediatomb</username>

        <database>mediatomb</database>

      </mysql>

    </storage>

    <protocolInfo extend="yes"/>

    <!-- For PS3 support change to "yes" -->

    <!--

       Uncomment the lines below to get rid of jerky avi playback on the

       DSM320 or to enable subtitles support on the DSM units

    -->

   

       <custom-http-headers>

              <add header="transferMode.dlna.org: Streaming"/>

       <add header="contentFeatures.dlna.org: DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=0170000000000000000" />

</custom-http-headers>

    <manufacturerURL>redsonic.com</manufacturerURL>

    <modelNumber>105</modelNumber>

    <!-- Uncomment the line below if you have a Telegent TG100 -->

    <!--

       <upnp-string-limit>101</upnp-string-limit>

    -->

    <extended-runtime-options>

      <ffmpegthumbnailer enabled="yes">

        <thumbnail-size>128</thumbnail-size>

        <seek-percentage>5</seek-percentage>

        <filmstrip-overlay>yes</filmstrip-overlay>

        <workaround-bugs>no</workaround-bugs>

      </ffmpegthumbnailer>

      <mark-played-items enabled="no" suppress-cds-updates="yes">

        <string mode="prepend">*</string>

      </mark-played-items>

    </extended-runtime-options>

  </server>

  <import hidden-files="no">

    <filesystem-charset>UTF-8</filesystem-charset>

    <metadata-charset>UTF-8</metadata-charset>

    <scripting script-charset="UTF-8">

      <common-script>/usr/local/share/mediatomb/js/common.js</common-script>

      <playlist-script>/usr/local/share/mediatomb/js/playlists.js</playlist-script>

      <virtual-layout type="builtin">

        <import-script>/usr/local/share/mediatomb/js/import.js</import-script>

      </virtual-layout>

    </scripting>

    <mappings>

           <extension-mimetype ignore-unknown="no">

      <map from="mp3" to="audio/mpeg"/>

      <map from="ogg" to="application/ogg"/>

      <map from="asf" to="video/x-ms-asf"/>

      <map from="asx" to="video/x-ms-asf"/>  

      <map from="wma" to="audio/x-ms-wma"/>  

      <map from="wax" to="audio/x-ms-wax"/>

      <map from="wmv" to="video/x-ms-wmv"/>

      <map from="wvx" to="video/x-ms-wvx"/>

      <map from="wm" to="video/x-ms-wm"/>

      <map from="wmx" to="video/x-ms-wmx"/>

      <map from="m3u" to="audio/x-mpegurl"/>

      <map from="pls" to="audio/x-scpls"/>

      <map from="flv" to="video/x-flv"/>

<!--      <map from="vob" to="video/x-vob"/> -->

      <map from="mkv" to="video/x-mkv"/>

        <!-- Uncomment the line below for PS3 divx support -->

        <map from="avi" to="video/divx"/>

        <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->

        <map from="avi" to="video/avi"/>

       <map from="avi" to="video/mpeg"/>

<!-- Uncomment the line below for PS3 divx support -->

<map from="mpg" to="video/mpeg"/>

<map from="vob" to="video/mpeg"/>

<map from="mp4" to="video/avc"/>

<!-- ORIGINAL <map from="mp4" to="video/mp4"/> -->

<map from="m4v" to="video/mp4"/>

<map from="m4a" to="audio/mp4"/>

      </extension-mimetype>

      <mimetype-upnpclass>

        <map from="audio/*" to="object.item.audioItem.musicTrack"/>

        <map from="video/*" to="object.item.videoItem"/>

        <map from="image/*" to="object.item.imageItem"/>

      </mimetype-upnpclass>

      <mimetype-contenttype>

        <treat mimetype="audio/mpeg" as="mp3"/>

       <treat mimetype="video/mpeg" as="avi" />

        <treat mimetype="video/x-divx" as="avi"/>

        <treat mimetype="application/ogg" as="ogg"/>

        <treat mimetype="audio/x-flac" as="flac"/>

        <treat mimetype="image/jpeg" as="jpg"/>

        <treat mimetype="audio/x-mpegurl" as="playlist"/>

        <treat mimetype="audio/x-scpls" as="playlist"/>

        <treat mimetype="audio/x-wav" as="pcm"/>

        <treat mimetype="audio/L16" as="pcm"/>

        <treat mimetype="video/x-msvideo" as="avi"/>

       <treat mimetype="video/mp4" as="mp4"/>

        <treat mimetype="audio/mp4" as="mp4"/>

<!--        <treat mimetype="application/x-iso9660" as="dvd"/>

        <treat mimetype="application/x-iso9660-image" as="dvd"/>-->

      </mimetype-contenttype>

    </mappings>

    <online-content>

      <!-- Make sure to setup a transcoding profile for flv -->

      <YouTube enabled="no" refresh="28800" update-at-start="no" purge-after="604800" racy-content="exclude" format="flv" hd="no">

        <favorites user="mediatomb"/>

        <standardfeed feed="most_viewed" time-range="today"/>

        <playlists user="mediatomb"/>

        <uploads user="mediatomb"/>

        <standardfeed feed="recently_featured" time-range="today"/>

      </YouTube>

      <Weborama enabled="no" refresh="28800" update-at-start="no">

        <playlist name="Active" type="playlist" mood="active"/>

        <playlist name="Metal" type="playlist">

          <filter>

            <genres>metal</genres>

          </filter>

        </playlist>

      </Weborama>

      <AppleTrailers enabled="no" refresh="43200" update-at-start="no" resolution="640"/>

    </online-content>

  </import>

  <transcoding enabled="no">

    <mimetype-profile-mappings>

      <transcode mimetype="video/x-flv" using="vlcmpeg"/>

      <transcode mimetype="application/ogg" using="vlcmpeg"/>

      <transcode mimetype="application/ogg" using="oggflac2raw"/>

      <transcode mimetype="audio/x-flac" using="oggflac2raw"/>

    </mimetype-profile-mappings>

    <profiles>

      <profile name="oggflac2raw" enabled="no" type="external">

        <mimetype>audio/L16</mimetype>

        <accept-url>no</accept-url>

        <first-resource>yes</first-resource>

        <accept-ogg-theora>no</accept-ogg-theora>

        <agent command="ogg123" arguments="-d raw -o byteorder:big -f %out %in"/>

        <buffer size="1048576" chunk-size="131072" fill-size="262144"/>

      </profile>

      <profile name="vlcmpeg" enabled="no" type="external">

        <mimetype>video/mpeg</mimetype>

        <accept-url>yes</accept-url>

        <first-resource>yes</first-resource>

        <accept-ogg-theora>yes</accept-ogg-theora>

        <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp1v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/>

        <!-- ORIGINAL <buffer size="14400000" chunk-size="512000" fill-size="120000"/> -->

        <buffer size="2978728105" chunk-size="512000" fill-size="120000"/>

      </profile>

    </profiles>

  </transcoding>

</config>

Надо создать базу данных в MySQL. Через веб-интерфейс это будет просто

http://<ip-адрес>/pma/

В появившемся окне вводим имя пользователя root и пароль суперпользователя MySQL. Создаем базу данных.

рис54

Добавляем пользователя на вкладке привилегии.

рис 55 

Указываем его данные как на рис и нажимаем ок.

рис56 

Теперь создадим таблицы в базе. В терминале

#mysql –u=root –p=<вашпароль> -D=mediatomb < /usr/local/share/mediatomb/mysql.sql.

Разрешаем медиатомб в /etc/rc.conf, добавив строку

mediatomb_enable=”YES”

Теперь можно стартовать сервис

#servicemediatombstart

Теперь можно заходить через браузер по адресу http://<ip-адрес>:49152 и добавлять папки с файлами, предоставляемыми через медиасервер.

рис57 

Установка transmission.

Нам, конечно, нужен торрент-клиент для закачки всякой ерунды.

#cd /usr/ports/net-p2p/transmission

#make install clean

 У transmission интересное отношение к конфигурационному файлу. При остановке сервиса файл записывается с теми значениями, с которыми сервис был запущен. То есть, на работающем сервисе бесполезно редактировать конфиг, при перезапуске он перепишется на старые значения. Перед редактированием надо остановить сервис, а запускать только по окончании изменений. Содержимое файла usr/local/etc/transmission/home/settings.json:

{

    "alt-speed-down": 50,

    "alt-speed-enabled": false,

    "alt-speed-time-begin": 540,

    "alt-speed-time-day": 127,

    "alt-speed-time-enabled": false,

    "alt-speed-time-end": 1020,

    "alt-speed-up": 50,

    "bind-address-ipv4": "0.0.0.0",

    "bind-address-ipv6": "::",

    "blocklist-enabled": false,

    "blocklist-url": "http://www.example.com/blocklist",

    "cache-size-mb": 2,

    "dht-enabled": true,

    "download-dir": "/sharedata/downloads",

    "encryption": 1,

    "idle-seeding-limit": 30,

    "idle-seeding-limit-enabled": false,

    "incomplete-dir": "//Downloads",

    "incomplete-dir-enabled": false,

    "lazy-bitfield-enabled": true,

    "lpd-enabled": false,

    "message-level": 2,

    "open-file-limit": 32,

    "peer-limit-global": 240,

    "peer-limit-per-torrent": 60,

    "peer-port": 51413,

    "peer-port-random-high": 65535,

    "peer-port-random-low": 49152,

    "peer-port-random-on-start": false,

    "peer-socket-tos": 0,

    "pex-enabled": true,

    "port-forwarding-enabled": true,

    "preallocation": 1,

    "ratio-limit": 2,

    "ratio-limit-enabled": false,

    "rename-partial-files": true,

    "rpc-authentication-required": false,

    "rpc-bind-address": "0.0.0.0",

    "rpc-enabled": true,

    "rpc-password": "{f68a77e053fea43ec04d233424524b941ff67d8eyOz0gZyV",

    "rpc-port": 9091,

    "rpc-username": "",

    "rpc-whitelist": "192.168.1.0",

    "rpc-whitelist-enabled": false,

    "script-torrent-done-enabled": false,

    "script-torrent-done-filename": "",

    "speed-limit-down": 50,

    "speed-limit-down-enabled": false,

    "speed-limit-up": 40,

    "speed-limit-up-enabled": true,

    "start-added-torrents": true,

    "trash-original-torrent-files": false,

    "umask": 18,

    "upload-slots-per-torrent": 14,

    "watch-dir": "/sharedata/torrents",

    "watch-dir-enabled": true

}

Все очень понятно, обращаю Ваше внимание, что надо создать каталоги

рис59 

downloadsи torrentsна серевом ресурсе public. В папку torrents Вы будете подкидывать торрент-файлы, которые трансмишн будет подхватывать и загружать в папку downloads.

Разрешаем торрент-клиент в /etc/rc.conf, добавив строку

transmission_enable=”YES

Теперь можно стартовать сервис

#servicetransmissionstart

И заходить на него через веб-интерфейс по адресу http://<ip-адрес>:9091

Вот и вся функциональность. Теперь настроим файервол.

Настройка pf. 

В каталоге /etc создадим файл pf.confсо следующим содержимым:

$ cat pf.conf

#Самодельный конфиг для pf.

# Определим переменные

LAN="192.168.1.0/24"            #Наша локалка, которой мы будем доверять.

nif="em0"                       #интерфейс один

serall = "{ 22 80 137 138 139 901 1900 9091 49152 51413 }"      #services allowed

# 22            ssh

# 80            http

# 137:139       samba

# 901           swat

# 1900          mediatomb

# 9091          transmission web

# 49152         mediatomb web

# 51413         transmission

set block-policy drop

set skip on lo0

scrub in all

altq on $nif cbq bandwidth 99980Kb queue { qinner, qouter }     #наружу и внутрь

    queue qouter bandwidth 1980Kb priority 0 { qp2p, qoall }    #торрент и остальные

    queue qp2p bandwidth 95% priority 7 cbq (borrow)

    queue qoall bandwidth 5% priority 3 cbq (red)

    queue qinner bandwidth 98000Kb priority 1 { qmed, qhttp, qssh, qsamba, qiall }

    queue qmed bandwidth 20% priority 3 cbq (borrow)

    queue qhttp bandwidth 5% priority 5 cbq (borrow)

    queue qsamba bandwidth 65% priority 5 cbq (default borrow)

    queue qiall bandwidth 5% priority 5 cbq (borrow)

    queue qssh bandwidth 5% priority 1 cbq (red)

 antispoof log quick for { lo0, $nif }

block in on $nif  # все входящие заблокировать

block in on $nif from any to 240.0.0.0/4

pass in on $nif inet proto icmp all

#открытые порты

pass in on $nif inet proto { tcp,udp } from any to any port $serall flags S/SA keep state

#in ALTQ

pass in on $nif inet proto { tcp,udp } from $LAN to $nif port 22 queue qssh

pass in on $nif inet proto { tcp,udp } from $LAN to $nif port { 80, 9091, 49152 } queue qhttp

pass in on $nif inet proto { tcp,udp } from any to $nif port 53 queue qiall

pass in on $nif inet proto { tcp,udp } from any to $nif port 51413 queue qp2p

pass in on $nif inet proto { tcp,udp } from $LAN to $nif port 1900 queue qmed

pass in on $nif inet proto { tcp,udp } from $LAN to any port 137:139 queue qsamba

#out ALTQ

pass out on $nif inet proto { tcp,udp } from $nif to $LAN port 22 queue qssh

pass out on $nif inet proto { tcp,udp } from $nif to $LAN port 1900 queue qmed

pass out on $nif inet proto { tcp,udp } from $nif to any port 80 queue qhttp

pass out on $nif inet proto { tcp,udp } from $nif to any port 53 queue qoall

pass out on $nif inet proto { tcp,udp } from $nif to any port 51413 queue qp2p

pass out on $nif inet proto { tcp,udp } from $nif to $LAN port 137:139 queue qsamba

pass out on $nif queue qoall

#Разрешаем открытые порты на внутр. интерфейсе

pass in on $nif inet proto { tcp,udp } from $LAN to $LAN port 445 queue qsamba #microsoft-ds

В файле rc.confдобавляем следующие строчки

pf_enable=”YES”

pflog_enable=”YES”

И запускаем pf

#service pf start

#servicepflogstart

Посмотреть статистику по очередям

#pfctl –vvsq

Посмотреть статистику по интерфейсам

#pfctlsI –vv

Или (на интерфейсе em0)

#pfctlsI –vv – i em0

Послесловие.

Сначала эта статья планировалась как инструкция по самостоятельной сборке сетевого хранилища. Однако, обзрев результат, я понял, что получилась статья "Не делай этого, друг!!!"

Данная затея может занять Вас на пару дней, потребует все же кое-каких знаний о nix-ах и командных строках. Если Вы новичок, то имеете все шансы впасть в депрессию. В консоли так и не увидим русских букв, их можно увидеть только через putty или какой-нибудь еще удаленный терминал с другой машины. Да, после выполнения всех указанных настроек наш NAS будет работать неограниченно долго, но не каждый сможет дойти до конца. У меня - работает, и именно на FreeBSD. А Другу я бы порекомендовал приглядеться к Ubuntu Server (См. статью NAS на Ubuntu Server 11

 

Источники:

http://paix.org.ua/freebsd/ru_utf8.html

http://habrahabr.ru/blogs/bsdelniki/64748/

http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-building.html

http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-config.html

http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html

http://www.unix.ck.ua/content/nastroika-firewall-nataltq-pf

 

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


Защитный код
Обновить