Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Linux, Сеть и все, все, все...


В.Лопатин

Писано для журнала "Хакер-Спец". Лексика оригинала сохранена.


Ну что, драгоценный мой kool xaцкер, юзаешь ты себе Linux, а толку никакого... Скучно сидеть без Инета. Теперь пришла пора исправить это досадный недостаток. Будем выходить в Сеть.

Я понятия не имею есть ли у тебя в доме кампусная сеть. Будем считать, что у тебя есть компьютер с установленным Linux, модем и телефонная линия. Для выхода в Сеть тебе придется настроить модемное соединение. Куда пошел? Сядь и читай! Придется потрудить мозжечок. Чтоб ты был в курсе: в Linux для любое сетевое соединение реализуется через шнягу с названием сетевой интерфейс. Именно интерфейсу (а не компьютеру. В компьютере может быть несколько сетевых интерфейсов.) присваивается сетевой адрес. Будет считать, что у тебя (как и у меня) одна телефонная линия, соответственно один сетевой интерфейс. Называется он /dev/ppp0 (в каталог /dev даже не смотри, его там все равно нет, он появится автоматически при установлении соединения).

За совершение звонка и установления связи (это называется “поднятием интерфейса”) отвечает программа-демон pppd. Обычно она идет в составе практичкески любого дистрибутива. Но его можно и скачать отдельно с сайта www.samba.org/ppp/. Настройки демона хранятся в файле /etc/ppp/options, там же находятся сценарии для “поднятия” и “опускания” интерфейса. Подробности можно прочитать в PPP-Howto (на русском взять здесь www.linux.ru.net/index.php?module=library&action=show&docid=18&part=288), а также в документации, идущей с демонюгой.

Почти любой дистрибутив при установке спросит тебя, устанавливать ли модемное соединение. И, соответственно, сделает необходимы настройки. Но вероятно, что тебе придется скачивать pppd самому и самому его собирать. Собрать нетрудно. Распаковал куда-нибудь , а затем парочка заклятий (configure; make; make install от пользователя root). Важно потом всё правильно настроить.

Дистрибутивы Lnux используюи два разных стиля инициализации BSD (Slackware, Gentoo) и SysV (все rpm-based дистрибутивы). Это означает, что настройки pppd хранятся по-разному.

В моем дистрибутиве все настройки демона pppd хранятся в двух местах. Первое из них -- каталог /etc/ppp. Там тебя поджидают несколько важных файлов. Файл /etc/ppp/options хранит в себе настройки демона. Их довольно много, и тебе придется почитать man pppd для разъяснений. Там хоть и по-английски, но довольно доходчиво всё расписано. Второй важный файл /etc/ppp/pap-secrets, в нем хранится твой логин и пароль на вход к прову. Если у прова используется chap-идентификация, то у тебя есть на этот случай /etc/ppp/chap-secrets (мой файл chap-secrets выглядит аналогично). Мой pap-secrets выглядит примерно так:

#Secrets for authentication using PAP
#client    server     secret                  IP addresses
"vasja"    *          "parol_vasja"

Второе место хранения настроек демона pppd более шоколадно по своим возможностям. Каталог /etc/sysconfig/network-scripts таит в себе файл ifcfg-ppp0, который аналогично /etc/ppp/options хранит настройки демона. Файл chat-ppp0 содержит набор команд для модема и реакцию на них. У меня он выглядит примерно так:

'ABORT' 'BUSY'
'ABORT' 'ERROR'
'ABORT' 'NO CARRIER'
'ABORT' 'NO DIALTONE'
'ABORT' 'Invalid Login'
'ABORT' 'Login incorrect'
'' 'ATZ'
'OK' 'ATDT277711'
'CONNECT' ''
'TIMEOUT' '5'
'~--' ''

С различными типами инициализации совсем труба. Разнообразие таит в себе несовместимость в настройках. Стиль SysV требует, чтобы все настройки сетевых интерфейсов хранились в скрптах в каталоге /etc/sysconfig/network-scripts. То есть /etc/ppp/options получается нафиг не нужным. Хотя в него можно прописать что-нить дополнительное. Это нужно потому, что любые сетевые интерфейсы поднимаются одинаково. Для этого используется общий сценарий /etc/rc.d/init.d/network. В тоже вреия стиль BSD позволяет хранить настройки pppd в его родной каталоге /etc/ppp. И вся ответственность за правильность поднятия интерфейса целиком ложися на администратора системы. В любом случае, чтение PPP-Howto бесполезным не будет.

