В случае возникновения проблем вам надо, прежде всего, ознакомиться с содержимым файла протокола (обычно сообщения об установлении соединения и возникающих при этом ошибках записываются в файл
/var/log/messages
). В конце файла должна содержаться информация о действиях программы
pppd
, включая операции, которые завершились неудачно. Там вы найдете сведения об истечении времени тайм-аута при ожидании PAP-аутентификации, об ошибках при выполнении
chat
и другие данные. Если вы не можете понять смысл сообщений, используйте термины, найденные в файле протокола, как ключевые слова при поиске на сервере
http://groups.goggle.com
. На этом сервере хранятся архивы сообщений, отправленных в группы новостей Usenet и посвященных сетевому взаимодействию системы Linux. Среди них вы найдете обсуждение проблем, связанных с установлением PPP-соединений. Не исключено, что какое-то из сообщений будет содержать ответ на ваш вопрос, либо, по крайней мере, вы поймете, в каком направлении следует искать решение проблемы.
Полезными также будут сведения, содержащиеся в документе PPP HOWTO.
Большинство дистрибутивных пакетов сконфигурировано так, что инициализировать PPP-соединение может только пользователь
root
. Многие воспринимают это как недостаток. Подобные меры принимаются для того, чтобы повысить безопасность в том случае, когда на одном компьютере работают несколько пользователей. Однако иногда такие ограничения мешают в работе. Для того чтобы частично разрешить эту проблему, для программ, предназначенных для взаимодействия по коммутируемым линиям, устанавливается бит SUID, в результате чего эти программы запускаются с привилегиями
root
. Очевидно, что при этом снова приходится решать вопросы защиты. В частности, многие администраторы сужают круг пользователей, которые имеют право запускать подобные программы. Они создают группу PPP, включают в нее тех пользователей, которым действительно необходим доступ к удаленным узлам по коммутируемым линиям, устанавливают права доступа так, что запустить программу могут только члены группы PPP.
Многие провайдеры сообщают пользователям IP-адреса серверов DNS, которые должны использоваться при взаимодействии посредством PPP-соединения. Эти сведения можно включить в файл
/etc/resolv.conf
(структура данного файла обсуждалась выше).
Установление соединения по запросу
При работе на отдельной рабочей станции или компьютере необходимость использовать специальную программу установления взаимодействия или вручную запускать соответствующий сценарий практически не мешает работе. Если же PPP-соединением пользуется несколько компьютеров, подключенных к локальной сети, могут возникать проблемы. Часто пользователи пытаются установить соединение в то время, когда оно активно, разорвать соединение, когда другие пользователи обмениваются через него информацией с Internet, либо по окончании работы оставляют соединение активным на длительное время. Для решения этих проблем были созданы средства установления соединения по запросу (dial-on-demand). В системе Linux подобные функции выполняет инструмент под названием
diald
. Эта программа выявляет трафик, направленный из локальной сети к внешним узлам, и инициализирует PPP-соединение. Кроме того, если в течение определенного времени сетевая активность отсутствует, эта программа разрывает соединение. В результате клиентские программы, расположенные в локальной сети, могут работать почти так же, как и программы, находящиеся на компьютерах, постоянно подключенных к Internet; для того чтобы установить или разорвать PPP-соединение, пользователям не приходится предпринимать никаких действий. Различия проявляются лишь в том, что с момента, когда
diald
обнаруживает попытку обращения к внешнему узлу и до установления PPP-соединения, проходит определенное время. Это связано с тем, что система должна обратиться к модему, а модем, в свою очередь, установить соединение с модемом провайдера. Через некоторое время после прекращения сетевой активности соединение разрывается. Если вы зададите слишком малое значение этого интервала, задержка будет возникать слишком часто, так как с момента получения Web-страницы до запроса очередного документа сетевое взаимодействие отсутствует и система может разорвать соединение. Заметьте также, что если PPP-соединение не активно, при обращении к Web-странице броузер выведет сообщение о том, что документ не доступен. Причина в том, что время тайм-аута, используемое при работе броузера, значительно меньше времени, необходимого для установления PPP-соединения.
Чтобы программа
diald
могла работать, необходимо установить в ядре Linux средства поддержки SLIP (вопросы настройки и компиляции ядра рассматривались в главе 1). Протокол SLIP необходим для связывания компьютера с программой
diald
. Эта программа поддерживает постоянно активный сетевой интерфейс, поэтому она имеет возможность выявлять сетевой трафик и устанавливать при необходимости PPP-соединение.
К сожалению,
diald
не входит в состав большинства дистрибутивных пакетов Linux, поэтому этот инструмент необходимо устанавливать отдельно. Исходный код программы можно найти на сервере
http://diald.sourceforge.net
, а для того, чтобы получить двоичные коды
diald
для RPM и Debian, надо обратиться соответственно по адресам
http://www.rpmfind.net
и
http://www.debian.org/distrib.packages
.
Для настройки программы
diald
используются три конфигурационных файла, описанных ниже.
•
/etc/diald.conf
. В этом файле содержатся опции, подобные тем, которые используются сценарием
ppp-on
, например, имя устройства, посредством которого подключен модем (
device
), и скорость соединения (
speed
). Посредством опций
local
и
remote
задаются IP-адреса для
внутреннего использования в программе
diald
. Эти адреса должны принадлежать одному сегменту, но следует следить за тем, чтобы они не совпадали с адресами узлов вашей локальной сети. Вы можете использовать для этой цели IP-адреса, специально выделенные для внутренних сетей, например адреса, принадлежащие диапазону
•
/etc/ppp/diald-dialer
. Этот файл практически идентичен рассмотренному ранее сценарию
ppp-on-dialer
. При настройке его содержимое необходимо изменить так же, как и
ppp-on-dialer
.
•
/usr/lib/diald/standard.filter
. В этом файле задается значение тайм-аута. Если в течение указанного интервала времени сетевая активность отсутствует, программа
diald
должна разорвать соединение. Если в процессе работы вы обнаружите, что соединение прекращается слишком быстро, имеет смысл вернуться к значению тайм-аута по умолчанию, первоначально заданному в файле
/usr/lib/diald/standard.filter
.
Если ваш провайдер использует PAP или CHAP, то кроме перечисленных выше конфигурационных файлов, вам надо также отредактировать файл
/etc/ррр/pap-secrets
или
/etc/ppp/chap-secrets
. В соответствующем файле указываются те же данные, что и при настройке PPP-соединения, устанавливаемого с помощью обычных сценариев. Вам также придется включить в файл
/etc/resolv.conf
адреса серверов DNS, которые сообщит провайдер. Для того чтобы запустить
diald
, надо задать команду
/usr/sbin/diald
. Сделать это может только пользователь
root
. После этого
diald
будет распознавать трафик, направленный извне, и устанавливать PPP-соединения. Первая попытка обращения к серверу Internet закончится неудачей, так как для установления соединения требуется время, превышающее время тайм-аута большинства служб Internet. Вторая попытка будет успешной.
Если вы хотите, чтобы программа
diald
автоматически запускалась при загрузке системы, вам надо создать сценарий запуска SysV или включить дополнительные записи в локальный сценарий (
/etc/rc.d/rc.local
или
/etc/rc.d/boot.local
). Программа
diald
будет нормально работать и в том случае, если ваш компьютер выполняет функции NAT-маршрутизатора.
Резюме
Для того чтобы работа в сети стала возможной, необходимо реализовать тот или иной тип сетевого соединения. В настоящее время для создания подавляющего большинства локальных сетей используется технология Ethernet. В системе Linux присутствуют надежные средства поддержки сети Ethernet. IP-адреса в сети распределяются либо вручную, либо для этой цели используются клиенты и сервер DHCP. Linux поддерживает оба способа распределения адресов. Настройка большинства локальных сетей выполняется приблизительно так же, как и настройка сетей Ethernet. Единственным исключением являются PPP-соединения. Протокол PPP обычно применяется для обеспечения сетевого взаимодействия по коммутируемым линиям. Для поддержки PPP-соединения используется программа
pppd
, выполняющаяся в системе Linux в режиме демона. Обращение к
pppd
осуществляется с помощью специальных программ с графическим интерфейсом, сценариев либо посредством программы
diald
. В любом случае после активизации PPP-соединения формируется интерфейс, который с программной точки зрения аналогичен Ethernet или другому сетевому интерфейсу.
Глава 3
Альтернативные стеки протоколов
Компьютерная программа — идеальный инструмент для решения тех задач, которые предполагают скрупулезное следование предписаниям. В ситуациях, не предусмотренных инструкциями, компьютер становится практически беспомощным. Поэтому для обеспечения работы сетей тщательно разработаны протоколы — подробное описание действий узлов сети при выполнении транзакций. Как было сказано в главе 1, протоколы объединяются в иерархическую систему, называемую стеком сетевых протоколов, или стеком протоколов. Наиболее часто в настоящее время используется стек протоколов TCP/IP. На базе протоколов семейства TCP/IP построена вся сеть Internet, кроме того, протоколы данного семейства широко используются при работе различных операционных систем, в частности Linux. В главе 2 была описана конфигурация системы для поддержки TCP/IP. Помимо TCP/IP, существует ряд альтернативных стеков протоколов, которые также поддерживаются в Linux.
В начале данной главы представлены обзор стеков протоколов и краткое описание TCP/IP. Далее обсуждаются три наиболее часто используемых стека: AppleTalk, IPX и NetBEUI. Эти стеки протоколов применяются в основном в локальных сетях, содержащих компьютеры Macintosh и PC под управлением Windows. С их помощью обеспечивается разделение файлов и принтеров.
Общие сведения о стеках протоколов
Для того чтобы вести предметный разговор о стеках протоколов и обсуждать их достоинства и недостатки, необходимо иметь хотя бы общее представление о том, как организован стек, какие функции выполняют протоколы, входящие в его состав, и как они реализованы. Большинство стеков протоколов действует по единому принципу и отличается лишь в деталях. Однако именно эти детали и являются основным аргументом в пользу выбора тех или иных протоколов.