Как подключить Linux к Internet

Валерий Коржов Журнал "Мир ПК", #06/2000

Если вы установили на свой компьютер операционную систему Linux, то рано или поздно у вас возникнет желание использовать ее для подключения к Internet. Давайте попробуем вместе проделать это.

Все довольно просто, поскольку в последних дистрибутивах Linux предусмотрена возможность централизованной настройки различных компонент операционной системы, которые отвечают за подключение к Сети. Вам не нужно будет изучать форматы различных файлов и конфигурировать каждый компонент системы в отдельности. Централизованная настройка появилась в дистрибутиве Linux Red Hat 6.0, о котором и пойдет речь в дальнейшем.

Разработчики Red Hat 6.0 включили в новую версию дистрибутива единый конфигуратор linuxconf. Он работает как в текстовом, так и в графическом режимах, что позволит вам применять его практически в любой конфигурации системы. Создатели linuxconf стремились сделать настройку компонент Linux более понятной и удобной, и в большинстве случаев это им удалось.

Ядро Linux

За подключение к Internet в любой разновидности операционной системы UNIX отвечает несколько компонент: ядро ОС, которое должно поддерживать стек протоколов TCP/IP; программа реализации протокола физического уровня (для телефонного соединения это протоколы PPP или SLIP); подсистема настройки модема - chat-сценарий либо AT-команды (прямое общение с модемом). Кроме того, нужно настроить DNS для разрешения использования имен удаленных серверов и программу обслуживания стека протоколов TCP/IP inetd. Впрочем, вопросы настройки DNS и inetd выходят за рамки настоящей статьи.

Раньше, чтобы ядро ОС Linux поддерживало протокол TCP/IP, его требовалось перекомпилировать, но в последней версии дистрибутива Red Hat эта проблема была решена с помощью модулей, которые загружаются в ядро. Поддержка загружаемых модулей существовала и прежде, однако в новом дистрибутиве она используется наиболее активно, что позволяет изменять конфигурацию ядра без перезагрузки компьютера и остановки вычислений. В дистрибутиве Red Hat 6.0 поставляется ядро, откомпилированное с поддержкой всех возможных модулей, в том числе и TCP/IP, поэтому вполне достаточно загрузить соответствующий модуль командой insmod. Причем саму команду вызывать не стоит - для загрузки в ядро модуля поддержки TCP/IP лучше задействовать файл конфигурации сети network в каталоге /etc/sysconfig/. Для поддержки сетевых протоколов в нем должна быть следующая строка:

NETWORKING=yes.

Если такой строки нет, то нужно ее добавить или изменить.

Следует отметить, что файлы из каталога /etc/sysconfig просматривают сценарии начальной загрузки системы, которые располагаются в каталоге /etc/rc.d. Они написаны на языке оболочки UNIX, и поэтому можно понять, как именно и в каком порядке происходит загрузка Linux. Чтобы ОС соответствовала указанной в файле конфигурации, необходимо либо ее перезагрузить, либо перезапустить соответствующий сценарий (это можно сделать с помощью сценариев из каталогов /etc/rc.d/init.d/, вызвав их с ключом restart). Сценарий для работы с сетью обычно называется *network (вместо * может стоять код, указывающий загрузчику, когда этот сценарий нужно запускать). После того как будет установлена поддержка TCP/IP в ядре, можно переходить к настройке самого телефонного соединения.

Работа с linuxconf

Программная оболочка linuxconf сделана специально для того, чтобы пользователи могли легко настроить ОС соответственно своим потребностям. Фактически это централизованный редактор различных конфигурационных файлов с разъяснениями значений для каждого поля. В случае телефонного соединения важно правильно настроить программу pppd, которая организует передачу данных по телефонной линии, и написать сценарий для программы chat, инициирующей телефонный звонок и вашу авторизацию у провайдера. При настройке телефонного соединения linuxconf создает для него chat-сценарий и конфигурирует программу реализации протокола PPP, причем linuxconf работает как с графической оболочкой, так и в текстовом режиме.

Рис. 1. Первоначальный вид окна конфигуратора

Чтобы приступить к созданию конфигурационных файлов для соединения с Internet, нужно запустить конфигуратор командой linuxconf или выбрать соответствующий пункт меню в графической оболочке. Внешний вид окна linuxconf после запуска показан на рис. 1. Для конфигурирования модемного подключения необходимо выбрать раздел Config.Networking.Client Tasks.PPP/SLIP/PLIP. После этого в правой части окна приложения открывается список существующих конфигураций для протоколов PPP, SLIP или PLIP. Поскольку протокол PPP наиболее популярен среди провайдеров, то именно его настройку мы и будем рассматривать в дальнейшем, хотя другие протоколы телефонного соединения настраиваются аналогично.

При первом запуске конфигуратора список соединений пуст. Чтобы создать новую конфигурацию соединения, следует нажать кнопку Add, после чего откроется закладка с перечнем типов протокола. Выбираем протокол PPP и нажимаем на кнопку Accept. Возникает следующая закладка, в которой нужно указать телефон провайдера, свое регистрационное имя и пароль. Затем нажимаем Accept и опять возвращаемся к первоначальному списку конфигураций, но в нем уже появился новый пункт, соответствующий только что созданному соединению.

Рис. 2. Закладка для конфигурирования модема