После того, как всё, с твоей точки зрения будет настроена интерфейс можно поднять командой ifup ppp0. Выполнять ее нужно от имени администратора (пользователю она не видна). Если ты не лоханулся, то модем весело заморгает лампочками, протрещит нечто невразумительное и ты услышишь победный свист коннекта.

А вдруг ты подключен к нескольким провайдерам? Да... задница. Но ничего... разработчики pppd не на настолько тупы, чтобы так лажаться. Они предусмотрели и этот изврат. На каждого прова можно прописать свой файл в каталоге /etc/ppp/peers. В файле (обзовём его /etc/ppp/peers/isp )пишется малюсенький конфиг, например такой:

ttyS0       # модем присоединён к /dev/ttyS0
38400       # запустить последовательный порт на скорости 38400 бит/с
crtscts     # использовать аппаратный контроль преедачи
noauth      # не просить прова аутентифицироваться самому, это не нужно
defaultroute # использовать прова как марштур по умолчанию
#запускаем сценарий соединения /etc/ppp/chat-isp
connect '/usr/sbin/chat -v -f /etc/ppp/chat-isp'

Файл /etc/ppp/chat-isp содержит сценарий для программы chat, которая собственно, и занимается дозвоном. Его содержание примерно такое:

ABORT "NO CARRIER"
ABORT "NO DIALTONE"
ABORT "ERROR"
ABORT "NO ANSWER"
ABORT "BUSY"
ABORT "Username/Password Incorrect"
"" "at"
OK "atz"
OK "atdt2479381"
"name:" "^Uvasja"
"word:" "\qparol_vasja"
"annex" "ppp"
"Switching to PPP-ppp-Switching to PPP"

Ну а далее всё совсем просто. Соединение устанавливаем командой /usr/sbin/pppd call isp. "Вот и всё, Осёл. Вот. И. Всё." (с) Шрек. Для остальных провайдеров настроишь сам по примеру.

Чтобы завершить соединение тебе нужно послать демону команду завершения соединения. Во всех unix-системах для этого использутся команда kill. Демон pppd можно убить фразой kill `cat /var/run/ppp0.pid`. Естественно, что указанные в примерах пути к файлам и каталогам тебе придётся исправить на те, которые в твоей системе.

Тебе крупно повезло, если ты работаешь не только в консоли, но и в графическом режиме. В оконных менеджерах KDE и Gnome есть очень удобные утилиты kppp и gppp соответственно. На рисунке ты видишь работу kppp. Даже тупому идиоту будет понятно, что она позволяет очень удобно и быстро настроить модемное соединение. Не чуть не сложнее, чем в Windows. Наоборот даже круче и удобнее. В kppp есть возможность посмотреть график загрузки сетевого интерфейса, а также подсчитать во сколько рубликов тебе обошлась работа в сети. Разобраться не просто, а очень просто.

Если тебе покажется сложным настраивать руками pppd, посмотри на наличие программы eznet (www.hwaci.com/sw/eznet/). Также интересна программа wvdial (ищи в Сети). Последняя консольная утилита рулезна тем, что ей можно указать не один телефон провайдера, а несколько, и она сама может дозваниваться до прова, если соединение прервалось, перебирать номера телефонов, да и еще дофига всякой работы. И вообще, включи свой чайник на форсированный режим, пройдись вот сюда: http://freshmeat.net/search/?q=pppd&section=projects&x=0&y=0 и ты увидишь офигенно много ссылок на различные программы и утилиты, связанные с ppp. Там есть и текстовые инструменты для настройки pppd, и графические, и программы мониторинга работы, и программы сбора статистики. В общем, развлекайся.

Ок. Будем считать, что соединение ты настроил и до прова дозвониться сумел. Теперь пришло время пошастать по просторам Сети. Разумеется, тебе нужны нормальные программы для этого дела.

