- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF77:К вашим услугам
Материал из Linuxformat.
м (→Здравствуй, Samba!) |
(→Публикуем файлы в BitTorrent) |
||
(12 промежуточных версий не показаны.) | |||
Строка 22: | Строка 22: | ||
|Ширина=20%}} | |Ширина=20%}} | ||
- | BitTorrent – замечательный способ поделиться файлами. | + | BitTorrent – замечательный способ поделиться файлами. Не желают ли дамы и господа запустить собственный сервер? |
Не путайте с нелегальным распространением файлов: на самом деле ''BitTorrent'' – всего лишь невероятно эффективный протокол и замечательно реализованная идея, которая заслуживает большего, чем ассоциации с мрачным сетевым «подпольем». | Не путайте с нелегальным распространением файлов: на самом деле ''BitTorrent'' – всего лишь невероятно эффективный протокол и замечательно реализованная идея, которая заслуживает большего, чем ассоциации с мрачным сетевым «подпольем». | ||
- | ''BitTorrent'' эксплуатирует старую добрую модель клиент-сервер, когда те, кто скачивает файл, предоставляют секции, или «блоки», которые они уже скачали, другим участникам сети. | + | ''BitTorrent'' эксплуатирует старую добрую модель клиент-сервер, когда те, кто скачивает файл, предоставляют секции, или «блоки», которые они уже скачали, другим участникам сети. Можно сравнить это с пирамидой из бокалов с шампанским. Шампанское льётся только в верхний бокал, и по мере заполнения перетекает в нижние. Только в случае с BitTorrent можно начинать делиться «шампанским» ещё до того, как ваш «бокал» наполнится. |
- | Чтобы скачать поток, пользователь сперва должен получить копию специального Torrent-файла (с суффиксом .torrent). Он | + | Чтобы скачать поток, пользователь сперва должен получить копию специального Torrent-файла (с суффиксом .torrent). Он создаётся на основе исходного файла и содержит хэш для каждого отдельного блока, который можно скачать и предоставить остальным. Хэш гарантирует, что каждый фрагмент файла, скачанный пользователем, будет в точности совпадать с оригиналом. Наиболее творчески реализовано распределение клиентами тех частей, которыми они уже располагают. Это зависит от трекера (tracker), интернет-адрес которого вложен в Torrent-файл. Трекер выполняет функции дирижёра. Он отслеживает, кто что скачал, и всякий раз при получении нового запроса на ту или иную закачку он гарантирует, что новый клиент получит кусочки, которых ещё нет у других участников сети. Вот что вы можете сделать на вашем ПК: запустить собственный трекер, так что вы не просто будете разделять потоки – вы будете их создавать. |
===Строим трекер=== | ===Строим трекер=== | ||
Строка 337: | Строка 337: | ||
==Строим файловое хранилище на Samba== | ==Строим файловое хранилище на Samba== | ||
+ | {{Врезка|right| | ||
+ | |Заголовок=Зачем мне это? | ||
+ | |Содержание= | ||
+ | Чтобы получить доступ к своим файлам с любого ПК в сети. | ||
+ | |||
+ | Чтобы предоставить ваш принтер в общее пользование. | ||
+ | |||
+ | Чтобы упростить создание резервных копий. | ||
+ | |Ширина=20%}} | ||
+ | |||
+ | {{Врезка|right| | ||
+ | |Заголовок=Полезные ссылки | ||
+ | |Содержание= | ||
+ | * http://www.samba.org/samba/docs/man/Samba-hOWTO-Collection | ||
+ | * http://hr.uoregon.edu/decidrl/samba.html | ||
+ | * http://samba.anu.edu.au/cifs/docs/what-is-smb.html | ||
+ | * ftp://ftp.samba.org/pub/samba/docs/Samba24hc13.pdf | ||
+ | |Ширина=20%}} | ||
Совместное проживание OS X, Windows и Linux – дурдом? только не при Samba. | Совместное проживание OS X, Windows и Linux – дурдом? только не при Samba. | ||
Строка 409: | Строка 427: | ||
==Запрягаем базу данных== | ==Запрягаем базу данных== | ||
+ | Ваш собственный сервер баз данных MySQL в подкрепление к OpenOffice.org Base. | ||
+ | |||
+ | {{Врезка|right| | ||
+ | |Заголовок=Зачем мне это? | ||
+ | |Содержание= | ||
+ | Чтобы сэкономить деньги на хостинге баз данных. | ||
+ | |||
+ | Чтобы получить прочную основу для графических систем баз данных. | ||
+ | |||
+ | Чтобы наконец изучить SQL. | ||
+ | |Ширина=200px}} | ||
+ | |||
+ | Баз данных в мире заметно больше, чем web-серверов. Они гораздо дольше окружают нас, содержат на порядок больше данных и поставляют больше критичных сервисов, чем все прочие. а почему бы вам не завести собственную базу данных? В отличие от серверов Samba и Apache, серверы баз данных не гонятся за славой – запустите такой, и он будет сидеть себе потихоньку в фоновом режиме, дожидаясь запроса. | ||
+ | |||
+ | Web-хостыеры обычно предоставляют базы данных весьма скромных размеров (заполучить 100 мБ считается удачей) – вот вам и повод сделать сервер самому. Потратив некоторое время на освоение SQL, вы сможете настроить ваш сервер и запросто предоставлять его также и вашим друзьям. | ||
+ | |||
+ | ===Ваше руководство по установке=== | ||
+ | Мы продемонстрируем вам, как настроить сервер MySQL. MySQL 5.0 имеется на нашем диске, так что скопируйте его, распакуйте и перейдите в созданный каталог, где выполните ./configure --prefix=/usr/local/mysql, затем make, переключитесь в режим root, и наконец, запустите make install. теперь перейдите в каталог /usr/local/mysql, выполните там команду bin/mysql_install_db, затем chown -R mysql var. Итак, MySQL установлена. Выполните команду bin/mysqld_safe &, чтобы запустить ваш MySQL-сервер. | ||
+ | |||
+ | По умолчанию MySQL не устанавливает пароль для своего суперпользователя, так что вам нужно ввести несколько команд от имени непривилегированного пользователя: | ||
+ | |||
+ | <code> | ||
+ | # Входим на сервер | ||
+ | /usr/loca/mysql/bin/mysql -u root mysql | ||
+ | # зададим пароль для root — желательно, чтоб угадать его было нелегко! | ||
+ | UPDATE user SET Pasword = | ||
+ | PASSWORD(‘frosties’) WHERE User = ‘root’; | ||
+ | # Создайте базу данных, которая нам понадобится в дальнейшем | ||
+ | CREATE DATABASE lxfdb; | ||
+ | # Добавьте учетную запись непривилегированного пользователя | ||
+ | INSERT INTO user (Host, User, Password) | ||
+ | VALUES (‘localhost’, ‘lxf’, | ||
+ | PASSWORD(‘orangutan’)); | ||
+ | # Предоставьте новому пользователю доступ к созданной базе данных | ||
+ | GRANT ALL PRIVILEGES ON lxfdb.* TO lxf; | ||
+ | # Обновите привилегии MySQL | ||
+ | FLUSH PRIVILEGES; | ||
+ | # Выйдите из MySQL; негоже лазить везде с правами root | ||
+ | exit; | ||
+ | </code> | ||
+ | |||
+ | Мы вернулись к нашей командной строке, теперь осталось убедиться, что новая учётная запись работает. Введите: | ||
+ | |||
+ | <code> | ||
+ | # Входим под именем нашего пользователя | ||
+ | /usr/local/bysql/bin/mysql -u lxf -p lxfdb | ||
+ | # Посмотрим список имеющихся таблиц (пока у нас ничего нет) | ||
+ | SHOW TABLES; | ||
+ | exit; | ||
+ | </code> | ||
+ | |||
+ | Если всё в порядке, значит, учётная запись создалась нормально. | ||
+ | |||
+ | Чтобы создать учётные записи ещё для кого-нибудь, просто повторите команду INSERT INTO, замените имя пользователя и пароль новыми значениями, плюс установите значение Host в «%» (предоставление доступа к локальному хосту извне с удаленных хостов). Вы можете создать сколько угодно баз данных и предоставлять пользователям различные уровни доступа. MySQL работает на порту 3306, так что вам нужно будет открыть доступ к нему на вашем брандмауэре, чтобы другие могли подключаться беспрепятственно. | ||
+ | |||
+ | ===Жизнь-служение=== | ||
+ | По общему признанию, серверы баз данных не богаты приложениями, преимуществами которых можно воспользоваться прямо с ходу, но некоторые всё же существуют. Например, можно настроить OpenOffice.org Base на взаимодействие с вашим новым сервером для всех её баз данных – вы получите ту же самую дружественную оболочку, но надёжно подкрепленную прекрасно масштабируемым MySQL. | ||
+ | |||
+ | Если душа просит чего-то более «продвинутого», то как насчет возможности доступа к вашим данным из любой точки? Лучше всего вооружиться программой типа PhpMyAdmin: это основанный на PHP инструмент администрирования MySQL-сервера, позволяющий вам создавать данные и управлять ими через Интернет. Будьте осторожны с правами доступа; лучше всего установить отдельную копию phpMyAdmin для каждого пользователя, чтобы быть уверенным в надлежащем разграничении прав. | ||
+ | |||
+ | Многие скрипты используют MySQL для хранения своих данных (wiki и дневники, пожалуй, наиболее яркие представители), но, бесспорно, лучшее применение MySQL – это разработка собственных PHP-скриптов на базе MySQL. | ||
+ | |||
+ | ===Межсетевые экраны=== | ||
+ | Запуская собственный сервер, вы вынуждены «продырявить» свой брандмауэр (firewall), чтобы ваш интернет-сервис мог работать, потому что брандмауэр зачастую блокирует все входящие соединения – беспрепятственно проходят только исходящие. | ||
+ | |||
+ | Чтобы открыть порт на вашем брандмауэре для какого-либо сервера, например, Apache (HTTP), вам нужно сначала узнать, какой порт и протокол этот сервер использует. Эту информацию обычно можно найти в документации сервера; пригодится также наша небольшая таблица. | ||
+ | |||
+ | И SUSE, и Mandriva используют собственные инструменты настройки брандмауэра, доступные из панели управления. В SUSE, например, откройте Yast, выберите «Security and Users» и щелкните на кнопку «Firewall». Появится новое окно, и для открытия порта просто щелкните на вкладку «Allowed Services» слева. SUSE поставляется с несколькими предварительно настроенными сервисами, которые можно просто выбрать из выпадающего меню «Services to Allow», либо добавить ваш собственный, щёлкнув по кнопке «Advanced». Если вы предпочитаете действовать самостоятельно, то Guarddog (http://www.simonzone.com/software/guarddog) – прекрасная графическая оболочка для настройки вашего брандмауэра. | ||
+ | |||
+ | {| class="standard" cellpadding="0" cellspacing="3" border="0" | ||
+ | !bgcolor=#CCCCFF| Сервис ||bgcolor=#CCCCFF| Протокол||bgcolor=#CCCCFF|Порт | ||
+ | |- align="center" | ||
+ | |SSH||TCP||22 | ||
+ | |- align="center" | ||
+ | |HTTP||TCP||80 | ||
+ | |- align="center" | ||
+ | |Squid||UDP, TCP||3128, 3130 | ||
+ | |} | ||
+ | |||
+ | ==Общайтесь при помощи Jabber== | ||
+ | |||
+ | Соберите друзей поболтать через ваш личный сервер обмена мгновенными сообщениями. | ||
+ | |||
+ | {{Врезка|right| | ||
+ | |Заголовок=Зачем мне это? | ||
+ | |Содержание= | ||
+ | Чтобы держать свои сообщения в секрете | ||
+ | |||
+ | Чтобы сохранять все важные «диалоги» | ||
+ | |||
+ | Чтобы запустить собственную страничку сообщества | ||
+ | |||
+ | Чтобы избавиться от рекламы | ||
+ | |Ширина=200px}} | ||
+ | |||
+ | {{Врезка|right| | ||
+ | |Заголовок=Полезные ссылки | ||
+ | |Содержание= | ||
+ | * http://www.habber.org | ||
+ | * http://www.jivesoftware.org | ||
+ | * http://psi-im.org/psi.affinix.com | ||
+ | * http://www.xmpp.org | ||
+ | * http://en.wikipedia.org/wiki/Jabber | ||
+ | |Ширина=200px}} | ||
+ | |||
+ | Если не считать голосовое общение, то мгновенные сообщения (IM) лучше всего подходят для проведения групповых дискуссий. Они заслуженно популярны, и существует ряд конкурирующих протоколов, серверов и клиентов для IM. Поскольку мы используем Linux, мы можем выбрать лучшее – по нашему мнению, это Jabber. | ||
+ | |||
+ | ''Jabber'' – не название какой-то программы как таковой. Это обозначение протокола, поддерживающего взаимодействие клиентов и серверов для создания чата. Вообще-то протокол называется не Jabber, более точное его наименование – XMPP, он поддерживает открытый стандарт для сообщений. Однако довольно путаницы, перейдем к делу. Протоколами Jabber пользуются несколько серверов. Некоторые из них коммерческие, хватает и открытых; одни написаны на Java, другие – на С, и т.д. Со списком различных вариантов можно ознакомиться на сайте JFSF [http://www.jabber.org/software/servers.shtml]. Мы выбрали Wildfire, сервер от Jive Software, по трём причинам – этот сервер: | ||
+ | * свободное ПО, распространяемое подлицензией GPL; | ||
+ | * основан на Java и является кросс-платформным (Mac/Windows/Unix); | ||
+ | * способен работать как автономно, так и в составе сервера приложений. | ||
+ | |||
+ | Есть и четвёртая причина: его очень просто настраивать и использовать! Чтобы раздобыть последнюю версию исходных кодов и RPM-пакеты, зайдите на http://www.jivesoftware.org/wildfire/ или возьмите версию с нашего диска, которую будем использовать мы. Установка RPM-пакета совершенно стандартная, так что у вас все получится (сервер будет поставлен в '''/opt/wildfire'''). Tar-архив содержит статически собранную версию, которую вы можете распаковать и скопировать в '''/opt''' или другое место. запустите сервер: | ||
+ | |||
+ | <code> | ||
+ | /opt/wildfire/bin/wildfire | ||
+ | </code> | ||
+ | |||
+ | Дальнейшую настройку может выполнить сам сервер. Наберите в адресной строке адреса вашего браузера http://localhost:9090 (или укажите имя сервера, если вы выполняете настройку удалённо). Углубившись в опции (для простоты выберите встроенную базу данных – Embedded Database), вы за несколько шагов достигнете главной панели администрирования. Здесь доступна уйма опций, но в первую очередь надо бы завести нескольких пользователей и протестировать систему. Ваш сервер – частный и закрытый, поэтому вы, вероятно, исключите регистрацию извне и будете создавать нужных пользователей самостоятельно. | ||
+ | |||
+ | Чтобы сервис ''Wildfire'' запускался при старте системы, в каталоге '''/bin/extra''' предсмотрен скрипт ''wildfired''. Для его запуска на вашей системе, отредактируйте строку, начинающуюся с '''export WILDFILRE_HOME=''', чтобы она указывала на каталог установки, затем скопируйте его в '''/etc/init.d''' и сделайте ссылку из каталога соответствующего уровня исполнения (runlevel). точный способ сделать это зависит от вашего дистрибутива. | ||
+ | |||
+ | Вот и всё. Пользователи смогут самостоятельно подключаться к вашему серверу и беседовать, пока фирма не обанкротится. Кстати говоря, в корпоративной сети вы можете подсоединить ''Wildfire'' к LDAP – учётные записи для всего персонала будут получены автоматически! (См. Http://www.jivesoftware.org/builds/wildfire/docs/latest/documentation/ldap-guide.html). | ||
+ | |||
+ | ===Выбирайте клиент=== | ||
+ | Существует множество клиентов, способных работать с Jabber-серверами – поскольку это открытый стандарт, их достаточно легко подключить. Вот несколько популярных совместимых клиентов для основных операционных систем: | ||
+ | * Linux: Gaim, Kopete, Gush, Gabber; | ||
+ | * Mac OS X: iCat, Gush, Gabber; | ||
+ | * Windows: Miranda IM, Trillian Pro, IRJabber,Gush; | ||
+ | |||
+ | Не забывайте, что вам нужно создавать учётные записи на сервере или разрешить клиентам регистрироваться самостоятельно. Приятного общения! | ||
+ | |||
+ | ===Настройки SYSCTL=== | ||
+ | |||
+ | Ядра многих дистрибутивов настроены на баланс между серверным и «настольным» применением. Но если вы запускаете силь но загруженный сервер, то можно подстроить некоторые опции ядра для получения прироста скорости при помощи утилиты sysctl, которая изменяет параметры ядра «на лету». (Вы можете также сохранить настройки в /etc/sysctl.conf). Введите sysctl -a, чтобы увидеть все параметры. Ряд опций могут увеличить производительность сервера, их следует вводить от имени root: | ||
+ | |||
+ | <code> | ||
+ | sysctl -w kernel.threads-max=65526 | ||
+ | sysctl -w fs.file-max=8192 | ||
+ | </code> | ||
+ | |||
+ | Эти команды устанавливают число активных потоков, которое ядро может обслуживать, и число файлов, которые можно открыть одновременно. Увеличьте эти значения, если в логфайлах появятся сообщения о нехватке данных ресурсов. | ||
+ | |||
+ | Следующая опция увеличивает объем памяти, выделяемой для сетевых буферов отправки – если нужно обслуживать большие файлы, то это значительно ускорит машинуработу (web, | ||
+ | FTP, Samba и т.д.): | ||
+ | <code> | ||
+ | sysctl -w net.core.wmem_ | ||
+ | max=1048576 | ||
+ | </code> | ||
+ | |||
+ | Далее, установите число соединений, которые сохраняются в ожидании подтверждения клиентом. Обычно это число – 1024; увеличьте его, если ваш сервер часто оказывается перегружен соединениями: | ||
+ | <code> | ||
+ | sysctl -w net.ipv4.tcp_max_syn_backlog=4096 | ||
+ | </code> | ||
+ | |||
+ | Последняя опция определяет, как страницы памяти ядра сохраняются на диске (в виртуальной памяти), когда объем ОЗУ недостаточен. Обычно этот параметр устанавливается в значение 3. Более высокое значение увеличит время отклика настольных приложений (нехорошо!), но может быть полезно на сервере, где общая пропускная способность важнее, чем мгновенный отклик: | ||
+ | <code> | ||
+ | sysctl -w vm/page-cluster=8 | ||
+ | </code> | ||
+ | |||
+ | ==Запустите собственную IRC-сеть== | ||
+ | |||
+ | Откройте чат-салон на IrC-сервере – можно обсуждать открытое ПО, проекты Linux, судейство в турине | ||
+ | |||
+ | Internet Relay Chat (IRC) – предшественник всемирной паутины. В далёком 1988-м году программист Яаркко Ойкаринен (Jarkko Oikarinen) создал альтернативу общению через доски объявлений, разработав IRC – простой и быстрый протокол, основанный на обычном тексте, который позволил пользователям во всём мире подключаться к сети серверов и беседовать в режиме реального времени. Благодаря простоте протокола IRC, даже программисты-любители могли разработать собственные клиенты – так что довольно быстро система уже насчитывала тысячи пользователей. | ||
+ | |||
+ | Сегодня рынок захвачен преимущественно чат-салонами, основанными на web (типа Yahoo Chat), но IRC всё ещё очень популярен среди опытных пользователей. Основные IRC-сети, EFnet и Freenode, размещают тысячи «каналов» (аналог чатсалона) по темам от разработок на Perl до воскрешения мёртвых. IRC выработал свои собственные обычаи и нормы этикета, и пользователи, которые хамят и высказывают неуважение к правилам, рискуют нарваться на довольно жёсткие санкции. Это диковатый и эксцентричный мир – но только не в вопросах функционирования, и один из лучших способов поддерживать связь с людьми. | ||
+ | |||
+ | ===Зачем запускать IRCD?=== | ||
+ | Демон IRC, известный также как IRC-сервер, позволяет пользователям подключаться к вашей машине через своих клиентов и взаимодействовать с вами как с хостом. Вы можете запустить автономный IRC-сервер для внутреннего пользования или присоединиться к большой сети, что-бы распределить загрузку – если у вас, к примеру, есть право на присоединение вашего сервера к Freenode, то вы сможете обслуживать пользователей, которые будут общаться с пользователями других Freenode-серверов. так… а свой-то зачем настраивать? По нескольким причинам: вы можете работать над программным проектом и пожелать работать с собственными каналами, чтоб самому устанавливать правила (вместо создания канала в чужой сети). Или, возможно, вы хотите общаться с друзьями «частным» образом, подальше от различных «асек» и основанных на web чат-салонов. а может быть, вы просто хотите поддержать существующую IRC-сеть, добавив к ней ещё одну лошадиную (в смысле, серверную) силу. | ||
+ | |||
+ | Многие нынешние IRC-серверы являются переработкой исходного кода IRCD, с набором функций, добавленных поверх него. Некоторые были созданы с нуля. Ниже мы приводим три шага, показывающие, как собрать, настроить и запустить ''IRCD-Hybrid'', один из наиболее гибких серверов IRC, широко использующийся в сети Efnet. | ||
+ | |||
+ | Когда ваш сервер будет запущен, вашим пользователям понадобятся IRC-клиенты, чтобы подключиться к нему. Пользователям KDE следует попробовать прекрасный ''Konversation'', в то время как фанаты Gnome/GTK могут выбрать не менее удачный ''X-Chat''. Для работы в командной строке хорошим выбором будут ''Irssi'' и ''BitchX'', и есть даже web-оболочка в виде CGI:IRC. Полный список можно найти на http://www.freshmeat.net/. | ||
+ | |||
+ | ===Шаг 1 Завести IRCD-HYBRID=== | ||
+ | Вы можете найти его на нашем диске в разделе '''Server''' или на сайте http://www.ircd-hybrid.com. распакуйте '''ircd-hybrid-7.2.0.tgz''', перейдите в созданный каталог и введите '''./configure'''. Здесь нет скрытых зависимостей, и опции, выставленные по умолчанию, превосходны. Но если вы пожелаете изменить максимальную длину имени пользователя или наименования канала, это можно сделать, используя ключи '''--with-nicklen''' и '''--with-topiclen''' соответственно в команде '''./configure'''. Введите make и make install (как root) для установки в '''/usr/local/ircd''' по умолчанию. | ||
+ | |||
+ | ===Шаг 2 Настроить=== | ||
+ | Перейдите в '''/usr/local/ircd/etc/''' и скопируйте файл '''example.conf''' под именем '''ircd.conf'''. теперь откройте ircd.conf в вашем любимом редакторе, и познакомьтесь поближе с его форматом. Задайте имя вашего сервера и его SID (уникальный идентификатор, например, «8XZ») в секции «serverinfo» в самом верху. Вам нужно также найти и удалить строку '''havent_read_conf''', которая предотвращает запуск сервера с настройками по умолчанию – это будет на строке 1073. Для начала вполне достаточно; позже вы сможете почитать описания других опций. | ||
+ | |||
+ | ===Шаг 3 Пуск!=== | ||
+ | Введите команду '''/usr/local/ircd/bin/ircd -logfile ~/ircd.log''', она запустит сервер (и будет записывать информацию о любых проблемах в файл '''ircd.log''' вашего домашнего каталога). теперь вы можете подключиться к вашей машине локально (по адресу 127.0.0.1) с помощью IRC-клиента, создать каналы и установить права доступа. затем сообщайте друзьям ваш IP-адрес или доменное имя, и они смогут подключаться через Интернет (убедитесь, что порт 6667 не заблокирован брандмауэром). Если вы хотите присоединиться к другой IRC-сети, свяжитесь с её администраторами – как правило, вы можете найти их адреса электронной почты на сайте сети или проекта. Наконец, более полную информацию по использованию IRC можно получить на http://www.irchelp.org. | ||
+ | |||
+ | ==Нужна поддержка?== | ||
+ | Наша прогулка по IrC была последней в представленном материале. Мы надеемся, что вы попробуете хотя бы одну из предложенных идей. Прыжок на первую ступеньку администрирования сервера совершить непросто, так что если вы сражаетесь с пошаговыми инструкциями или нуждаетесь в совете, что дальше, мы рекомендуем вам посетить http://unixforum.org. Даже если вы просто хотите пожаловаться, что ваш любимый сервер обделили вниманием, мы все равно ждем вашего отклика! |
Текущая версия
Содержание |
К В@шим услуг@м
Вам никогда не казалось, что ваша машина с Linux могла бы делать для вас больше, чем целый день запускать OpenOffice.org да «гонять» Frozen Bubble? Задайте вашему ПК настоящую работу, настроив его как суперсервер интернета.
Многие считают, что Интернет существует лишь для того, чтобы пассивно пользоваться его благами. многие тратят больше времени на просмотр сайтов, чем на их разработку. многие даже не представляют, что могут настроить собственный BitTorrent. Но вы же не принадлежите к этим «многим»? Вы не нуждаетесь в напоминании, что ваш компьютер с Linux содержит самые мощные и популярные серверные программы на свете. Немного поизучав их, вы сможете превратить вашу настольную машину во «всегда к вашим услугам» суперкомпьютер, открытый всему миру. Он сможет поделиться вашими файлами, представить ваши web-страницы, стать чат-сервером, обслужить вашу радиостанцию, и многое другое – и ни одна из этих задач не потребует столько оперативной памяти, чтобы выделить для нее вспомогательный ПК.
Превратить ваш ПК в узел сети Интернет не сложно, но зато очень здорово, и что важнее всего – совершенно бесплатно. Читайте дальше.
«Ваш linux-компьютер содержит самые мощные серверные программы на свете.»
Публикуем файлы в BitTorrent
Чтобы распространять файлы, не перегружая ваш интернет-канал.
Чтобы отслеживать популярность файлов, настроив трекер.
Чтобы использовать RSS-каналы для размещения новых данных для ваших пользователей.
BitTorrent – замечательный способ поделиться файлами. Не желают ли дамы и господа запустить собственный сервер?
Не путайте с нелегальным распространением файлов: на самом деле BitTorrent – всего лишь невероятно эффективный протокол и замечательно реализованная идея, которая заслуживает большего, чем ассоциации с мрачным сетевым «подпольем».
BitTorrent эксплуатирует старую добрую модель клиент-сервер, когда те, кто скачивает файл, предоставляют секции, или «блоки», которые они уже скачали, другим участникам сети. Можно сравнить это с пирамидой из бокалов с шампанским. Шампанское льётся только в верхний бокал, и по мере заполнения перетекает в нижние. Только в случае с BitTorrent можно начинать делиться «шампанским» ещё до того, как ваш «бокал» наполнится.
Чтобы скачать поток, пользователь сперва должен получить копию специального Torrent-файла (с суффиксом .torrent). Он создаётся на основе исходного файла и содержит хэш для каждого отдельного блока, который можно скачать и предоставить остальным. Хэш гарантирует, что каждый фрагмент файла, скачанный пользователем, будет в точности совпадать с оригиналом. Наиболее творчески реализовано распределение клиентами тех частей, которыми они уже располагают. Это зависит от трекера (tracker), интернет-адрес которого вложен в Torrent-файл. Трекер выполняет функции дирижёра. Он отслеживает, кто что скачал, и всякий раз при получении нового запроса на ту или иную закачку он гарантирует, что новый клиент получит кусочки, которых ещё нет у других участников сети. Вот что вы можете сделать на вашем ПК: запустить собственный трекер, так что вы не просто будете разделять потоки – вы будете их создавать.
Строим трекер
Трекер (tracker) – сервер, управляющий распространением файла
Сидер (seeder) – тот, кто отдает фрагменты файла
Личер (leecher) – тот, кто скачивает фрагмент файла
Наиболее популярный трекер называется XBNBT, первоначально его разработали на языке Python и поставляли с оригинальным BitTorrent, а потом переписали на C++. Вам нужно скачать исходный код XBNBT или взять его с нашего диска. распакуйте файл и перейдите в каталог bnbt/src. мы будем собирать простейший трекер, так что просто наберите make xbnbt. При этом в текущем каталоге будет создан исполнимый файл. Очень важно ограничить трекер пользовательской учётной записью, так что не обязательно этот файл куда-то устанавливать.
Следующий этап – создание каталога torrents, где будут размещаться Torrent-файлы, которыми будет управлять сервер. Его нужно создать внутри каталога, из которого будет запускаться исполняемый файл. Наконец, перед запуском сервера необходимо отредактировать замысловатый конфигурационный файл. Откройте bnbt.cfg и измените следующие строки (torrents указывает на каталог, который мы только что создали):
allowed_dir = torrents bnbt_allw_torrent_downloads = 1 bnbt_file_dir = torrents bnbt_parse_on_upload = 1
Теперь можно запускать сервер. Выполните команду ./xbnbt в текущем каталоге. Вы должны получить на выходе информацию, в случае удачи содержащую фразу «Server Info – Start», которая означает, что трекер запустился. Значит, пора обратиться к трекеру, введя в строке браузера http://localhost:6969 (замените «localhost» URL-адресом вашей машины). До создания новой учётной записи больше ничего делать не надо. Просто припишите к введённому URL /users.html, и откроется страница User Info. Создайте учётную запись администратора и соответствующий пароль, и отметьте все «флажки», чтобы получить все привилегии.
Создать Torrent-файл из файла, который вы хотите предоставить в общий доступ, могут многие популярные клиенты; самый простой в использовании, вероятно, Azureus. Выберите пункт Create Torrent в меню File. Параметр «Announce URL», который будет запрошен на первой странице – это адрес вашего сервера плюс /announce (используя «localhost» в качестве адреса сервера, получим http://localhost:6969/announce). Щёлкните на Next и выберите файл, которым вы решили поделиться. Azureus продолжит работу и создаст Torrent-файл. можете сохранить его где хотите.
Поделитесь потоком
http://sourceforge.net/projects/xbnbt – домашняя страница XBNBT.
http://azureus.sourceforge.net – домашняя страница Azureus.
Torrent-файл, который вы только что создали, нужно загрузить на трекер. Для этого откройте страницу http://localhost:6969/upload.html. Щёлкните по кнопке запроса, укажите ваш Torrent-файл и щёлкните на Upload, чтобы скопировать его на сервер.
Последний этап – самый важный, и на первый взгляд, неочевидный. Ваш сервер теперь умеет отслеживать поток, но прежде чем кто-либо сможет скачать его, вам нужно породить (seed) копию. В Azureus откройте поток, только что переданный на сервер, и когда Azureus спросит вас о пункте назначения, убедитесь, что вы указали место, где сохранён исходный файл. Azureus сопоставит этот файл с Torrent-файлом, проверит, не требуется ли скачать что-либо ещё, и сразу же запустит поток. Чудеса! Вот теперь можете публиковать ссылку на Torrent.
Последнее замечание: ваш трекер будет управлять каждым соединением с другими сидерами (seeder) и личерами (leecher). Проверьте на главной странице – http://localhost:6969 – текущий статус трекера, включая все доступные потоки и число сидеров и личеров, подсоединённых к нему.
Собственная радиостанция
Живите на волне вашей любимой музыки.
Поделитесь своей музыкой и миксами с друзьями.
Размещайте собственные podcast’ы.
libxml2 http://xmlsoft.org/
libxslt http://xmlsoft.org/XSLT/
curl http://curl.haxx.se
Ogg Vorbis http://xiph.org/vorbis/
Ices2 http://www.icecast.org/ices.php
libshout http://www.icecast.org/download.php
Вдоволь насиделись у радиоприемника? играйте то, что нравится вместе с Icecast.
Одна из самых замечательных возможностей при наличии широко полосного подключения к Интернету – это интернет-радио. Послушав вещание в Сети, вы вряд ли захотите вернуться к своему старому, с трудом настраиваемому на каналы аналоговому приёмнику. Сетевых стан- ций гораздо больше, чем вы могли бы надеяться «поймать» в ограниченном спектре официальных радиочастот, причем есть они на любой вкус. многие сетевые радиостанции довольствуются несколькими десятками слушателей – как насчёт Drone Zone («атмосферная музыка окружающего пространства, совместимая с большинством лекарственных препаратов»)?
Одна из самых популярных точек подключения к сетевым радиостанциям –www.shoutcast.com. Это портал для тысяч интернет-радиостанций, использующих протокол Shoutcast для передачи аудиопотока на компьютеры слушателей. Попробуйте поискать какую-нибудь песню на сайте – неважно, широко известную или нет: всегда есть шанс, что где-то в мире какой-нибудь Shoutcast-сервер исполняет именно её.
Shoutcast– проприетарный протокол, разработанный компанией Nullsoft, той самой, которая выпускает Winamp, один из лучших медиа-плейеров для Windows. Протокол в основном оперирует данными в формате MP3 с несколькими HTTP-командами, и чтобы прослушать такой поток, вам потребуется плейер типа XMMS или Amarok.
Потребуется также соединение со скоростью более 128 кб/с, это в два раза больше «модемной» скорости 56 кб/с, но широкополосным подключением обеспечивается легко.
Cтань ди-джеем
Конечно, вы не ограничены прослушиванием чужих потоков. Вы можете запустить свой собственный Shoutcast-сервер и слу-шать собственную коллекцию, находясь вдали от дома, или передавать свою музыку трём-четырём слушателям в мире, одобряющим ваш музыкальный вкус. Обязательно надо оформить разрешение на воспроизведение любой имеющейся у вас музыки. Еще недавно, если вы хотели вещать на законных основаниях, нужно было подписывать соглашение с агентом каждого исполнителя. Сейчас вы можете получить единую лицензию, стоимость которой пропорциональна доходу от вашей радиостанции.
Проприетарный Shoutcast-сервер распространяется бесплатно, но есть более правильное решение – Icecast. Это открытый продукт, способный создавать совместимые с Shoutcast потоки, а также использовать Ogg Vorbis в качестве замены формату MP3, и для его настройки нужно выполнить лишь несколько простых шагов.
Шаг 1. Скачайте и установите Icecast
Если у вас нет удобного пакета Icecast в вашем дистрибутиве (например, RPM- или Deb-файла в менеджере пакетов), вам нужно будет скачать последнюю версию исходного кода с сайта http://www.icecast.org/download.php. Скачав, распакуйте архив, перейдите в созданный каталог и запустите ./configure, а затем make install, как показано в следующем примере:
tar xvzf ~/Desktop/icecast.tar.gz cd icecast ./configure –prefix=/usr make install (с правами root)
Шаг 2. Настройка
В Icecast источником аудиопотока является так называемая точка доступа (mountpoint), и у каждого потока, который вы предоставляете, она должна быть своя. Для потока можно выбирать не только различную музыку, но и различную частоту дискретизации. От этой частоты и от полосы пропускания зависит качество звучания. Настройки, как и у других серверов Linux, выполняются ручным редактированием нескольких текстовых файлов. Для большинства дистрибутивов они расположены в /usr/share/icecast, за исключением файла icecast.xml, который находится в /etc/icecast.xml.
Откройте icecast.xml в вашем любимом редакторе, да хоть и в Emacs. Вам потребуется кое-что поменять. Убедитесь в правильности путей к другим конфигурационным файлам, особенно к файлу журнала, который обычно указывает куда-то наподобие /var/log/icecast. Поскольку Icecast запускается от имени обычного пользователя (не суперпользователя), нужно убедиться, что каталог /var/log/icecast существует и ваш пользователь Icecast имеет права на доступ к нему.
Например, ниже мы даём пользователю «graham» право записи в каталог лог-файлов:
mkdir /var/log/icecast chown graham:users . # в случае SUSE chown graham:graham . # в случае Mandriva
Если вы запускаете общедоступный сервер, рекомендуется создать пользователя «icecast» исключительно для целей запуска сервера. Также рекомендуется изменить пароли «source-password» и «admin-password» в файле icecast.xml (по умолчанию они смеха ради установлены как «hackme») и поменять параметр «hostname» на доменное имя вашей машины. Проделав всё это, протестируйте сервер, выполнив команду icecast -c /etc/icecast.xml от имени вашего пользователя Icecast. В типичном для Linux ответе, если всё работает как нужно, смотреть будет не на что.
Шаг 3. Что-НибудЬ послушаем
Итак, сервер запущен. можете проверить его работу, открыв браузер на сервере и введя адрес http://localhost:8000/admin. Имя пользователя будет «admin», а пароль – тот, который вы вписали в конфигурационный файл icecast.xml.
А теперь – волнующий момент. Введите в адресной строке вашего браузера http://localhost:8000/test. ogg. И... ничего не произойдет, поскольку Icecast ищет файл test.ogg в каталоге /usr/share/icecast. Вы можете убедиться в этом, открыв файл error.log (туда следует заглядывать в первую очередь, если вы наткнулись на проблему). Понятно, что нужно сделать, чтобы ваша музыка зазвучала: просто скопируйте звуковой файл из вашей коллекции в /usr/share/icecast/test.ogg и перезагрузите поток. теперь вы должны услышать файл, воспроизводимый с помощью Icecast. Страница администрирования обновится, чтобы показать новых слушателей.
Шаг 4. Меняя песни – ices2
Теперь всё должно работать, но проблема заключается в том, что вы можете указать только один аудио-файл. Есть более гибкое решение – сначала оно покажется вам странным: нужно запустить так называемый source-клиент для Icecast. Он отвечает за формирование потока данных, который Icecast использует как источник вещания. Есть несколько разновидностей клиентов, среди них есть и ориентированные на «живое» вещание и ди-джеев. Один из наиболее популярных – Ices2.
Ices2 устанавливается аналогично Icecast. Скачайте исходный код, запустите ./configure и затем make install в распакованном каталоге. Нетрудно догадаться, что тут тоже не обойдется без загадочного конфигурационного файла. К счастью, в пакет включено несколько примеров, они находятся в каталоге conf. Один из них предназначен для использования в качестве источника входа звуковой карты в качестве источника (под именем ices-alsa.xml), но нам больше подойдёт другой, под названием ices-playlist.xml.
После того как вы откроете файл ices-playlist.xml в вашем редакторе, вам нужно будет поменять пароль, указанный между тэгами <password> и </password>.
Здесь должен быть тот самый пароль администратора, который вы определили в конфигурации Icecast, по той простой причине, что Ices2 будет добавлять новую точку доступа для сервера Icecast. Заодно нужно будет изменить имя хоста (hostname) в файле конфигурации, чтобы получать доступ к серверу по сети.
Файл конфигурации содержит настройки частоты дискретизации потока, которые следуют за тэгом <nominal-bitrate>. Если ваши аудио-файлы выдаются не со стандартной (44100 кГц) частотой, вам потребуется указать этот параметр.
Шаг 5. Play-лист ices2
Как вы могли заметить, в конфигурационных файлах гораздо больше информации, чем мы исследовали. Большинство радиостанций в Сети, например, используют «живое вещание», подмешивая к потоку данные со звуковой карты, прямо как настоящие ди-джеи. Это хороший способ сделать вещание менее механистичным, чем простая перетасовка play-листа. Но наш пример более полезен, если вы хотите послушать свою музыкальную коллекцию, находясь вдали от своего компьютера.
Ключи к предоставлению списка аудио-файлов – в файле ices-playlist.xml. Ices2 использует текстовый файл, который рассматривается как простой play-лист. Это означает, что вы можете перемешивать дорожки или просто проигрывать их в определенной последовательности. Согласно конфигурационному файлу, он называется playlist.txt, и вам нужно будет убедиться, что файл указан правильно. В этом текстовом файле просто перечислены все композиции, которые вы хотите добавить, на отдельных строках. Например:
/home/graham/ogg/broadcast1.ogg /home/graham/ogg/broadcast2.ogg /home/graham/ogg/broadcast3.ogg
Наконец, вам нужно запустить Ices2 с единственным аргументом, указывающим на изменённый конфигурационный файл:
ices ices-playlist.xml
Ices2 создаст точку доступа на сервере Icecast и выведет аудиопоток, заполняемый из вашего play-листа. Чтобы подключиться к потоку, откройте ваш медиа-плейер и введите http://localhost:8000/example1.ogg.m3u. точка доступа example1.ogg определяется конфигурацией Ices2. Теперь вы должны услышать аудиопоток через ваш сервер Icecast, аккуратно сформированный с помощью Ices2. Если ваш плейер поддерживает метаданные, вы также увидите имя исполнителя и название трека в том виде, в каком эта информация содержится в оригинальном аудиофайле.
Если вы откроете страницу администрирования сервера Icecast, появится точка доступа Ices2, вместе с метаданными трека и потока. С этой же страницы вы также сможете «сбрасывать» людей с потока и перемещать их на другие потоки, возможно, использующие более низкую пропускную способность.
Запустите web-сервер
Apache — самый популярный web-сервер в мире. Давайте выясним, почему.
Управление личным веб-сервером обычно считается низшим этапом на пути становления системного администратора, но это не значит, что от него мало пользы. Истина в том, что наибольшее наслаждение от webвеб-сервера приходит не от простой установки Apache и созданиия нескольких HTML-страничек. Настоящее удовольствие – это создание динамических скриптов, включение поддержки WebDAV, «вставка» Wiki и сетевых дневников (blog), чтобы сервер заработал в полную силу.
Чтобы самостоятельно размещать сайт.
Чтобы при поддержке PHP создавать динамический контент.
Чтобы запустить RSS-каналы, wiki-страницы, форумы и другие компоненты.
Мы начнём с компиляции PHP и Apache с нуля, сделаем несколько базовых страничек, затем посмотрим, какие из существующих инструментов можно применить, чтобы добавить нашему сайту изюминку.
Первые шаги
Мы поместили на наш диск архив с Apache 2.2, так что скопируйте его на ваш диск и распакуйте:
tar xvf httpd-2.2.0.tar.bz2 cd http-2.2.0
Устанавливать наш сервер мы будем в /usr/local/apache, так что созданный при распаковке каталог вы сможете его удалить, если он вам станет не нужен. Однако желательно включить поддержку WebDAV и модуля обеспечения параллельных процессов (multi-proccess module, MPM).
Последнее очень важно, ибо ядро PHP и базовые его расширения поддерживают потоки, а, стало быть, замечательно работают в новом потоковом окружении Apache 2.x. Но многие унаследованные сторонние PHP-расширения небезопасны при использовании потоков, и могут вызывать серьёзные проблемы, если ваш Apache использует потоки при обработке запросов. Потребуйте mpm=prefork: тогда гарантируется, что Apache будет работать в режиме совместимости с версией 1.3, и использование расширений будет безопасным.
Чтобы подготовиться к такой установке, выполните следующую конфигурационную команду:
./configure --prefix=/usr/local/apache --enable-dav --with-mpm=prefork —enable-so
Затем выполните make, переключитесь в режим суперпользователя и выполните make install. запустите Apache на 80-м порту (по умолчанию), выполнив команду /usr/local/apache/bin/apachectl start, потом запустите ваш браузер и введите http://localhost. Если всё работает правильно, браузер так и сообщит.
Поделиться файлами
Мы включили поддержку WebDAV во время сборки Apache – теперь можно делать разные замечательные штуки, например:
Nano conf/httpd.conf.
Найдите строку dav и удалите комментарий в начале строки «#include conf/extra/httpd-dav.conf».
Выполните следующие команды:
cd /usr/local/apache/htdocs mkdir uploads chgrp daemon uploads cd .. bin/htpasswd -c user.passwd admin
Откройте в редакторе файл conf/extra/httpd- dav.conf:
- Измените DavLockDB на «/tmp/DavLock»
- Измените /usr/local/apache/uploads на /usr/
- local/apache/htdocs/uploads
- Измените AuthType на Basic
- Измените AuthName с DAV-upload на «My WebDAV Area»
Выполните bin/apachectl restart
Многие современные операционные системы имеют поддержку WebDAV в ядре, так что сетевые каталоги рассматриваются как локальные. Попробуем это в Gnome. Пройдите в меню Places > Connect To Server (Переход > Подключение к серверу), выберите тип сервиса WebDAV (HTTP), введите сервер «localhost», папку «uploads», имя пользователя «admin» и «My WebDAV» в качестве имени соединения, затем щелкните на Connect (Соединиться). На ваш рабочий стол будет помещена небольшая иконка; по двойному щелчку на ней у вас будет запрошен пароль, и вы, вероятно, сможете сохранить пароль на время текущей сессии, чтобы не пришлось вводить его заново.
После ввода пароля появится новое окно, открывшееся в Nautilus – файловом менеджере Gnome. Теперь можно копировать все файлы, какие пожелаете, в это окно; они будут размещаться в каталоге htdocs/uploads вашей системы. WebDAV обладает замечательным свойством: хотя Nautilus рассматривает его как каталог, но если вы запустите Firefox и укажете http://localhost/uploads, то увидите стандартный листинг каталогов Apache.
Сетевые календари
Теперь попробуем ещё одну интересную возможность: опубликуем в сети календарь с помощью приложения Sunbird, разработанного Mozilla Foundation. Это очень полезно, если вы работаете, скажем, над групповым проектом и хотите, чтобы каждый имел доступ к плану работ. Да мало ли причин, по которым может понадобиться календарь на сервере.
Заберите tar.bz2-архив с Sunbird с нашего диска и распакуйте его куда-нибудь, затем запустите в этом каталоге команду sunbird. Sunbird может работать и с локальными календарями, публикуя их там, где вы скажете, и с удаленными, автоматически выполняя синхронизацию.
На левой панели найдите вкладку Calendars; выберите её, и увидите локальный «домашний» календарь (Home), приготовленный для вас по умолчанию. Независимо от того, хотите ли вы использовать локальные календари или сетевые, первым делом опубликуем эту заготовку в сети.
Щелкните правой кнопкой мыши на Home и выберите Publish entire Calendar (Публиковать весь календарь). В строке адреса, которая появится, введите http://localhost/uploads/mycal.ics и щелкните Publish. Введите имя пользователя «admin» и свой пароль, и ваш (пустой) календарь будет теперь доступен другим для чтения и скачивания.
Теперь заполняйте его событиями. Но это статический календарь, поэтому локально сделанные в нем изменения не отразятся в сети, пока его не опубликуют повторно, что означает лишнюю мороку. Гораздо лучше завести удалённый календарь, так что уничтожьте календарь Home (щёлкните правой кнопкой и выберите Delete Calendar), затем ещё раз нажмите правую кнопку и выберите New Calendar. Выберите remote, затем – WebDAV. Введите http://localhost/uploads/mycal.ics в поле URL, затем щёлкните Next. задайте ему имя, например, «Удаленный календарь», и цвет поинтереснее серого.
Добавим скрипты
WebDAV – очень хороший способ работать с файлами в Сети, но наш web-сервер пока что обслуживает только статические HTML-файлы.
tar xvfj php-5.1.1.tar.bz2 cd php-5.1.1 ./configure --with-apxs2=/usr/local/apache/ bin/apxs make su make install
Данная последовательность команд добавляет модуль PHP к Apache, но нам ещё нужно подправить файл httpd.conf, чтобы сопоставить .php-файлы с интерпретатором PHP. Переключитесь в режим суперпользователя, выполнив команду su – , затем откройте /usr/local/apache/conf/httpd.conf в вашем любимом текстовом редакторе, найдите строки AddType и листайте их до тех пор, пока не увидите «AddType application/x-compress .Z». Под существующими строками AddType добавьте ещё одну:
AddType application/x-httpd-php .php
Сохраните изменения и выйдите из редактора, затем запустите команду /usr/local/apache/bin/apachectl restart. Теперь создайте файл info.php в каталоге /usr/local/apache/htdocs следующего содержания:
<?php phpinfo(); ?>
Если всё сработало правильно (код-то незатейливый), вы увидите экран, похожий на показанный справа. теперь у вас есть всё для программирования на PHP!
Принимаем гостей
И последнее (но не по значению!): что за радость, если на собственном сервере нельзя выделить местечко для друзей? Не бойтесь, полный доступ им давать необязательно. Apache включает модуль mod_userdir, который позволяет размещать веб-страницы в пользовательских домашних каталогах. Чтобы активизировать mod_userdir, потребуется только одно небольшое изменение: откройте httpd.conf и удалите комментарий в начале строки «#include conf/extra/httpd-userdir.conf».
Затем перезапустите Apache командой /usr/local/apache/bin/apachectl restart и откройте терминал с правами обычного пользователя. Вы попадёте в свой домашний каталог, например, /home/bob. Выполните команду mkdir public_html – она создаст новый каталог, где Apache будет искать вашу домашнюю страницу. Создайте в этом каталоге файл index.html и поместите в него какой-нибудь комментарий. Теперь, чтобы почитать сайт, мы просто наберём в браузере http://localhost/~username.
Apache предоставляет пользователям все расширения, загруженные ранее, а следовательно, пользователь Bob, если пожелает, сможет использовать PHP-сценарии. Предоставление пользователю web-страницы через пользовательскую учётную запись означает, что пользователи получат полный SSH-доступ для загрузки своих файлов и управления своим пространством, а обо всём остальном позаботится Apache.
Позаботьтесь о безопасности с nmap
Представьте себе: вы один из последних представителей свободной человеческой расы, в то время как другие порабощены расой злобных машин и используются в качестве источников питания. вам нужно проникнуть в центральный компьютер, добраться до проводов и рвануться в атаку. Чем вы воспользуетесь? Конечно же, Nmap.
Всё верно: в фильме «Матрица:Перезагрузка» Тринити сканирует Матрицу на предмет доступных OpenSSH-серверов и взламывает их, используя реальную уязвимость. Работа Nmap как раз и заключается в сканировании одного или нескольких IP-адресов и выдаче информации о том, какие порты открыты и какие ОС используются. конечно, Nmap нельзя рассматривать только как лучшего друга хакера, ведь это также прекрасный инструмент для анализа вашей собственной сети на предмет возможных уязвимостей.
Eсли вы пробуете всё, что написано в этой статье, то вы установите всевозможные программы, которые открывают порты на вашем компьютерае. Очень важно отслеживать, какие порты открыты, чтобы не запустить какой-то ненужный сервис, а также чтобы вовремя заметить, что в ваш компьютер кто-то нашел лазейку.
Мы включили последнюю версию Nmap в наш диск, так что распакуйте архив, перейдите в полученный каталог и выполните ./configure, make, su, затем make install, и можно приступать.
Nmap лучше всего запускать от имени суперпользователя, потому что она использует специальные режимы соединения с TCP/IP-сокетами для обеспечения пика производительности. итак, из-под root запустите следующую простую команду:
nmap -O localhost
По этой команде будут просканированы все порты вашей машины и выведен отчет об открытых портах. если вы запустили Apache, вы увидите, что порт 80 находится в состоянии «open» (открыт), и что Nmap сопоставила этот порт с сервисом «http». Изучите весь список, пожалуйста: нет ли незнакомого порта? Сравните вывод с тем, что выдает ps aux, чтобы увидеть, не запущена ли какая-нибудь «приблудная» программа или обычно неиспользуемый сервис. Грамотные администраторы содержат «закрытый» сервер, запретив всё, что не требуется для работы — так безопаснее.
Строим файловое хранилище на Samba
Чтобы получить доступ к своим файлам с любого ПК в сети.
Чтобы предоставить ваш принтер в общее пользование.
Чтобы упростить создание резервных копий.
Совместное проживание OS X, Windows и Linux – дурдом? только не при Samba.
Наиболее частая операция, выполняемая в небольших или домашних сетях – обобществление ресурсов. Общим может быть подключение к Интернету или что-нибудь попроще – например, принтер или вообще файл. Прежде чем рассылать 5 мБ-документы по всему дому через Gmail, подумайте о безопасной и простой альтернативе – вашем собственном файловом сервере.
Есть несколько способов создать его в Linux, но, вероятно, простейший и самый надежный способ – это использование Samba. Ко всему прочему, Samba поддерживает протокол SMB, который используется в сетях Windows для предоставления файлов в общий доступ – так что вы сможете работать с общими файлами не только на Linux-машинах, но и на Windows, и на Mac!
Здравствуй, Samba!
Наилучший способ установить Samba на ваш Linux-компьютер – это воспользоваться пакетами, включенными в ваш дистрибутив: Samba имеется в любом дистрибутиве, претендующем на популярность. Итак, пусть ваш менеджер пакетов отыщет и установит соответствующие программы. многие дистрибутивы разделяют клиентское и серверное ПО – убедитесь, что установлено и то, и другое. На «чистом» сервере клиент, конечно, не обязателен, но он пригодится для тестирования.
После установки настает время создать конфигурационный файл. Пакет Samba обычно снабжен файлом настроек по умолчанию, и достаточно лишь слегка подправить его. Впрочем, вы можете начать и с нуля. Краткий пример показывает, как мало этому файлу надо (кстати, его имя – /etc/samba/smb.conf):
[global] workgroup = LINUX netbios name = MYSHARE [share1] path = /tmp [share2] path = /share comment = Some random files
Секция global обязательна и определяет имя рабочей группы (используется в Windows для объединения общих файлов — группировки ресурсов) и имя NetBIOS, под этим именем ваш сервер будет фигурировать на других компьютерах. По умолчанию берется имя вашего хоста (hostname).
Секции share в приведённом примере – это имена общих папок [частенько называемых «шарами», – прим. ред.], которые обслуживаются данной машиной. Опции не ограничиваются простой ссылкой на каталог. Вы можете допустить к общим папкам только лиц из определенного круга или даже сделать список файлов невидимым для неавторизованных пользователей. За дополнительной информацией обращайтесь к демонстрационному конфигурационному файлу или врезке «Полезные ссылки».
Наконец, для запуска сервера выполните команду:
/etc/init.d/samba start
Вероятно, вам захочется, чтобы этот сервис сам активизировался при каждой перезагрузке, так что либо вручную свяжите его с runlevel, либо включите в конфигурацию загрузки компьютера. Используйте для этого инструменты вашего дистрибутива.
В Linux, вы теперь можете монтировать общие каталоги и сетевые ресурсы, используя команду smbmount, или обычную mount с ключом -t cifs (smbfs уже устарела, пользуйтесь cifs):
mount //HOSTNAME/sharename /mnt/share -t cifs -o user
В Windows и Mac вы можете использовать обычные сетевые инструменты.
Кое-что о принтере
Помните, мы вскользь отметили, что в общее пользование часто предоставляется принтер? Конфигурационный файл Samba и с этим способен справиться, причем несколькими способами, в зависимости от того, работает ли у вас CUPS (Common Unix Printing System) и сколько у вас принтеров. мы будем иметь дело с простым сценарием, без CUPS (хотя CUPS, между прочим, тоже присутствует во многих дистрибутивах Linux, и это лучший способ управлять принтерами в Linux). CUPS тоже мог бы настроить сетевую печать, но раз уж запущен Samba, то проще поддерживать один набор файлов.
Обычно файл smb.conf, устанавливаемый по умолчанию, содержит следующие строки (проверьте, что они раскомментированы, т.е. символы «#» есть только там, где показано):
[printers] comment = All Printers path = /var/spool/samba browseable = no # чтобы разрешить «гостевой» доступ к печати guest ok = yes writable = no printable = yes create mode = 0700 #============================= # команда печати, подробности см. выше #============================= print command = lpr-cups -P %p -o raw %s -r # используются драйверы печати на стороне пользователя
Этот код, в общем-то, разрешает пользоваться принтерами всем. Но бывают обстоятельства, когда лучше позаботиться, чтобы на принтер покушались только штатные пользователи – в этом случае просто замените строку «guest ok = yes» на «guest ok = no».
Данные настройки всего лишь позволяют передавать данные – на клиентских машинах, естественно, должен иметься правильный драйвер принтера.
Запрягаем базу данных
Ваш собственный сервер баз данных MySQL в подкрепление к OpenOffice.org Base.
Чтобы сэкономить деньги на хостинге баз данных.
Чтобы получить прочную основу для графических систем баз данных.
Чтобы наконец изучить SQL.
Баз данных в мире заметно больше, чем web-серверов. Они гораздо дольше окружают нас, содержат на порядок больше данных и поставляют больше критичных сервисов, чем все прочие. а почему бы вам не завести собственную базу данных? В отличие от серверов Samba и Apache, серверы баз данных не гонятся за славой – запустите такой, и он будет сидеть себе потихоньку в фоновом режиме, дожидаясь запроса.
Web-хостыеры обычно предоставляют базы данных весьма скромных размеров (заполучить 100 мБ считается удачей) – вот вам и повод сделать сервер самому. Потратив некоторое время на освоение SQL, вы сможете настроить ваш сервер и запросто предоставлять его также и вашим друзьям.
Ваше руководство по установке
Мы продемонстрируем вам, как настроить сервер MySQL. MySQL 5.0 имеется на нашем диске, так что скопируйте его, распакуйте и перейдите в созданный каталог, где выполните ./configure --prefix=/usr/local/mysql, затем make, переключитесь в режим root, и наконец, запустите make install. теперь перейдите в каталог /usr/local/mysql, выполните там команду bin/mysql_install_db, затем chown -R mysql var. Итак, MySQL установлена. Выполните команду bin/mysqld_safe &, чтобы запустить ваш MySQL-сервер.
По умолчанию MySQL не устанавливает пароль для своего суперпользователя, так что вам нужно ввести несколько команд от имени непривилегированного пользователя:
# Входим на сервер /usr/loca/mysql/bin/mysql -u root mysql # зададим пароль для root — желательно, чтоб угадать его было нелегко! UPDATE user SET Pasword = PASSWORD(‘frosties’) WHERE User = ‘root’; # Создайте базу данных, которая нам понадобится в дальнейшем CREATE DATABASE lxfdb; # Добавьте учетную запись непривилегированного пользователя INSERT INTO user (Host, User, Password) VALUES (‘localhost’, ‘lxf’, PASSWORD(‘orangutan’)); # Предоставьте новому пользователю доступ к созданной базе данных GRANT ALL PRIVILEGES ON lxfdb.* TO lxf; # Обновите привилегии MySQL FLUSH PRIVILEGES; # Выйдите из MySQL; негоже лазить везде с правами root exit;
Мы вернулись к нашей командной строке, теперь осталось убедиться, что новая учётная запись работает. Введите:
# Входим под именем нашего пользователя /usr/local/bysql/bin/mysql -u lxf -p lxfdb # Посмотрим список имеющихся таблиц (пока у нас ничего нет) SHOW TABLES; exit;
Если всё в порядке, значит, учётная запись создалась нормально.
Чтобы создать учётные записи ещё для кого-нибудь, просто повторите команду INSERT INTO, замените имя пользователя и пароль новыми значениями, плюс установите значение Host в «%» (предоставление доступа к локальному хосту извне с удаленных хостов). Вы можете создать сколько угодно баз данных и предоставлять пользователям различные уровни доступа. MySQL работает на порту 3306, так что вам нужно будет открыть доступ к нему на вашем брандмауэре, чтобы другие могли подключаться беспрепятственно.
Жизнь-служение
По общему признанию, серверы баз данных не богаты приложениями, преимуществами которых можно воспользоваться прямо с ходу, но некоторые всё же существуют. Например, можно настроить OpenOffice.org Base на взаимодействие с вашим новым сервером для всех её баз данных – вы получите ту же самую дружественную оболочку, но надёжно подкрепленную прекрасно масштабируемым MySQL.
Если душа просит чего-то более «продвинутого», то как насчет возможности доступа к вашим данным из любой точки? Лучше всего вооружиться программой типа PhpMyAdmin: это основанный на PHP инструмент администрирования MySQL-сервера, позволяющий вам создавать данные и управлять ими через Интернет. Будьте осторожны с правами доступа; лучше всего установить отдельную копию phpMyAdmin для каждого пользователя, чтобы быть уверенным в надлежащем разграничении прав.
Многие скрипты используют MySQL для хранения своих данных (wiki и дневники, пожалуй, наиболее яркие представители), но, бесспорно, лучшее применение MySQL – это разработка собственных PHP-скриптов на базе MySQL.
Межсетевые экраны
Запуская собственный сервер, вы вынуждены «продырявить» свой брандмауэр (firewall), чтобы ваш интернет-сервис мог работать, потому что брандмауэр зачастую блокирует все входящие соединения – беспрепятственно проходят только исходящие.
Чтобы открыть порт на вашем брандмауэре для какого-либо сервера, например, Apache (HTTP), вам нужно сначала узнать, какой порт и протокол этот сервер использует. Эту информацию обычно можно найти в документации сервера; пригодится также наша небольшая таблица.
И SUSE, и Mandriva используют собственные инструменты настройки брандмауэра, доступные из панели управления. В SUSE, например, откройте Yast, выберите «Security and Users» и щелкните на кнопку «Firewall». Появится новое окно, и для открытия порта просто щелкните на вкладку «Allowed Services» слева. SUSE поставляется с несколькими предварительно настроенными сервисами, которые можно просто выбрать из выпадающего меню «Services to Allow», либо добавить ваш собственный, щёлкнув по кнопке «Advanced». Если вы предпочитаете действовать самостоятельно, то Guarddog (http://www.simonzone.com/software/guarddog) – прекрасная графическая оболочка для настройки вашего брандмауэра.
Сервис | Протокол | Порт |
---|---|---|
SSH | TCP | 22 |
HTTP | TCP | 80 |
Squid | UDP, TCP | 3128, 3130 |
Общайтесь при помощи Jabber
Соберите друзей поболтать через ваш личный сервер обмена мгновенными сообщениями.
Чтобы держать свои сообщения в секрете
Чтобы сохранять все важные «диалоги»
Чтобы запустить собственную страничку сообщества
Чтобы избавиться от рекламы
Если не считать голосовое общение, то мгновенные сообщения (IM) лучше всего подходят для проведения групповых дискуссий. Они заслуженно популярны, и существует ряд конкурирующих протоколов, серверов и клиентов для IM. Поскольку мы используем Linux, мы можем выбрать лучшее – по нашему мнению, это Jabber.
Jabber – не название какой-то программы как таковой. Это обозначение протокола, поддерживающего взаимодействие клиентов и серверов для создания чата. Вообще-то протокол называется не Jabber, более точное его наименование – XMPP, он поддерживает открытый стандарт для сообщений. Однако довольно путаницы, перейдем к делу. Протоколами Jabber пользуются несколько серверов. Некоторые из них коммерческие, хватает и открытых; одни написаны на Java, другие – на С, и т.д. Со списком различных вариантов можно ознакомиться на сайте JFSF [1]. Мы выбрали Wildfire, сервер от Jive Software, по трём причинам – этот сервер:
- свободное ПО, распространяемое подлицензией GPL;
- основан на Java и является кросс-платформным (Mac/Windows/Unix);
- способен работать как автономно, так и в составе сервера приложений.
Есть и четвёртая причина: его очень просто настраивать и использовать! Чтобы раздобыть последнюю версию исходных кодов и RPM-пакеты, зайдите на http://www.jivesoftware.org/wildfire/ или возьмите версию с нашего диска, которую будем использовать мы. Установка RPM-пакета совершенно стандартная, так что у вас все получится (сервер будет поставлен в /opt/wildfire). Tar-архив содержит статически собранную версию, которую вы можете распаковать и скопировать в /opt или другое место. запустите сервер:
/opt/wildfire/bin/wildfire
Дальнейшую настройку может выполнить сам сервер. Наберите в адресной строке адреса вашего браузера http://localhost:9090 (или укажите имя сервера, если вы выполняете настройку удалённо). Углубившись в опции (для простоты выберите встроенную базу данных – Embedded Database), вы за несколько шагов достигнете главной панели администрирования. Здесь доступна уйма опций, но в первую очередь надо бы завести нескольких пользователей и протестировать систему. Ваш сервер – частный и закрытый, поэтому вы, вероятно, исключите регистрацию извне и будете создавать нужных пользователей самостоятельно.
Чтобы сервис Wildfire запускался при старте системы, в каталоге /bin/extra предсмотрен скрипт wildfired. Для его запуска на вашей системе, отредактируйте строку, начинающуюся с export WILDFILRE_HOME=, чтобы она указывала на каталог установки, затем скопируйте его в /etc/init.d и сделайте ссылку из каталога соответствующего уровня исполнения (runlevel). точный способ сделать это зависит от вашего дистрибутива.
Вот и всё. Пользователи смогут самостоятельно подключаться к вашему серверу и беседовать, пока фирма не обанкротится. Кстати говоря, в корпоративной сети вы можете подсоединить Wildfire к LDAP – учётные записи для всего персонала будут получены автоматически! (См. Http://www.jivesoftware.org/builds/wildfire/docs/latest/documentation/ldap-guide.html).
Выбирайте клиент
Существует множество клиентов, способных работать с Jabber-серверами – поскольку это открытый стандарт, их достаточно легко подключить. Вот несколько популярных совместимых клиентов для основных операционных систем:
- Linux: Gaim, Kopete, Gush, Gabber;
- Mac OS X: iCat, Gush, Gabber;
- Windows: Miranda IM, Trillian Pro, IRJabber,Gush;
Не забывайте, что вам нужно создавать учётные записи на сервере или разрешить клиентам регистрироваться самостоятельно. Приятного общения!
Настройки SYSCTL
Ядра многих дистрибутивов настроены на баланс между серверным и «настольным» применением. Но если вы запускаете силь но загруженный сервер, то можно подстроить некоторые опции ядра для получения прироста скорости при помощи утилиты sysctl, которая изменяет параметры ядра «на лету». (Вы можете также сохранить настройки в /etc/sysctl.conf). Введите sysctl -a, чтобы увидеть все параметры. Ряд опций могут увеличить производительность сервера, их следует вводить от имени root:
sysctl -w kernel.threads-max=65526 sysctl -w fs.file-max=8192
Эти команды устанавливают число активных потоков, которое ядро может обслуживать, и число файлов, которые можно открыть одновременно. Увеличьте эти значения, если в логфайлах появятся сообщения о нехватке данных ресурсов.
Следующая опция увеличивает объем памяти, выделяемой для сетевых буферов отправки – если нужно обслуживать большие файлы, то это значительно ускорит машинуработу (web,
FTP, Samba и т.д.):
sysctl -w net.core.wmem_ max=1048576
Далее, установите число соединений, которые сохраняются в ожидании подтверждения клиентом. Обычно это число – 1024; увеличьте его, если ваш сервер часто оказывается перегружен соединениями:
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
Последняя опция определяет, как страницы памяти ядра сохраняются на диске (в виртуальной памяти), когда объем ОЗУ недостаточен. Обычно этот параметр устанавливается в значение 3. Более высокое значение увеличит время отклика настольных приложений (нехорошо!), но может быть полезно на сервере, где общая пропускная способность важнее, чем мгновенный отклик:
sysctl -w vm/page-cluster=8
Запустите собственную IRC-сеть
Откройте чат-салон на IrC-сервере – можно обсуждать открытое ПО, проекты Linux, судейство в турине
Internet Relay Chat (IRC) – предшественник всемирной паутины. В далёком 1988-м году программист Яаркко Ойкаринен (Jarkko Oikarinen) создал альтернативу общению через доски объявлений, разработав IRC – простой и быстрый протокол, основанный на обычном тексте, который позволил пользователям во всём мире подключаться к сети серверов и беседовать в режиме реального времени. Благодаря простоте протокола IRC, даже программисты-любители могли разработать собственные клиенты – так что довольно быстро система уже насчитывала тысячи пользователей.
Сегодня рынок захвачен преимущественно чат-салонами, основанными на web (типа Yahoo Chat), но IRC всё ещё очень популярен среди опытных пользователей. Основные IRC-сети, EFnet и Freenode, размещают тысячи «каналов» (аналог чатсалона) по темам от разработок на Perl до воскрешения мёртвых. IRC выработал свои собственные обычаи и нормы этикета, и пользователи, которые хамят и высказывают неуважение к правилам, рискуют нарваться на довольно жёсткие санкции. Это диковатый и эксцентричный мир – но только не в вопросах функционирования, и один из лучших способов поддерживать связь с людьми.
Зачем запускать IRCD?
Демон IRC, известный также как IRC-сервер, позволяет пользователям подключаться к вашей машине через своих клиентов и взаимодействовать с вами как с хостом. Вы можете запустить автономный IRC-сервер для внутреннего пользования или присоединиться к большой сети, что-бы распределить загрузку – если у вас, к примеру, есть право на присоединение вашего сервера к Freenode, то вы сможете обслуживать пользователей, которые будут общаться с пользователями других Freenode-серверов. так… а свой-то зачем настраивать? По нескольким причинам: вы можете работать над программным проектом и пожелать работать с собственными каналами, чтоб самому устанавливать правила (вместо создания канала в чужой сети). Или, возможно, вы хотите общаться с друзьями «частным» образом, подальше от различных «асек» и основанных на web чат-салонов. а может быть, вы просто хотите поддержать существующую IRC-сеть, добавив к ней ещё одну лошадиную (в смысле, серверную) силу.
Многие нынешние IRC-серверы являются переработкой исходного кода IRCD, с набором функций, добавленных поверх него. Некоторые были созданы с нуля. Ниже мы приводим три шага, показывающие, как собрать, настроить и запустить IRCD-Hybrid, один из наиболее гибких серверов IRC, широко использующийся в сети Efnet.
Когда ваш сервер будет запущен, вашим пользователям понадобятся IRC-клиенты, чтобы подключиться к нему. Пользователям KDE следует попробовать прекрасный Konversation, в то время как фанаты Gnome/GTK могут выбрать не менее удачный X-Chat. Для работы в командной строке хорошим выбором будут Irssi и BitchX, и есть даже web-оболочка в виде CGI:IRC. Полный список можно найти на http://www.freshmeat.net/.
Шаг 1 Завести IRCD-HYBRID
Вы можете найти его на нашем диске в разделе Server или на сайте http://www.ircd-hybrid.com. распакуйте ircd-hybrid-7.2.0.tgz, перейдите в созданный каталог и введите ./configure. Здесь нет скрытых зависимостей, и опции, выставленные по умолчанию, превосходны. Но если вы пожелаете изменить максимальную длину имени пользователя или наименования канала, это можно сделать, используя ключи --with-nicklen и --with-topiclen соответственно в команде ./configure. Введите make и make install (как root) для установки в /usr/local/ircd по умолчанию.
Шаг 2 Настроить
Перейдите в /usr/local/ircd/etc/ и скопируйте файл example.conf под именем ircd.conf. теперь откройте ircd.conf в вашем любимом редакторе, и познакомьтесь поближе с его форматом. Задайте имя вашего сервера и его SID (уникальный идентификатор, например, «8XZ») в секции «serverinfo» в самом верху. Вам нужно также найти и удалить строку havent_read_conf, которая предотвращает запуск сервера с настройками по умолчанию – это будет на строке 1073. Для начала вполне достаточно; позже вы сможете почитать описания других опций.
Шаг 3 Пуск!
Введите команду /usr/local/ircd/bin/ircd -logfile ~/ircd.log, она запустит сервер (и будет записывать информацию о любых проблемах в файл ircd.log вашего домашнего каталога). теперь вы можете подключиться к вашей машине локально (по адресу 127.0.0.1) с помощью IRC-клиента, создать каналы и установить права доступа. затем сообщайте друзьям ваш IP-адрес или доменное имя, и они смогут подключаться через Интернет (убедитесь, что порт 6667 не заблокирован брандмауэром). Если вы хотите присоединиться к другой IRC-сети, свяжитесь с её администраторами – как правило, вы можете найти их адреса электронной почты на сайте сети или проекта. Наконец, более полную информацию по использованию IRC можно получить на http://www.irchelp.org.
Нужна поддержка?
Наша прогулка по IrC была последней в представленном материале. Мы надеемся, что вы попробуете хотя бы одну из предложенных идей. Прыжок на первую ступеньку администрирования сервера совершить непросто, так что если вы сражаетесь с пошаговыми инструкциями или нуждаетесь в совете, что дальше, мы рекомендуем вам посетить http://unixforum.org. Даже если вы просто хотите пожаловаться, что ваш любимый сервер обделили вниманием, мы все равно ждем вашего отклика!