Теперь, при правильной настройке и работе оборудования, уже можно попробовать подключиться к Internet. Для этого достаточно дважды щелкнуть мышкой на соответствующем пункте в списке соединений. Откроется закладка, содержащая всю информацию о соединении: настройки оборудования (закладка Hardware, рис. 2), конфигурацию chat-сценария (закладка Communication, рис. 3) и различные дополнительные сетевые опции (закладки Networking и PAP). В этой "общей" закладке можно попытаться установить соединение с помощью кнопки Connect. Работу сгенерированных сценариев можно проверить и из командной строки, перейдя в каталог /etc/ sysconfig/network-scripts и набрав команду ./ifup ifcfg-"имя соединения".

Подключение

На рис. 2 мы видим параметры запуска программы pppd, которая реализует протокол физического уровня при установлении связи по телефонной линии. Ее основными параметрами являются имя драйвера для модема, скорость соединения между модемом и компьютером и некоторые другие. В Linux драйверы устройств представлены в виде файлов со специальными атрибутами, которые находятся, как правило, в каталоге /dev. Причем файл /dev/modem обычно является ссылкой на конкретный порт компьютера, к которому подключен модем (например, /dev/ttyS1, т. е. первый COM-порт). Если модем будет подключен к другому порту, можно просто изменить эту ссылку, не меняя остальные настройки.

Рис. 3. Закладка для конфигурирования соединения

Вся информация, которая содержится на закладке Hardware, записывается в файл ifcfg-"имя соединения", расположенный в каталоге /etc/sysconfig/network-scripts. Формат его очень прост - имя и значение параметра отделяются знаком =. Сценарий организации соединения анализирует этот файл и конфигурирует pppd в соответствии со значениями параметров. Опция defaultroute для программы pppd говорит о том, что маршрутизация соединения возлагается на сервер провайдера, поэтому именно такое значение и должно быть вписано в поле PPP option.

Закладка Communication содержит информацию по chat-сценарию. Программа chat - это стандартная UNIX-программа, которая позволяет автоматизировать процесс набора номера провайдера и вашу авторизацию у него. Впрочем, она универсальна, и с ее помощью можно выполнять и другие действия. Chat следит за потоком ввода и сравнивает его содержимое со своей базой правил. Правила отображают связку ключ - значение, и как только из потока ввода поступает последовательность символов, обозначающая один из ключей, программа посылает в поток вывода соответствующее ему значение. Таким образом, chat-сценарий представляет собой набор ключей с их значениями.

Общение с модемом начинается с тестовой команды atz (в верхнем поле закладки), на которую он должен ответить OK. Программа chat, получив эти два символа, посылает в ответ команду для набора номера atpd (at - команда модема, p - импульсный режим набора номера, а d - указание набрать номер, следующий за командой). Параметры этой команды находятся во втором и третьем полях закладки. Затем модем набирает номер и устанавливает соединение с провайдером.

Как только устанавливается связь, сервер поставщика услуг Internet запрашивает имя пользователя. Обычно в приглашении "набрать имя" содержится строка login:. Именно этого значения и ждет программа chat, которая выдает в ответ имя пользователя. Аналогично передается и пароль. Сценарий можно продолжить и далее - все зависит от того, что запрашивает сервер провайдера. Параметр timeout не является ключом, а используется самой программой chat для определения времени ожидания ответов модема и сервера провайдера.

Когда сервер провайдера перейдет в режим ppp, chat прекратит свою работу и передаст контроль над соединением программе pppd, которая и обеспечит двунаправленную связь. При этом linuxconf сгенерирует chat-сценарий, необходимый для установления модемного соединения в каталог /etc/sysconfig/network-scripts/, и сам файл, который получит название chat-"имя соединения". Его можно использовать и без посредничества linuxconf и сценария /etc/sysconfig/network-scripts/ifup, который обычно задействуется конфигуратором для установления соединения организации связи. Это можно сделать, например, с помощью команды:

# /usr/sbin/pppd /dev/modem
38400 defaultroute connect
"/usr/sbin/chat -f /etc/ sysconfig/network-scripts/
chat-ppp0 > /dev/null &

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

# chmod 600 /etc/sysconfig/
network-scripts/chat-ppp0

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

Другие способы установления соединения

В ранних версиях дистрибутивов Linux chat-сценарии приходилось писать самостоятельно. В принципе это не очень сложно - нужно только познакомиться с форматом соответствующего файла (команда man chat). Впрочем, можно было обойтись и вообще без утилиты chat, набирая команды вручную с помощью программы общения с модемом minicom или аналогичной.

Этот способ доступен и сейчас, поскольку в состав Red Hat включен minicom. Им можно воспользоваться в том случае, когда что-то не получается, а проверка работы системы вручную, как правило, позволяет найти ошибки в настройке. Следует добавить, что кроме linuxconf можно применять и другие программы для организации телефонного соединения, например оболочку Seyon, которая также поставляется в стандартном дистрибутиве Red Hat 6.0.

Можно задействовать и специализированную утилиту для автоматического установления телефонного соединения diald, которая подключается к провайдеру, когда пользователь генерирует запрос к внешней сети. Эта программа подходит для организации доступа к Internet из небольшой сети, в которой Linux работает как маршрутизатор.

Таким образом, в Linux предусмотрено множество вариантов установления телефонного соединения. Выбирайте наиболее подходящий для вас, и - за дело!

ОБ АВТОРЕ

Валерий Коржов - обозреватель еженедельника ComputerWorld Russia.
Контактный телефон: (095) 253-92-06, e-mail: oskar@osp.ru.