Первое, что сразу приходит на ум – броузер Mozilla. Растет сие изделие на сайте . На сайте есть готовые собранные пакеты для различных операционных систем. Тебе останется только скачать, распаковать архив, и от root запустить инсталлер. А дальше останется только ответить на несколько вопросов. На рисунке видно, что настройка программы не составляет никакого труда. Хочу заметить, что я пользуюсь Mozilla, которая собрана командой ALT Linux Team (www.altlinux.ru), а посему русский интерфейс и все такое прочее. Некоторые дистрибутивы включают Mozilla в комплект. Если ты счастливый обладатель пакетного дистрибутива (Red Hat, Mandrake, SuSE), то скорее всего тебе просто нужно на дисках найти rpm-пакет с x-chat и установить его командой rpm -ivh имя_пакета от имени администратора системы (например, rpm -ivh mozilla-1.2.1-alt6.rpm). А как не будет хватать чего-нить? Фигня, по крайней мере rpm тебе скажет чего именно не хватает и это обязательно найдется надистрибутивных компакт-дисках (или в Инете). Еще больше повезло обладателям дистрибутивов Debian и ALT Linux (Junior 1.х, 2.х или Master 2.х). У них есть волшебное слово apt-get install mozilla (так же из-под root). После этого заклинания программа установится легко и непринужденно. Я являюсь обладателем ALT Linux Master 2.2. Поздравив себя с этим, я установил программу еще при установке системы. Такая вот армейская драма.

Если ты экстремал и всё любишь собирать сам, то сливай исходники Mozilla. Для компиляции, достаточно скачать с сайта себе архив с исходными текстами программы, распаковать, поплясать с бубном и попробовать скомпилировать (стандартные шаманские заклинания configure; make; make install, причем последнее шаманство надо проделывать от root). Но сразу предупреждаю, что с компиляцией тебя может ожидать полный облом. Уж очень сложная Mozilla. Возможно, что в твоей системе не будет хватать нескольких библиотек, боюсь, что тебе всё же придется напрячь свой мозг, найти и скачать необходимые компоненты для сборки программы.

Mozilla умеет использовать в своей работе модули сторонних производителей. Ещё их называют plug-in'ами. Есть модули для отображения Java, есть модули для отображения Macromedia Flash роликов, есть модули для воспроизведения звука (RealAudio или какая-нить еще прибамбасина), можно заставить Mozilla показывать киношки и делать всякую иную ерунду. Если найдешь соответствующий модуль, то она тебе и носки постирает. Установить модуль не сложно. При попытко воспроизвести неизвестный тип web-контекста Mozilla попытается его распознать. А потом в случае успеха предложит тебе установить модуль. Тебе останется лишь ответить типа "да" и нажать пимпочку. В зависимости от сборки модуль кладется либо в домашний калог пользователся, либо в каталог, куда установлена Mozilla. Поэтому лучше всего операцию по установке нового модуля производить запустив броузер от пользователя root.

На основе Mozilla (точнее на основе движка Gecko) сделано несколько броузеров. Один из них – Phoenix (www.mozilla.org/projects/phoenix). Он гораздо меньше размером Mozilla, но шустрее работает, хоть и немного ограничен в возможностях. На сайте валяются только бинари, исходники доступны разработчикам.

Для пользователей Gnome, есть Galeon (galeon.sourceforge.net). В его основе так же лежит Mozilla, но броузер работает очень быстро и без напрягов.

Пользователи KDE тоже не обижены. У них есть Konqueror – броузер и файловый менеджер в одном флаконе. Его внешний вид на рисунке. Выглядит вполне прилично. Скорость работы тоже очень и очень не плоха. Входит в поставку всех дистрибутивов, в составе которых есть KDE.

Все перечисленные программы просмотра web-страниц умеют работать с одинаковым набором plug-in'ов. Konqueror кроме того умеет использовать закладки (bookmarks) от Mozilla (Galeon, Phoenix само собой имеют одинаковый формат закладок).

Ага... Чуть не забыл. Для Linux есть также реализация довольно забавного броузера Opera. И это не шутка. Всё богатство закопано на www.operasoftware.com. Броузер коммерческий, исходников тебе никто не даст, придётся довольствоваться тем. Что там у них есть. Работает он неплохо, одна мелкая неприятность. Во время работы придется пялиться на рекламный баннер. Чтобы его отключить Oper'у придется купить.

Тык-с... С броузерами ты справился. Тебе для нормальной работы потребуется езе как минимум одна вешь. Не догадался? Тупица. Качалка файлов тебе нужна нормальная. С возможностью докачки файлов.

Консольных качалок есть несколько. Самая известная среди них называется wget. Родом она с сайта wget.sunsite.dk. Скачать архив с исходным текстом можно и отсюда: ftp://ftp.gnu.org/pub/gnu/wget/wget-1.8.2.tar.gz (возможно, что есть версия и поновее). Процедура компиляции и установки тебе наверное уже известна. Всё как обычно: configure; make; make install от пользователя root. Собранный и готовый к употреблению пакет входить во все уважающие себя дистрибутивы. Так что париться со сборкой тебе вероятнее всего не придется.

Использовать wget проще некуда. Команда wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z соединится с сайтом. Попросит там файл ls-IR.Zи если он там есть wget его оттедова заберет. Опца -c прикажет wget'у запомнить состояние при обрыве соединения с Сетью. Как только оно восстановится, wget продолжит закачку.

Данная программа позволяет скачивать не только файлы поодиночке, но также группы файлов, или целые сайты сразу. В man wget об этом популярно рассказано. Так что, вперёд юноша.

Любителей графических интерфейсов ожидает приятный сюрприз в виде программы X-Downloader с сайта www.krasu.ru/soft/chuchelo. Она жутко похожа на знаменитый ReGet под форточки, но она в несколько раз лучше по своим возможностям. Рекомендую.

Здесь я постараюсь привести полный список свойств которые доступны в данной программе.

  • закачка по протоколам ftp и http
  • поддержка ftp и http прокси
  • рекурсивная закачка по ftp
  • рекурсивная закачка по http
  • изменение ссылок в HTML файлах для offline просмотра
  • поддержка "маски" в закачке через ftp
  • возможность ограничивания глубины рекурсии
  • возможность "откладывать" закачку файла на заданное время
  • встроенный планировщик позволяющий планировать различные действия
  • поддержка продолжения закачки
  • автоматическое переподключение к серверу после потери соединения
  • возможность ограничения пользователем максимальной скорости закачки, как для всех закачек, так и для отдельных
  • возможность ограничивать количество подключений к заданному серверу
  • ведение логов для каждой закачки
  • поддержка "Drag and Drop", например из Netscape
  • возможность добавлять новую закачку через командную строку
  • слежение за буфером обменена
  • ведение главного лога, который можно записывать в файл
  • автоматическое сохранение всех настроек и интерфейса
  • возможность конфигурирования видимых столбцов в очереди закачек
  • возможность конфигуртровать панель кнопок
  • локализация (перевод) на 20 языков
  • обширные возможности по конфигурации
  • возможность закачивать один файл в несколько потоков (Massdownload)
  • запуск без интерфейса в коммандной строке

Вот такая фигня. Тебе всё отсюда понятно? Любой современный дистрибутив непременно содержит в своём составе данную программу. Собрать ее также не трудно. Автор программы русский и документация на русском языке также доступна.

Для особо ленивых могу сказать, что тяжёлую работу по скачиванию файлов из сети можно немного автоматизировать. Не забывай, что в твоей системе есть такая волшебная программа как cron. Что? Ты её не установил? Ты кретин. Бегом устанавливай. Даю халявный рецепт. Допустим тебе надо каждые сутки в 3 часа ночи соединиться с сетью, и выкачивать супер-нужный файл. Ты в это вреся обычно храпишь как суслик. И чё делать? А вот что. Для начала пишем коротенький скриптик на shell (пример основан на настройках pppd, о которых я рассказывал в начале):

#!/bin/bash
pppd call isp
wget -c -P /var/tmp ftp://ftp.supersite.com/pub/super-puper/file
kill 'cat /var/run/ppp0.pid'
Скрипт обзовём get-flile.sh и запишем в каталог /var/tmp. Скорее всего, эту чушь ты будешь делать из-под пользователя root. Хотя последние версии pppd умеют разрешать устанавливать соединение и обычным пользователям. Но в каждом конкретном случае всё зависит от системы. Далее тебе предстоит настроить расписание для cron'a. crontab -u root -e после чего запустится текстовый редактор (по умолчанию запустится vi), в котором надо нацарапать примерно следующее:
0 3 * * * sh var/tmp/get-file.sh
и сохранить. Crontab установит расписание и соглано ему каждые сутки в три часа ночи будет автоматически запускаться pppd, wget будет скачивать файл и сохранять его в каталоге /var/tmp, а потом соединение будет завершаться. Такие вот дела. Ну и конечно, ты не будешь конченным придурком и не будешь выключать комп в это время.

Ну вот и всё! Надеюсь тебе вся эта пурга окажется полезной. Дерзай.