Linux and tcp ip

Настройка сети в Linux, диагностика и мониторинг

Содержание

Доброго времени, уважаемые читатели. Публикую вторую часть статьи о сетевой подсистеме Linux. В текущей части основной упор сделан на реализацию сети в Linux (как настроить сеть в Linux, как продиагностировать сеть в Linux и поддерживать в рабочем состоянии сетевую подсистему в Linux).

Настройка TCP/IP в Linux для работы в сети Ethernet

Для работы с сетевыми протоколами TCP/IP в Linux достаточно наличие только петлевого интерфейса, но если необходимо объединить хосты между собой, естественно, необходимо наличие сетевого интерфейса, каналов передачи данных (например витая пара), возможно, какого-либо сетевого оборудования. Так же, необходимо наличие установленных утилит для настройки сети (/sbin/ifconfig, /sbin/route и др.), обычно поставляемые в пакете net-tools. Так же необходимо наличие конфигурационных файлов для сети (например /etc/hosts) и поддержку сети ядром Linux.

Параметры сети

Начнем понимание сетевых механизмов Linux с ручного конфигурирования сети, то есть со случая, когда IP адрес сетевого интерфейса статичен. Итак, при настройке сети, необходимо учесть и настроить следующие параметры:

IP-адрес — как уже говорилось в первой части статьи — это уникальный адрес машины, в формате четырех десятичных чисел, разделенных точками. Обычно, при работе в локальной сети, выбирается из частных диапазонов, например: 192.168.0.1

Маска подсети — так же, 4 десятичных числа, определяющие, какая часть адреса относиться к адресу сети/подсети, а какая к адресу хоста. Маска подсети является числом, которое складывается (в двоичной форме) при помощи логического И, с IP-адресом и в результате чего выясняется, к какой подсети принадлежит адрес. Например адрес 192.168.0.2 с маской 255.255.255.0 принадлежит подсети 192.168.0.

Адрес подсети — определяется маской подсети. При этом, для петлевых интерфейсов не существует подсетей.

Широковещательный адрес — адрес, используемый для отправки широковещательных пакетов, которые получат все хосты подсети. Обычно, он равен адресу подсети со значением хоста 255, то есть для подсети 192.168.0 широковещательным будет 192.168.0.255, аналогично, для подсети 192.168 широковещательным будет 192.168.255.255. Для петлевых интерфейсов не существует широковещательного адреса.

IP адрес шлюза — это адрес машины, являющейся шлюзом по-умолчанию для связи с внешним миром. Шлюзов может быть несколько, если компьютер подключен к нескольким сетям одновременно. Адрес шлюза не используется в изолированных сетях (не подключенных к глобальной сети), потому что данным сетям некуда отправлять пакеты вне сети, то же самое относиться и к петлевым интерфейсам.

Файлы настроек сети в Linux (конфигурационные файлы)

Для понимания работы сети в Linux, я бы обязательно посоветовал ознакомиться со статьей «Этапы загрузки Linux». В целом, вся работа Linux основана на процессе init, который рождается при загрузке ОС и плодит своих потомков, которые в свою очередь и выполняют всю необходимую работу, будь то запуск bash или демона. Да, и вся загрузка Linux основана на скриптах bash, в которых прописана вся последовательность запуска мелких утилит с различными параметрами, которые последовательно запускаются/останавливаются при запуске/остановке системы. Аналогично запускается и сетевая подсистема Linux. Каждый дистрибутив Linux имеет слегка отличающийся от других механизм инициализации сети, но общая картина, думаю, после прочтения будет ясна. Если просмотреть стартовые скрипты сетевой подсистемы какого-либо дистрибутива Linux, то, как настроить конфигурацию сети с помощью конфигурационных файлов, станет более-менее понятно, например у Debian/Ubuntu (за основу возьмем эту ветвь дистрибутивов) за инициализацию сети отвечает скрипт /etc/init.d/networking , просмотрев содержимое которого:

можно найти несколько функций, проверяющих наличие подключенных сетевых файловых систем (check_network_file_systems(), check_network_swap()), а так же проверку существования какого-то пока непонятного конфига /etc/network/options (функция process_options()), а в самом низу, конструкцией case «$1» in проверяется первый параметр переданный скрипту и в соответствии с введенным параметром (start/stop/force-reload|restart или любое дугое) производит определенные действия. Из этих самых «определенных действий», на примере аргумента start видно, что сначала запускается функция process_options, далее отправляется в лог фраза Configuring network interfaces, и запускается команда ifup -a. Если посмотреть man ifup, то видно что данная команда читает конфиг из файла /etc/network/interfaces и согласно ключу -a запускает все интерфейсы имеющие параметр auto.

Соответственно, прочитав man interfaces (rus) или man interfaces (eng), становиться ясно, как же в Debian/Ubuntu настроить какой-либо сетевой интерфейс с помощью конфига /etc/network/interfaces. Ниже, пример данного конфигурационного файла для 3х интерфейсов: петлевой (lo), со статичным IP (eth2) и IP получаемым по dhcp (eth0):

В данном конфиге строки allow-hotplug и auto — это синонимы и интерфейсы будут подняты по команде ifup -a. Вот, собственно, и вся цепь работы сетевой подсистемы. Аналогично, в других дистрибутивах: в RedHat и SUSE сеть запускается скриптом /etc/init.d/network. Рассматрев его, аналогично можно найти, где лежит конфигурация сети.

/etc/hosts

Данный файл хранит перечень IP адресов и соответствующих им (адресам) имен хостов.Формат файла ничем не отличается от мастдайного:

/etc/networks

Данный файл хранит имена и адреса локальной и других сетей. Пример:

При использовании данного файла, сетями можно управлять по имени. Например добавить маршрут не route add 192.168.1.12, а route add home-network.

/etc/nsswitch.conf

Файл определяет порядок поиска имени хоста/сети, за данную настройку отвечают строки:

Параметр files указывает использовать указанные файлы (/etc/hosts и /etc/networks соответственно), параметр dns указывает использовать службу dns.

/etc/resolv.conf

Этот файл определяет параметры механизма преобразования сетевых имен в IP адреса. Пример:

В современных дистрибутивах Linux используется динамическая генерация данного файла, с помощью утилиты resolvconf. Она является посредником между службами, динамически предоставляющими сервера имен (например DHCP client) и службами, использующими данные сервера имен. Статические адреса DNS серверов, в случае использования resolvconf, задаются внутри /etc/network/interfaces (подробнее об этом — в разделе настройки).

Настройка сети

Настройка сети подробно разобрана в отдельной статье.

Диагностика сети Linux

Существует большое количество инструментов диагностики сети в Linux, зачастую, они очень похожи на утилиты от Microsoft. Я рассмотрю 3 основные утилиты диагностики сети, без которых выявить неполадки будет проблематично.

Думаю, что данная утилита знакома чуть ли не каждому. Работа этой утилиты заключается в отправке т.н. пакетов ICMP удаленному серверу, который будет указан в параметрах команды, сервер возвращает отправленные команды, а ping подсчитывает время требуемое отправленному пакету, чтобы дойти до сервера и вернуться. Например:

Так же, утилита ping интересна тем, что может позволить увидеть, где именно возникли неполадки. Допустим, утилита ping выводит сообщение network not reachable (сеть недоступна), либо другое аналогичное сообщение. Это, скорее всего, говорит о некорректной настройке вашей системы. В таком случае, можно послать пакеты по IP-адресу провайдера, чтобы понять, в каком месте возникает проблема (между локальным ПК или «дальше»). Если Вы подключены к интернету через маршрутизатор, то можно послать пакеты по его IP. Соответственно, если проблема проявиться уже на этом этапе, это говорит, о неправильном конфигурировании локальной системы, либо о повреждении кабеля, если маршрутизатор отзывается, а сервер провайдера нет, то проблема — в канале связи провайдера и т.д. Наконец, если неудачей завершилось преобразовании имени в IP, то можно проверить связь по IP, если ответы будут приходить корректно, то можно догадаться, что проблема в DNS .

Следует отметить, что данная утилита не всегда надежный инструмент для диагностики. Удаленный сервер может блокировать ответы на ICMP запросы.

traceroute

Простым языком, команда называется трассировка маршрута. Как можно понять из названия — данная утилита покажет по какому маршруту шли пакеты до хоста. Утилита traceroute несколько похожа на ping, но отображает больше интересной информации. Пример:

Источник

6 Работа в сети

В этой главе обсуждается работа в сетях: как конфигурировать подключение, как использовать протоколы TCP/IP, SLIP и PPP.

6.1 Работа в сетях с TCP/IP.

Linux полностью поддерживает протокол TCP/IP (Transport Control Protocol/Internet Protocol). Протокол TCP/IP оказался наиболее успешным средством объединения компьютеров всего мира в единую сеть. Имея компьютер с системой Linux и адаптер Ethernet, можно подключить компьютер к локальной сети или (при наличии соответствующего подключения сети) к сети Интернет, являющейся всемирной сетью с протоколом TCP/IP.

Собрать небольшую локальную сеть из компьютеров с системой UNIX просто. Каждому компьютеру потребуется адаптер Ethernet, а кроме этого соответствующие кабели и другое аппаратное обеспечение. Если же некоторая фирма или университет предоставляют доступ в Интернет, то компьютер с системой Linux может быть легко подключен к этой сети.

Современная реализация протокола TCP/IP и связанных с ним протоколов для системы Linux называется «NET-3», ей предшествовала «NET-2». Это не имеет никакого отношения к так называемой версии NET-2 системы BSD UNIX; в действительности, «NET-3» в этом контексте означает вторую реализацию протокола TCP/IP для системы Linux.

Реализация NET-3 для системы Linux также поддерживает протоколы SLIP (Serial Line Internet Protocol: протокол последовательного подключения к Интернету) и PPP (Point-to-Point Protocol: протокол «точка-точка»). Протоколы SLIP и PPP позволяют подключаться к Интернету по телефонным линиям с помощью модема. Если соответствующая фирма или университет предоставляет доступ с помощью протокола SLIP или PPP, то нужно лишь дозвониться до SLIP или PPP-сервера. Если же компьютер имеет доступ в Интернет через адаптер Ethernet, то компьютер можно превратить в SLIP или PPP-сервер.

Полная информация о работе с протоколом TCP/IP в системе Linux может быть найдена в Практическом руководстве по использованию NET-3 в системе Linux (NET-3 HOWTO). Этот документ можно скопировать с анонимного доступа FTP к сайту sunsite.unc.edu . Документ NET-3 HOWTO является полным руководством к конфигурированию сетей с протоколом TCP/IP; в нем, в том числе, описываются подключения Ethernet, SLIP и PPP в системе Linux. Практическое руководство по использованию подключения Ethernet в системе Linux (Ethernet HOWTO) родственный ему документ; в нем описываются конфигурации различных драйверов для адаптеров Ethernet в системе Linux. Также имеется документ Linux Network Administrator’s Guide (Руководство администратора сети в Linux), разработанный в рамках проекта Linux Documentation Project. Более подробно эти документы описаны в приложении A.

Интересна будет также книга Крейга Ханта (Craig Hunt) под названием TCP/IP Network Administration (администрирование в сети TCP/IP). В этой книге имеется полная информация по использованию и конфигурированию протокола TCP/IP в системе Linux.

Требования к аппаратуре для работы в сети TCP/IP.

В системе Linux можно использовать протокол TCP/IP без каких-либо сетевых устройств, поскольку конфигурирование режима работы с сетевой «заглушкой» (loopback) позволяют вести диалог с самим собой. Это необходимо для некоторых программ и игр, в которых используется «заглушка».

Однако если предполагается использование системы Linux в сети с протоколом TCP/IP и подключением Ethernet, то адаптер Ethernet потребуется. В системе Linux имеется поддержка распространенных адаптеров Ethernet, таких, как 3com 3c503, HP PCLAN (серии 27245 и 27xxx), Western Digital WD80x3, Novell NE2000/NE1000 и многих других. Подробности можно найти в практических руководствах по адаптерам Ethernet и по аппаратному обеспечению в системе Linux (Linux Ethernet HOWTO, Linux Hardware HOWTO).

Нужно иметь в виду, что для некоторых карт поддержка пусть формально и имеется, но производительность оказывается невысокой, или присутствуют другие ограничения. Примерами могут служить адаптер 3Com 3C501, который работает, но с очень низкой производительностью, и адаптер Racal-Interlan NI6510 с микросхемой am7990, который не работает, если оперативная память превышает 16 MB. Также многие адаптеры являются клонами, совместимыми с NE1000/NE2000, и могут быть причиной различных проблем. Более полное обсуждение вопроса о совместимости сетевого оборудования в системе Linux можно найти в документе Linux Ethernet HOWTO.

Linux также поддерживает протоколы SLIP и PPP, что позволяет заходить в Интернет через телефонные линии с помощью модема. В данном случае модем должен быть совместимым со SLIP или PPP-сервером: большинство серверов требуют как минимум модема со скоростью обмена 14.4bps и протоколом V.32bis. Производительность резко повышается при использовании модема со скоростью обмена 33.6bps и выше.

6.1.1 Конфигурирование TCP/IP.

В этом разделе обсуждается конфигурирование подключения к сети Ethernet с протоколом TCP/IP. Следует отметить, что этот метод будет работать для большинства компьютеров и вариантов системы Linux, но определенно не для всех. Обсуждение будет достаточным для того, чтобы указать верный путь к успешному конфигурированию подключения, но на этом пути имеется множество опасностей и тонких деталей, которые здесь не оговариваются. Более полная информация может быть найдена в документах Linux Network Administrators’ Guide и NET-3-HOWTO.

Во-первых, предполагается, что на компьютере с Linux установлено программное обеспечение TCP/IP. Это обеспечение включает основные клиентские программы, такие как telnet и ftp , команды для системного администрирования, например, ifconfig и route (обычно эти файлы находятся в каталоге /etc ), конфигурационные файлы (например, /etc/hosts ). Если сетевое программное обеспечение еще не установлено, то сделать это помогут упомянутые выше документы по Linux.

Также предполагается, что ядро системы конфигурировано и откомпилировано так, что в нем имеется поддержка TCP/IP. Процедура компиляции ядра описывается в разделе 4.9. Для того, чтобы задать опцию, соответствующую работе в сетях, надо ответить «yes» на соответствующие вопросы на этапе make config и собрать ядро заново.

После того, как это будет сделано, нужно поменять несколько файлов, которые используются системой NET-3. По сути это простая процедура. К сожалению, разные дистрибутивы системы Linux помещают конфигурационные файлы и программы поддержки протокола TCP/IP в разные каталоги. Как правило, в каталог /etc , иногда в каталоги /etc , /usr/etc , /usr/etc/inet или другие странные каталоги. В наихудшем случае придется воспользоваться командой find , чтобы найти эти файлы. Следует помнить также, что не все дистрибутивы помещают конфигурационные файлы и программы NET-3 в одно и то же место; напротив, они могут быть рассеяны по разным каталогам.

Следующая информация касается прежде всего подключения Ethernet. Если планируется использовать протоколы SLIP или PPP, то этот раздел следует прочитать, чтобы узнать основные понятия, а при использовании руководствоваться последующими разделами.

Ваши параметры сети.

Прежде чем конфигурировать TCP/IP, нужно узнать определенную информацию о параметрах сети. В большинстве случаев необходимую информацию предоставит системный администратор. Потребуются следующие параметры:

    IP-адрес. Это уникальный адрес компьютера в формате четырех трехзначных десятичных чисел, разделенных точками, например, 128.253.153.54. Этот набор чисел должен предоставить системный администратор.

Если конфигурируется только режим работы с «заглушкой» (которая вообще-то называется закольцовывающим интерфейсом, loopback mode, т.е. когда нет подключения SLIP и нет адаптера Ethernet, а только моделируется подключение TCP/IP компьютера к самому себе, то IP-адресом будет 127.0.0.1.

Маска подсети («netmask»). Формат маски аналогичен формату IP-адреса. Маска определяет, какая часть IP-адреса соответствует номеру локальной подсети (subnetwork number), а какая номеру компьютера в сети. Маска представляет собой битовый шаблон. При наложении этого шаблона на адрес компьютера (хоста) можно узнать номер того участка сети, к которому относится этот адрес. Это очень важно для рассылки сообщений, поэтому если вдруг окажется, например, что можно установить связь с кем-либо вне локальной сети, а внутри сети такая связь не устанавливается, то может оказаться, что маска указана неверно.

Маска выбиралась администратором сети при ее проектировании, поэтому он должен ее точно знать. Большинство локальных сетей имеют класс C и используют маску 255.255.255.0. Сети класса B имеют маску 255.255.0.0. Программа NET-3 выбирает маску автоматически, предполагая по умолчанию, что подсети отсутствуют, если они не указаны.

То же относится и к адресу «заглушки». Поскольку адрес в этом случае всегда 127.0.0.1, то и маска всегда 255.0.0.0. Это можно указать явно или положиться на маску, даваемую по умолчанию.

Адрес сети (network address). Этот адрес является результатом побитовой операции AND двух аргументов: IP-адреса компьютера и маски подсети. Например, если маска имеет вид 255.255.255.0, IP-адрес равняется 128.253.154.32, то адрес сети будет 128.253.154.0. Если маска равняется 255.255.0.0, то адрес сети будет равняться 128.253.0.0.

При использовании только loopback сетевой адрес отсутствует.

Широковещательный адрес (broadcast address). Этот адрес используется для трансляции пакетов сообщений по всем компьютерам, объединенным в подсеть. Следовательно, если IP-адрес компьютера в сети определяется последним байтом (иными словами, если маска равна 255.255.255.0), то широковещательный адрес является результатом побитовой операции OR выражения 0.0.0.255 с IP-адресом Вашего компьютера.

Например, если IP-адрес компьютера 128.253.154.32, а маска 255.255.255.0, то широковещательный адрес будет равен 128.253.154.255.

Исторически сложилось, что в некоторых сетях в качестве широковещательного используется адрес сети. Этот факт следует знать, и если по этому вопросу возникают сомнения, надо обращаться к системному администратору. Разумеется, во многих случаях для конфигурирования сети достаточно будет взять соответствующие файлы с других компьютеров в той же сети и изменить в них только IP-адрес компьютера.

При использовании только loopback широковещательный адрес отсутствует.

Адрес шлюза (gateway address). Это адрес компьютера, который действительно является «шлюзом» во внешний мир (т.е. к компьютерам вне локальной сети). Во многих случаях адрес шлюза получается из IP-адреса компьютера заменой последних групп цифр на .1. Например, если IP-адрес компьютера равняется 128.253.154.32, то адрес шлюза может иметь значение 128.253.154.1. Это значение может также сообщить системный администратор.

Реально шлюзов может быть несколько. В действительности шлюз это компьютер, который находится в двух различных сетях (т.е. имеет IP-адреса в различных подсетях). Шлюз занимается тем, что пересылает пакеты сообщений между этими двумя сетями. Многие сети имеют единственный шлюз во внешний мир (который представляет собой непосредственно примыкающую сеть). Однако в некоторых случаях к локальной сети примыкает несколько других сетей, и для каждой из них имеется свой шлюз.

При использовании только loopback адрес шлюза отсутствует. То же верно и в случае, когда локальная сеть изолирована от всех остальных.

Адрес сервера имен в сети (name server address). У большинства компьютеров в сети имеется сервер, который преобразует имя компьютера в IP-адрес. Адрес этого сервера должен сообщить администратор сети. Такой сервер можно также запустить на собственном компьютере (программа называется named ); в этом случае адрес сервера имен в сети равняется 127.0.0.1. Кроме тех случаев, когда абсолютно необходимо иметь собственный сервер имен, лучше воспользоваться тем, который имеется (если имеется). Совершенно отдельный вопрос конфигурирование программы named . Сейчас он рассматриваться не будет, поскольку цель данного раздела дать возможность приступить к работе в сети. Вопросы, касающиеся имен в сети, будут рассмотрены позднее.

При использовании только loopback адрес сервера имен отсутствует.

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

В реализации NET-3 заложена полная маршрутизация (full routing), поддерживаются множественные маршруты и подсети (последние на данный момент только по границам байта), и тому подобное. Приведенное выше иллюстрирует только принципиальные основы построения сетей TCP/IP. Конкретная сеть может обладать рядом особенностей; выяснить их можно у администратора сети. Также полезно будет почитать экранную документацию к программам route и ifconfig . Конфигурирование сетей TCP/IP лежит далеко за пределами темы данной книги, однако приведенное рассмотрение должно дать достаточно информации, чтобы пользователь смог выяснить остальное самостоятельно.

Читайте также:  Как прошить андроид windows phone
Файлы rc для работы в сетях.

Файлы rc являются конфигурационными скриптами системы. Эти файлы выполняются скриптом init , который запускается при загрузке системы и в свою очередь запускает основные демоны системы (такие как sendmail , cron и т.д.) и конфигурирует параметры сети, устанавливает имя компьютера и т.п. Обычно файлы rc находятся в каталоге /etc/rc.d , однако в некоторых версиях их помещают в каталог /etc . Дистрибутивы Slackware используют файлы rc.inet1 и т.д. в каталоге /etc/rc.d , а дистрибутивы RedHat и другие используют набор каталогов.

Далее будут описываться файлы rc , с помощью которых конфигурируется программное обеспечение протокола TCP/IP. Таких файлов два: rc.inet1 и rc.inet2 . Файл rc.inet1 служит для конфигурирования основных параметров сети (например, устанавливает IP-адрес и информацию о маршрутах), а файл rc.inet2 запускает демоны TCP/IP ( telnetd , ftpd и т.д.).

Во многих версиях системы эти два файла объединяются в один, называемый rc.inet или rc.net . Имя rc -файла не имеет значения; важно, чтобы он правильно исполнял свои функции и запускался во время загрузки скриптом init . Последнее обеспечивается соответствующими строками в файле /etc/inittab (при необходимости этот файл нужно отредактировать, раскомментировав строчки, относящиеся к нужным rc -файлам). В худшем случае пользователю придется создавать самому файлы rc.inet1 и rc.inet2 и добавить запускающие их строчки в файл /etc/inittab .

Как уже говорилось выше, файл rc.inet1 производит основное конфигурирование сетевого интерфейса. Сюда входит задание IP-адреса компьютера и информации о таблице маршрутов сети. Таблицы маршрутов используются для того, чтобы направлять входящие в сеть и выходящие из сети датаграммы (datagrams). В самом простом случае имеется всего три маршрута: один для пакетов, посылаемых на данный компьютер, второй на другие компьютеры в той же сети, и третий на компьютеры вне локальной сети (через шлюз). Для конфигурирования этих параметров используются две программы: ifconfig и route . Обе программы обычно находятся в каталоге /etc .

Программа ifconfig используется для конфигурирования интерфейса сетевых устройств. При этом задаются такие параметры, как IP-адрес, маска, широковещательный адрес и т.п. Программа route используется для создания и изменения элементов в таблице маршрутов.

Для большинства конфигураций файл rc.inet1 может выглядеть примерно следующим образом. Этот пример, разумеется, следует приспособить к конкретному компьютеру и не использовать те IP-адреса, которые указаны в этом примере (они соответствуют некоторым конкретным компьютерам в сети Интернет).

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

Файл rc.inet2 запускает различные серверы, входящие в обеспечение протокола TCP/IP. Наиболее важным из них является сервер inetd . Этот сервер находится в фоновом режиме и наблюдает за работой сетевых портов. Когда к компьютеру пытаются обратиться через какой-либо порт (например, на этот порт приходит команда telnet ), сервер inetd создает для этого порта копию соответствующего демона (в случае прихода команды telnet это будет демон in.telnetd ). Это оказывается проще, чем иметь сразу несколько отдельных работающих демонов (т.е. отдельных копий telnetd , ftpd и т.д.). В принятой схеме они запускаются по мере надобности программой inetd .

Syslogd демон протоколирования системы. Он собирает сообщения о работе от разных программ и складывает их в файлы протоколов согласно конфигурации, содержащейся в файле /etc/syslogd.conf . Функции сервера routed поддерживать динамическую информацию о маршрутах. Если компьютер пытается послать пакеты сообщений на другую сеть, то для этого ему могут потребоваться дополнительные данные в таблице маршрутов. Заботы о действиях с таблицей маршрутов берет на себя сервер routed , и пользователь может не вмешиваться в этот процесс.

В приведенном ниже примере файл rc.inet2 запускает лишь необходимый минимум серверов. Помимо указанных, существует еще много других серверов, и многие из них относятся к конфигурированию NFS. Однако при попытке конфигурировать программное обеспечение протокола TCP/IP лучше всего начинать с минимальной конфигурации, а более сложные элементы (такие, как NFS) добавлять, когда часть программ уже работает.

Также отметим, что в приведенном ниже файле предполагается, что демоны работы в сетях располагаются в каталоге /etc . Разумеется, для конкретной конфигурации этот файл может быть отредактирован.

Среди дополнительных серверов, которые могут быть запущены скриптом rc.inet2 , имеется сервер named . Это сервер имен в сети, и его функция состоит в том, чтобы преобразовывать (локальные) IP-адреса в имена компьютеров и обратно. Если в сети нет другого сервера имен или если требуется дать (локальные) имена другим компьютерам того же домена, можно воспользоваться этим сервером (однако для большинства конфигураций это оказывается ненужным). Конфигурирование сервера named является довольно сложным и требует предварительного планирования; тем, кому это интересно, можно порекомендовать обратиться к книгам по администрированию сетей TCP/IP.

Файл /etc/hosts .

Файл /etc/hosts содержит список IP-адресов и соответствующих им имен компьютеров. Как правило, файл /etc/hosts содержит информацию только о данном компьютере и, возможно, о других важных компьютерах (таких, как сервер имен или шлюз). Для других компьютеров в локальной сети преобразования IP-адресов в имена и обратно будет обеспечиваться локальным сервером имен в сети.

Например, если имя компьютера loomer.vpizza.com , а IP-адрес 128.253.154.32, то файл /etc/hosts на этом компьютере может выглядеть так: Если используется только loopback, то единственная строка в файле /etc/hosts должна начинаться с чисел 127.0.0.1, за которыми должны следовать localhost и затем имя компьютера (прим. переводчика: так должно быть вообще в любой конфигурации: дело в том, что если loopback будет первым в этом файл, системе не надо будет просматривать остальные строки).

Файл /etc/networks .

Файл /etc/networks содержит список имен и адресов как собственной сети, так и других сетей. Этот список используется командой route и дает возможность (при желании) для обозначения сетей использовать имена, а не адреса.

Каждая сеть, к которой предполагается создать отдельный маршрут командой route (обычно вызываемой скриптом rc.inet1 ), должна иметь соответствующую строку в файле /etc/networks .

Файл /etc/host.conf .

В этом файле определяется, как в системе будут разрешаться имена компьютеров. В нем должны содержаться две строки: Эти строки сообщают соответствующим процедурам, что сначала все имена должны искаться в файле /etc/hosts , а затем делается обращение к серверу имен (если он есть). Строка, начинающаяся с multi, позволяет в файле /etc/hosts для данного компьютера иметь несколько IP-адресов.

Файл /etc/resolv.conf .

В этом файле содержится конфигурация для программы разрешения имен. Здесь задается имя сервера имен (если таковой имеется) и имя домена. Имя домена получается, если из полного имени компьютера (например, для компьютера, зарегистрированного в сети Интернет) вычеркнуть имя компьютера (хоста). Например, если полное имя выглядит как loomer.vpizza.com , именем домена будет vpizza.com .

Пусть, например, имя компьютера goober.norelco.com , а сервер имен для него имеет IP-адрес, равный 128.253.154.5. Тогда файл /etc/resolv.conf может выглядеть так: Можно указать и несколько серверов имен, тогда для каждого из них в файле /etc/resolv.conf будет строка, начинающаяся с nameserver .

Установка имени хоста.

Имя компьютера устанавливается командой hostname . Она обычно вызывается из скрипта /etc/rc или /etc/rc.local ; чтобы определить, где именно, надо просто просмотреть содержимое этих файлов и найти ее имя. Например, если (полное) имя компьютера должно быть loomer.vpizza.com , то надо отредактировать соответствующий rc -файл и вставить туда строку Отметим, что исполняемый файл с именем hostname может и не присутствовать в каталоге /bin .

Проверка работоспособности.

После того, как все сконфигурировано, можно попробовать перезагрузить систему с новым ядром и попытаться использовать сеть. Неисправность может случиться во многих местах, так что разумно будет проверять правильность конфигурации сети по частям. К примеру, не следует начинать проверку работы сети с запуска программы Mosaic через сетевые функции системы X.

Для вывода на экран таблиц маршрутов можно использовать программу netstat . Именно эти таблицы являются наиболее частым источником неполадок. Точный синтаксис команды netstat подскажет man-страница. Для проверки подключения к сети мы предлагаем использовать клиентские программы, такие, как telnet , и попытаться подключится к компьютерам как в своей локальной (под)сети, так и за ее пределами. Такой подход сузит область поиска возможных неполадок. Например, если не удается соединиться с компьютерами в своей сети, но соединение с компьютерами вне этой сети устанавливается, то скорее всего ошибка связана с маской и с конфигурированием таблицы маршрутов. Для непосредственной работы с содержимым таблиц маршрутов можно вызвать (как пользователь root ) команду route для работы с записями в Вашей таблице маршрутизации.

Можно также проверить соединение через сеть путем указания точного IP-адреса вместо обращения по имени. Например, если не работает команда то проблема может заключаться в неверной конфигурации сервера имен. Если при указании точного IP-адреса этого компьютера соединение устанавливается, то можно заключить, что почти наверняка в основном конфигурирование сети выполнено верно, а проблема связана с указанием адреса сервера имен.

Поиск ошибок в конфигурировании сети может оказаться трудной задачей, и она не может быть здесь освещена целиком. Если у вас под рукой нет специалиста, который помог бы вам, мы предлагаем обратиться к книге Linux Network Administrators’ Guide, выполненной в рамках проекта Linux Documentation Project.

6.1.2 Настройка SLIP.

Протокол SLIP (Serial Line Internet Protocol) позволяет использовать протокол TCP/IP при подключении через последовательный порт. К этому порту может быть подключен либо модем, либо выделенная асинхронная телефонная линия (leased asynchronous line) какого-либо вида. Разумеется, при таком подключении требуется близко расположенный SLIP-сервер с соответствующими телефонными номерами. Многие университеты и коммерческие организации предоставляют доступ к SLIP-серверу за умеренную плату.

В настоящий момент имеется две основные программы, работающие с протоколом SLIP: dip и slattach . Обе программы предназначены для того, чтобы установить соединение SLIP через последовательное устройство. Для осуществления соединения SLIP необходимо воспользоваться одной из этих программ; просто позвонив на номер сервера одной из коммуникационных программ (например, kermit ) и выполнив команды ifconfig и route , того же результата достичь не удастся. Дело в том, что программы dip и slattach выдают специальное обращение обращение ioctl() к системе, которое перехватывает управление последовательным устройством и начинает использовать его как интерфейс SLIP.

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

Программа dip может быть использована также для конфигурирования системы Linux в качестве SLIP-сервера. При этом другие компьютеры могут звонить на данный компьютер и подключаться к сети через вторичное подключение Ethernet (secondary Ethernet connection). Для более полной информации об этом следует обратиться к соответствующим документам и man-документации к dip .

Подключение SLIP кардинально отличается от подключения Ethernet тем, что в «сети» присутствует всего два компьютера: SLIP-клиент (ваш компьютер) и SLIP-сервер. По этой причине соединение SLIP часто называется соединением «точка-точка» (point-to-point connection). Обобщение этой идеи под названием «протокол PPP» (Point to Point Protocol) также реализовано в системе Linux.

При инициализации подключения к SLIP-серверу последний дает клиенту IP-адрес. При выборе адреса используется два основных метода. Некоторые SLIP-серверы дают статические IP-адреса, так что один и тот же клиент будет всякий раз при подключении получать один и тот же адрес. Однако многие SLIP-серверы дают динамические IP-адреса, которые могут быть новыми при каждом новом подключении. Как правило SLIP-сервер при соединении сообщает клиенту его IP-адрес и IP-адрес шлюза. Программа dip может прочесть эти данные, сообщаемые сервером при входе в систему, и использовать их затем при конфигурировании устройств SLIP.

По сути настройка SLIP напоминает настройку сетевой заглушки или адаптера Ethernet. Основные отличия обсуждаются ниже. Для ознакомления надо прочесть предыдущий раздел, посвященный конфигурированию основных файлов, относящихся к протоколу TCP/IP, и затем прочесть про отличия в данном разделе.

Соединение SLIP программой dip со статическими IP-адресами.

Если SLIP-сервер дает статические IP-адреса, их можно вписать в файл /etc/hosts . Можно также конфигурировать файлы, упомянутые в предыдущих разделах: rc.inet2 , host.conf и resolv.conf .

Также можно сконфигурировать файл rc.inet1 как описано выше. Для сетевой заглушки (вырожденной сети) надо выполнить только программы ifconfig и route . При использовании программы dip она сама выполнит команды ifconfig и route для устройства SLIP. Однако если используется программа slattach , то команды ifconfig / route надо будет включить в файл rc.inet1 для устройства SLIP (см. ниже).

Во время соединения программа dip должна конфигурировать должным образом таблицы маршрутов (routing tables) для устройства SLIP. Однако для некоторых конфигураций поведение программы dip может оказаться неправильным, и после того, как программа dip произведет соединение с сервером, придется выполнять команды ifconfig и route вручную. Проще всего это сделать из скрипта командной оболочки, который запускается из программы dip и немедленно исполняет соответствующие команды конфигурирования. В большинстве случаев адрес шлюза совпадает с адресом SLIP-сервера. Этот адрес может быть известен заранее; кроме того, этот адрес будет выдан на экран SLIP-сервером при соединении. Диалоговый скрипт программы dip (см. ниже) может воспринимать и использовать эту информацию.

Если программа dip сконфигурировала интерфейс неправильно, то программа ifconfig может затребовать значение аргумента pointopoint . Например, если адрес SLIP-сервера равен 128.253.154.2, а IP-адрес клиента 128.253.154.32, то может потребоваться войти в систему как root и после соединения с помощью программы dip выполнить команду При выяснении деталей может оказаться полезной man-документация к команде ifconfig .

Следует напомнить, что используемые командами ifconfig и route имена устройств имеют вид sl0 , sl1 и т.д., в отличие от устройств Ethernet, называемых eth0 , eth1 и т.д.

В разделе 6.1.2, ниже, будет объяснено, как конфигурировать программу dip для соединения со SLIP-сервером.

Соединение SLIP программой slattach со статическими IP-адресами.

При наличии выделенной телефонной линии (или кабеля), ведущей непосредственно к SLIP-серверу, нет необходимости использовать программу dip для инициализации соединения. Вместо нее для конфигурирования устройств SLIP может использоваться программа slattach .

В этом случае файл /etc/rc.inet1 должен выглядеть примерно так:

slattach размещает первое свободное устройство SLIP ( sl0 , sl1 и т.д.) на указанную последовательную линию.

Первым параметром программы slattach является тип используемого протокола SLIP. На настоящее время такими могут быть slip и cslip . Первый из них обычный протокол SLIP, а второй протокол SLIP со сжатием заголовка датаграммы (datagram header compression). В большинстве случаев нужно использовать cslip ; однако если возникают проблемы, можно попробовать slip .

Если имеется более одного интерфейса SLIP, то надо создать некоторый принцип маршрутизации (routing considerations). Надо будет решить, какие нужно создать маршруты; такие решения принимаются только на основе знаний о конкретной структуре сети и подключений. При этом большую помощь окажет книга по конфигурированию сетей TCP/IP, а также man-страница по программе route .

Соединение SLIP программой dip с динамическими IP-адресами.

Если SLIP-сервер назначает IP-адреса динамически, то никогда нельзя знать IP-адрес компьютера заранее. Следовательно, включать соответствующую запись в файл /etc/hosts нельзя (при этом IP-адрес для loopback 127.0.0.1 должен присутствовать).

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

Информация по составлению файлов конфигурации протокола TCP/IP для использования протоколом SLIP дана выше в разделе 6.1.2. Далее описывается конфигурирование программы dip для соединения со SLIP-сервером.

Использование dip .

dip заметно упрощает процесс подключения к SLIP-серверу, входа в систему и конфигурирования устройств SLIP. Программа dip будет весьма полезна кроме, может быть, случаев, когда для подключения к SLIP-серверу используется выделенная телефонная линия (leased line).

Для использования программы dip требуется написать диалоговый скрипт (chat script). В этом скрипте будет содержаться список команд, с помощью которых будет осуществляться диалог со SLIP-сервером во время входа в систему. Эти команды могут автоматически посылать на сервер имя пользователя и пароль, а также получить от сервера информацию о вашем IP-адресе.

Ниже дается пример диалогового скрипта программы dip для работы с сервером с динамическими IP-адресами. Для серверов со статическими адресами надо будет в начале скрипта установить значения переменных $local и $remote , равных соответственно вашему (local) IP-адресу и IP-адресу сервера. Подробно об этом написано в man-документации к dip .

dip автоматически исполняет команды ifconfig и route с учетом значений переменных $local и $remote . В данном примере этим переменным присваивает значение команда get. remote , которая получает текстовую строку от SLIP-сервера и присваивает ее указанной переменной.

Если запускаемые программой dip команды ifconfig и route не работают, то можно либо после выполнения программы dip запустить правильные команды из скрипта программной оболочки, либо непосредственно изменить текст скрипта для программы dip . Запуская программу dip с опцией -v можно получать протокол процесса подключения. Эта информация поможет выяснить источник неудачи, если связь не будет устанавливаться.

Для того, чтобы запустить программу dip и установить подключение SLIP, можно использовать команду следующего типа: При этом различные файлы программы dip и диалоговый скрипт mychat.dip хранятся в каталоге /etc/dip .

Вышеприведенное обсуждение должно быть достаточным для вашего хорошего самочувствия на славном пути в сетевое сообщество через Ethernet или SLIP. И вновь мы настоятельно рекомендуем заглянуть в книгу по TCP/IP, особенно, если ваша сеть имеет специфику в маршрутизации, отличающую ее от рассмотренных здесь.

6.2 Сети на основе телефонных линий и PPP.

Linux поддерживает полную реализацию протокола PPP (Point-to-Point Protocol). Этот протокол является механизмом создания и эксплуатации Интернет-протокола (Internet Protocol, или IP) и других сетевых протоколов для связи через последовательное соединение (через нуль-модемный кабель), через связь, установленную посредством программы telnet , или через связь посредством модемов и телефонных линий (разумеется, включая и цифровые линии, такие, как ISDN). В данном разделе описывается только конфигурирование протокола PPP для клиента, осуществляющего связь через аналоговый модем с удаленным компьютером, предоставляющим доступ к себе через телефонные линии с помощью протокола PPP.

Для того, чтобы получить полную информацию по конфигурированию протокола PPP в системе Linux, читателю предлагается обратиться к Практическому руководству по протоколу PPP в системе Linux (Linux PPP HOWTO), который можно получить через анонимный доступ FTP к сайту sunsite.unc.edu . Этот документ является полным руководством по конфигурированию протокола PPP в системе Linux, включая конфигурирование модемов, линий ISDN, нуль-модемных кабелей. Большая часть информации в этом разделе была взята из этого документа. Также доступен документ Linux Network Administrator’s Guide, являющийся частью проекта Linux Documentation Project. Более подробно об этих документах можно прочесть в приложении A.

6.2.1 Что нужно для начала работ.

Предполагается, что ядро системы Linux сконфигурировано и откомпилировано с включением в него функций поддержки протокола TCP/IP. Информация о компиляции ядра приведена в разделе 4.9 . Для того, чтобы обеспечить сетевые функции в ядре системы, надо ответить «yes» на соответствующие вопросы во время шага make config и затем собрать ядро заново. Предполагается также, что сам пакет ppp откомпилирован и установлен, и что с ядром Linux версии 1.2.x используется версия PPP 2.1.2, а с ядром Linux версий 1.3.X/2.0.x версия PPP 2.2.0. На время написания книги последняя официальная версия пакета PPP имеет номер ppp-2.2f. Если планируется использовать модули для того, чтобы загрузить программы PPP в ядро системы, то следует прочесть kerneld mini-HOWTO. Крайне рекомендуется использовать только те сочетания версий ядра системы и программного обеспечения PPP, про которые известно, что они стабильны в совокупности.

Надо также прочесть следующую документацию:

  • документацию, сопровождающую пакет программного обеспечения PPP;
  • man-страницы к программам pppd и chat (используйте команды man chat и man pppd );
  • Linux Network Administration Guide (NAG);
  • Net-2/3 HOWTO;
  • документацию к ядру системы, которая поставилась в /usr/src/linux/Documentation при установке исходных текстов Linux;
  • www-страницу, посвященную конфигурированию модема (Modem Setup Information), по адресу http://www.in.net/info/modems/index.html ;
  • замечательные книги по системам UNIX и Linux, выходящие в издательстве O’Reilly and Associates. Электронный каталог в системе Интернет (O’Reilly and Associates On-Line catalog) находится на сайте http://www.ora.com/ . Новичку в системах UNIX и Linux следует приобрести некоторые из этих книг!
  • документ PPP-FAQ (Часто задаваемые вопросы по протоколу PPP), который поддерживает Эл Лонгейр (Al Longyear). Этот документ находится по адресу ftp://sunsite.unc.edu/pub/Linux/docs/faqs (см. приложение B). Здесь можно найти много полезной информации в формате вопрос-ответ; эта информация будет очень полезна при выяснении, почему связь PPP неправильно работает.
Читайте также:  X com windows версия

6.2.2 Обзор этапов настройки.

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

  1. Убедиться, что в ядре откомпилирован блок поддержки протокола TCP/IP.
  2. Убедиться, что в ядре откомпилирован (либо статически, либо как загружаемый модуль) блок поддержки протокола PPP.
  3. Убедиться, что программное обеспечение протокола PPP откомпилировано и установлено.
  4. Убедиться, что модем сконфигурирован и установлен (подключен) к известному последовательному порту компьютера.
  5. Убедиться, что известна следующая информация от провайдера PPP (обычно это провайдер Интернет):
    • Телефонный номер, по которому следует звонить на сервер.
    • Тип назначения клиентских IP-адресов (статический или динамический). В первом случае надо знать статический IP-адрес.
    • IP-адрес сервера имен (DNS server), который будет разрешать имена компьютеров при соединении.
Убедиться, что в ядре откомпилирован блок поддержки протокола TCP/IP.

Программное обеспечение протокола PPP в системе Linux состоит из двух частей: демон протокола PPP и поддержка протокола PPP ядром. В большинстве дистрибутивов в ядре по умолчанию имеется поддержка протокола PPP, однако для некоторых дистрибутивов это не так. Для того, чтобы убедиться, что в ядре имеется блок поддержки протокола TCP/IP, можно ввести следующую команду: Если будет получена строчка, напоминающая: то значит, поддержка протокола TCP/IP откомпилирована. Эту же информацию можно увидеть на экране консоли во время загрузки. Однако на быстрых компьютерах это сообщение пролетает слишком быстро, чтобы его увидеть. Для того, чтобы пролистать сведения и найти это сообщение, можно использовать комбинацию клавиш Shift-PageUp.

Убедиться, что в ядре откомпилирован блок поддержки протокола PPP.

Если при загрузке ядро системы выдает сообщения типа: то значит, поддержка протокола PPP есть. Можно также ввести команду: Строка, напоминающая: также обозначает, что протокол PPP поддерживается.

Убедиться, что модем сконфигурирован.

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

  • DOS com1: = Linux /dev/cua0 (/dev/ttyS0)
  • DOS com2: = Linux /dev/cua1 (/dev/ttyS1),
  • и т.д.

Исторически сложилось так, что в системе Linux устройства cua x используются для исходящих звонков, а устройства ttyS x для входящих. Начиная с версии ядра 2.0.x такое положение изменилось, и теперь как для входящих, так и для исходящих звонков нужно использовать устройство ttyS x. Возможно, что в последующих версиях ядра устройства cua x вообще исчезнут.

Если используется высокоскоростной модем (14400 бод и выше, не имеет значения, внешний или внутренний), то последовательный порт должен уметь справляться с таким потоком данных, в частности, когда используется сжатие данных.

Это требует, чтобы последовательный порт использовал современную версию UART (Universal Asynchronous Receiver Transmitter), например, 16550A. На старом компьютере (или на компьютере со старым контроллером последовательных портов) может быть всего лишь 8250 UART, что создаст значительные трудности при использовании высокоскоростных модемов.

Для выдачи характеристики UART порта надо ввести команду:

Если имеется высокоскоростной модем, а характеристики порта недостаточные, следует позаботиться о приобретении нового адаптера последовательных портов (их цена менее $50). Для использования протокола PPP нужно будет сконфигурировать модем, поэтому нужно прочесть руководство к модему. Большинство модемов выпускаются с именно теми установками по умолчанию, которые требуются для протокола PPP. Рекомендуем следующую конфигурацию (в стандартных командах протокола Hayes):

  • Hardware flow control (RTS/CTS) (&K3 в большинстве модемов)
  • E1 (Echo ON) в /usr/src/linux-2.0.27/include/linux/serial.h (команда требуется для функционирования программы chat .)
  • Q0 Report result codes (требуется для функционирования программы chat .)
  • S0=0 Auto Answer OFF (если модем не должен отвечать на телефонные звонки).
  • &C1 Carrier Detect ON только после соединения.
  • &S0 Data Set Ready (DSR) всегда ON.
  • Data Terminal Ready (команда зависит от типа модема).

Информация по адресу http://www.in.net/info/modems/index.html содержит примеры конфигураций для многочисленных модемов и может оказаться полезной.

Для выяснения информации о конфигурации модема и ее установки можно использовать соответствующие программы коммуникаций (например, minicom или seyon). Многие модемы выдают данные о своих установках в ответ на запрос AT&V, однако этот вопрос нужно уточнить в инструкции к модему.

Если вы при установке окончательно запутались, то вернуться к установкам производителя можно командой AT&F. Как уже говорилось, в большинстве модемов эти установки включают все, что нужно для PPP, однако в этом следует убедиться.

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

Если модем используется только в системе Linux и только для соединения с каким-либо сервером, то проще всего записать конфигурацию в постоянную память (NV-RAM) модема.

Если же модем используется другими программами или операционными системами, то безопаснее будет сообщать установки при каждом соединении, гарантируя, что при каждом обращении к модему он будет находиться в правильной конфигурации. Такой подход имеет также преимущества, что конфигурирующая строка модема не будет потеряна, если вдруг пропадет содержимое постоянной памяти (NV-RAM) модема.

Информация о сервере.

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

  • Телефонный номер сервера (один или несколько). Если модем вашего компьютера установлен в офисной АТС, то нужно знать номер, который выводит во внешнюю телефонную сеть. Обычно это либо цифра 0 или 9.
  • Назначает ли сервер IP-адреса статически или динамически. Если используется статическое назначение IP-адресов, то нужно знать этот адрес для данного пользователя. Если сервер дает сразу несколько разрешенных IP-адресов, то надо знать их все, а также маску подсети (netmask).

Большинство серверов в интернет используют динамическое назначение IP-адресов. Как указывалось выше, это будет иметь последствия в том, какие услуги можно будет получать от сервера.

Однако, даже если используется статическое назначение IP-адресов, большинство PPP-серверов никогда (из соображений безопасности) не разрешают клиентам указывать IP-адрес. Поэтому знать эту информацию необходимо.
IP-адрес DNS-сервера (или DNS-серверов) (Domain Name Server, серверы имен) на PPP-сервере. Таких должно быть по крайней мере два, хотя требуется только один.

Этот пункт может вызвать проблему. Дело в том, что установка для протокола PPP в системе Microsoft Windows 95 позволяет передавать адрес DNS клиенту в процессе соединения. Поэтому служба технической поддержки сервера может заявить, что клиенту не нужно знать этот адрес.

Однако при использовании системы Linux этот адрес требуется. Реализация протокола PPP в системе Linux не позволяет производить установку IP-адреса DNS динамически во время соединения (и возможно, что никогда не позволит).

  • Использует ли сервер протоколы PAP (Password Authentication Protocol) или CHAP (Challenge/Handshake Authentication Protocol). Если да, то в этом случае нужно знать идентификатор (id) и пароль соединения (secret), которые следует использовать при соединении. Возможно, что ими являются соответственно имя пользователя и пароль в операционной системе сервера.
  • Запускает ли сервер протокол PPP автоматически, или для этого требуется выдать специальную команду после входа в систему. Если надо ввести команду, то ее нужно знать.
  • Является ли операционная система сервера системой Microsoft Windows NT, а если да, то используется ли в ней система MS PAP/CHAP. Многие корпоративные локальные сети используют такие возможности системы MS Windows NT для большей безопасности.
  • Каждый компьютер, подключенный к сети интернет, должен иметь свой уникальный IP-адрес. Эти адреса назначаются централизованно специальными уполномоченными в каждой стране. Следовательно, для использования связи посредством протокола PPP нужно, чтобы имелся такой назначенный IP-адрес. Система динамического назначения адресов возникла по причине растущего количества компьютеров в сети Интернет (и отчасти из-за большого числа пользователей PPP). При динамическом назначении IP-адресов, когда адрес назначается при соединении с сервером, при каждом новом соединении могут назначаться различные IP-адреса. Этот метод является наиболее употребительным для большинства провайдеров. В некоторых случаях используется статическое назначение адресов. Выбрать себе IP-адрес нельзя; он присваивается специально уполномоченной на то организацией. Это предотвращает ситуацию, когда два компьютера будут иметь один и тот же IP-адрес, что создаст проблемы в Интернете. Удаленные PPP-серверы сообщают тип присваиваемых IP-адресов и, при динамическом присвоении адресов, фактический адрес, назначенный при соединении.

    Важно знать, что при динамическом назначении IP-адресов будет очень сложно обеспечить любые постоянные услуги Интернета, такие, как www-серверы, услуги gopher, серверы Internet Relay Chat. Можно будет использовать такие услуги, расположенные на других компьютерах, но нельзя будет создать подобное на своем компьютере без приложения чрезвычайных усилий. Подобные приемы лежат вне целей данного рассмотрения.

    PAP и CHAP это два различных распространенных метода идентификации. Оба эти метода поддерживаются Linux.

    Тестирование модема и соединения с удаленным сервером.

    Теперь, когда улажены вопросы с последовательным портом и модемом, можно посмотреть, как эти установки будут работать при попытке установить соединение с сервером.

    Для этого нужно, используя коммуникационные программы (например, minicom или seyon), задать требуемую для протокола PPP инициализационную строку модема и набрать номер PPP-сервера.

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

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

    Если сервер использует протокол PAP, то вы не должны увидеть приглашения, а вместо этого на экран будет выдаваться текстовое представление протокола установления связи (link control protocol), который будет выглядеть бессодержательным (иногда его еще называют «garbage»: мусор).

    Несколько предупреждений:

    • Некоторые серверы позволяют пользователю входить как с помощью текстового имени и пароля, так и через протокол PAP. Так что если известно, что сервер использует PAP, но при соединении на экран не поступает сразу же бессодержательная выдача, то это не значит, что сделано что-то неправильное.
    • Некоторые серверы требуют, чтобы клиент вначале ввел некоторый текст, а потом запускают стандартную последовательность PAP.
    • Некоторые PPP-серверы являются пассивными. Это значит, что они ничего не посылают до тех пор, пока клиент не пошлет им некоторый lcp-пакет. При соединении с таким сервером бессодержательная выдача на экране не появится, как впрочем и какая-либо другая.
    • Некоторые серверы не запускают протокол PPP пока клиент не нажмет клавишу Enter, так что это всегда стоит попробовать, если соединение произошло, а «мусор» на экране не появился!

    Следует пытаться дозвониться до сервера минимум дважды, так как некоторые серверы меняют приглашение со временем. Два основных приглашения, которые должны всегда быть распознаны клиентским компьютером, это:

    • приглашение ввести имя пользователя.
    • приглашение ввести пароль.

    Если для запуска программы PPP на сервере надо еще запустить некоторую команду, то необходимо также выяснить, какое приглашение дает сервер, когда клиент вошел в систему и сервер ждет от него команды на запуск PPP.

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

    Выглядит это примерно так:

    На некоторых серверах программу PPP требуется явно запустить. Обычно так сделано потому, что конфигурация сервера позволяет входить в систему через протокол PPP и через командную оболочку, используя одну и ту же пару имени пользователя и пароля. В таком случае после входа в систему нужно выдать команду на запуск PPP.

    Если непосредственно после соединения (а также, если требуется, после входа в систему и запуска PPP-сервера) на экран не выдается бессодержательное сообщение, можно попробовать запустить PPP-сервер, нажав клавишу Enter.

    На этом этапе можно повесить трубку модема (обычно для этого надо быстро ввести с клавиатуры +++ , и после того, как модем откликнется сообщением OK , послать команду ATH0).

    Если модем не заработал, следует вернуться к руководству к данному модему, экранной документации к коммуникационным программам и документу Serial HOWTO.

    Работа с PPP-серверами с динамическим назначением IP-адресов.

    Если сервер динамически назначает IP-адреса клиентов (так и делают большинство Интернет-провайдеров, если не заплатить им существенно большую сумму за подключение), то нужно осознать, какие это накладывает ограничения.

    Сразу скажем, что ограничения не коснутся исходящих запросов к ресурсам системы Интернет. Иными словами, можно посылать электронную почту программой sendmail (если она будет правильно сконфигурирована), осуществлять FTP-соединение с удаленными сайтами и копировать с них файлы, пользоваться командой finger , бродить по www-страницам и т.п.

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

    Ограничения обусловлены тем, что компьютер не подключен к Интернету 24 часа в день, и что при подключении каждый раз ему дается новый IP-адрес. Таким образом, невозможно будет получать почту, направленную непосредственно на данный компьютер, и будет очень трудно организовать www- или FTP-сервер, который остальные могли бы посещать. С точки зрения Интернета, компьютер как единица, постоянно подключенная к нему и имеющая постоянный IP-адрес, не существует (так как тот же IP-адрес будет временами использоваться другими компьютерами).

    Если на таком компьютере организован www-сервер (или любой иной сервер), то он будет неизвестен для всех пользователей Интернета кроме тех, кто знает, что компьютер в это время подключен, и к тому же знает его текущий IP-адрес. Есть несколько способов оповестить этих пользователей: от простого телефонного звонка или сообщения по электронной почте этим пользователям и вплоть до хитроумного использования файлов .plan при доступе к серверу через командную оболочку (если сервер разрешает доступ к себе через командную оболочку и команду finger ).

    Для большинства пользователей все это не является проблемой, поскольку им нужно лишь отправлять и получать электронную почту (через имя пользователя на сервере) и производить соединение с удаленными www, FTP и другими серверами Интернета. Однако для того, чтобы иметь свой сервер, доступный с других компьютеров, в действительности требуется статический IP-адрес.

    Файлы программ PPP.

    Для того, чтобы создать каталоги и редактировать файлы, нужные для конфигурирования PPP, надо войти в систему как root . Местоположение файлов, обеспечивающих конфигурирование и работу PPP-соединения, различается для версий PPP 2.1.2 и 2.2.

    Для версии PPP 2.1.2 это следующие файлы:

    Для версии PPP 2.2 используются такие файлы:

    Пользователи Red Hat Linux должны иметь в виду, что Red Hat 4.X устанавливает эти скрипты в каталог /usr/doc/ppp-2.2.0f-2/scripts .

    В каталоге /etc должен быть каталог ppp :

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

    Если же этот каталог уже существует, то в нем должны находиться шаблоны опций в файле с именем options.tpl . Пример этого файла, если такого файла не окажется, приведен ниже.

    В этом примере объясняются почти все опции программного обеспечения протокола PPP, поэтому с ним полезно будет ознакомиться (вкупе с экранной документацией к программе pppd ). Хотя этот файл можно рассматривать как основу для создания собственного файла /etc/ppp/options , возможно, что лучше будет создать такой файл самостоятельно, потому что так файл не будет содержать большого числа закомментированных строк, как следствие, он окажется намного короче, и его будет легче читать и поддерживать.

    В некоторых дистрибутивах, по-видимому, потерян файл options.tpl . Его полная версия должна находиться в документе PPP-HOWTO.

    Какие опции нужны?

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

    Однако, если таким образом протокол PPP не удалось заставить работать, следует прочесть образец файла /etc/ppp/options.tpl и man-страницу к программе pppd . Полезно также проконсультироваться с системным администратором соответствующего сервера, либо обратиться в службу технической поддержки пользователей.

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

    Установка PPP-соединения вручную.

    Теперь, когда созданы файлы /etc/ppp/options и /etc/resolv.conf (и, если необходимо, файл /etc/ppp/pap|chap-secrets ), все установки можно проверить, попытавшись произвести соединении PPP вручную. После того, как это удастся, можно будет автоматизировать этот процесс.

    Для того, чтобы это было можно сделать, нужно, чтобы коммуникационные программы могли завершить свою работу, не перезагружая модем. Программа minicom может это сделать при нажатии последовательности клавиш Control-A Q.

    • Убедиться, что вы в системе как пользователь root .
    • Запустить коммуникационные программы (например minicom), набрать номер сервера и войти в систему. Ввести команду для запуска PPP, если это требуется. При этом на экран начинают поступать бессодержательные сообщения (как раньше).
    • Если используются PAP или CHAP, то само по себе соединение с удаленным сервером должно запускать программы PPP на удаленном компьютере, и бессодержательные сообщения будут выдаваться без входа в в систему. Для ряда серверов это будет не так; тогда надо нажать клавишу Enter и посмотреть на результат.
    • Теперь надо выйти из коммуникационной программы, не перезагружая модем. Теперь на приглашения Linux в качестве пользователя root можно ввести команду: При этом, разумеется, надо подставить имя устройства, к которому подсоединен модем.

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

  • При установке связи PPP индикаторы модема должны мигать. Процесс установки связи PPP длится некоторое время.
  • В данное время можно посмотреть на интерфейс PPP командой:

    В дополнение к сетевым заглушкам (loopback) и адаптерам Ethernet можно увидеть информацию следующего типа:

    Здесь:

    • inet addr:10.144.153.10 IP-адрес Вашего конца PPP-соединения.
    • P-t-P:10.144.153.5 IP-адрес PPP-сервера.

    Программа ifconfig сообщает не эти IP-адреса, а те, которые используются PPP-сервером. Отметим, что команда ifconfig также сообщает, что соединение установлено и работает («up and running»).

    Можно также увидеть маршрут к удаленному компьютеру (и далее). Для этого надо ввести команду

    Будет выдана информация следующего вида:

    Отметим здесь две важные строки, указывающие на IP-адрес PPP-клиента.

    Первая является маршрутом HOST (помечена флагом «H»). Она позволяет увидеть компьютер, с которым произведено соединение, но не дальше.

    Вторая строка является маршрутом по умолчанию, который установлен посредством опции defaultroute программы pppd . По этому маршруту отправляются все пакеты, которые имеют пункт назначения, недоступный через локальную сеть Ethernet (т.е. вне локальной сети, для которой есть специальные сетевые маршруты). Таким образом, эти пакеты направляются PPP-серверу, который затем должен отправить их дальше в Интернет, а приходящие (возвратившиеся) пакеты направить (вернуть) клиенту.

    Отсутствие таблицы с такими двумя строками говорит о том, что не все установки сделаны верно. В частности, если в протоколе имеется сообщение, что программа pppd не замещает существующего маршрута по умолчанию, то значит, что маршрут по умолчанию указывает на интерфейс Ethernet. Это должно быть заменено на необходимый нам сетевой маршрут, поскольку можно иметь ТОЛЬКО ОДИН МАРШРУТ по умолчанию.

    Надо будет исследовать инициализационные файлы системы и найти, где же устанавливается этот путь по умолчанию. Искать надо команду route add default. , и заменить ее на что-либо вроде route add net. .

    Теперь можно проверить связь, введя команду ping с IP-адресом, указанном в выводе команды ifconfig :

    В ответ будут приходить строки следующего вида:

    Эти строчки будут идти бесконечным потоком; чтобы остановить этот поток, надо нажать комбинацию клавиш Control-C. При этом будет получена дополнительная информация: (сообщается количество переданных, принятых и потерянных пакетов, а также минимальное, среднее и максимальное время реакции).

    Теперь можно попытаться ввести команду ping , указав некоторый компьютер (но не сам PPP-сервер) по имени (желательно знать, что этот сервер в данный момент включен). Например:

    Далее должна последовать пауза, во время которой компьютер получает IP-адрес от сервера DNS, указанного в файле /etc/resolv.conf . В этот время индикаторы модема должны мигать. Через некоторый промежуток времени будет получено примерно следующее сообщение:

    Остановите вывод, нажав Control-C. Будет получена статистика:

    Если отклик от удаленного сервера не был получен, то можно отдать команду ping , указав IP-адрес DNS-сервера. Если в этот раз отклик получен, то похоже, что ошибка связана с файлом /etc/resolv.conf .

    Если же отклик не был получен ни разу, то либо имеется ошибка в составлении маршрутов клиента, либо сервер почему-то не может послать пакеты сообщений, адресованные клиенту. В этом случае нужно проверить таблицу маршрутов, как это показано выше, и если она в порядке, нужно обратиться к Интернет-провайдеру. Хороший тест для сервера — попытаться установить связь с ним из другой операционной системы. Если из нее удается установить контакт с внешним (по отношению к серверу провайдера) сервером, значит, проблемы нужно искать у клиента.

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

    После короткой паузы модем сам разорвет связь.

    Если это не сработало, то надо либо выключить модем, либо запустить коммуникационную программу и послать модему прерывание командой +++ , и затем, после приглашения от модема OK разорвать связь командой ATH0.

    Может потребоваться также очистить файл захвата (lock file), созданный программой pppd , с помощью команды:

    6.2.3 Создание скриптов установления связи.

    Хотя и в дальнейшем можно устанавливать связь вручную, как это делалось выше, намного удобнее создать несколько скриптов, которые будут делать все операции автоматически. При этом пользователю (из группы, которой доступны команды поддержки PPP, либо пользователю root ) будет достаточно ввести одну команду, чтобы эти скрипты автоматически установили связь, вошли в систему сервера и запустили программы PPP.

    Ниже даются скрипты для случая, когда сервер провайдера не использует PAP/CHAP.

    Если программное обеспечение PPP установлено правильно, то среди файлов должны присутствовать два файла с примерами. Для версии PPP 2.1.2 эти файлы находятся в каталоге /usr/sbin , а для версии PPP 2.2 в каталоге /etc/ppp/scripts . Названия файлов:

    • для PPP 2.1.2:
    • для PPP 2.2:

    Если используется версия PPP 2.1.2, то мы советуем удалить файлы с примерами, поскольку их использование чревато проблемами (несмотря на то, что они длительное время использовались и даже рекомендовались в ранних версиях документа PPP-HOWTO).

    Для пользователей версии PPP 2.1.2 здесь даются более удачные образцы, взятые из дистрибутива версии PPP 2.2. Их предлагается скопировать и использовать вместо старых.

    Скрипт ppp-on является первым из пары, которая осуществляет соединение.

    Скрипт ppp-on-dialer (второй из этой пары):

    Для версии PPP 2.2 скрипт ppp-off такой:

    6.2.4 Редактирование скриптов запуска PPP.

    Поскольку новые скрипты состоят из двух частей, они будут редактироваться по очереди.

    Скрипт ppp-on .

    Скрипт ppp-on надо отредактировать, вставив правильные имена пользователя и пароль на сервере, а также телефонный номер сервера.

    Каждая строка скрипта, начинающаяся, например, с TELEPHONE= , в действительности устанавливает значение некоторой переменной командной оболочки, причем это значение стоит справа от символа ‘=’ (разумеется, комментарии не учитываются). Редактироваться должны именно эти значения.

    Поскольку IP-адрес устанавливается в файле /etc/ppp/options (если он требуется), то надо удалить следующую строчку:

    Также следует убедиться, что переменная оболочки DIALER_SCRIPT указывает на полный путь к файлу, содержащему именно этот скрипт набора номера, который будет использоваться. Если файл с исходным скриптом был перенесен на другое место или переименован, проверьте правильность этой строки в скрипте ppp-on .

    Скрипт ppp-on-dialer .

    Это второй из скриптов, который устанавливает PPP-соединение.

    Замечание: скрипт диалога (chat script) обычно целиком помещается на одной строке. Обратные слэши используются для того, чтобы объединить несколько коротких строк, которые можно выводить сразу на экран, так что командная оболочка будет воспринимать их как одну очень длинную строку. Таким образом, эти символы не являются частью скрипта.

    Будет, тем не менее, полезно познакомиться с текстом этого скрипта и понять, что он должен делать.

    Скрипт диалога (chat script) является последовательностью пар ‘строка ожидания’-‘посылаемая строка’ (‘expect string’-‘send string’). Заметим, что любой посылке всегда предшествует ожидание некоторого сигнала.

    Если некая строка посылается без предварительного ожидания прихода какого-либо сигнала (или наоборот), то надо использовать пустую строку ожидания (или посылаемую строку), обозначаемую как «». Кавычки должны обрамлять сообщение и в том случае, когда оно состоит из нескольких слов (пример: сообщение ‘NO CARRIER’), так что скрипт воспринимает его как единую строку.

    В приведенном примере диалоговая строка выглядит так:

    При вызове диалогового скрипта использована опция -v , указывающая, что все сообщения ввода и вывода будут сохраняться в системном протоколе (обычно это файл /var/log/messages ). После того, как этот скрипт показал свою работоспособность, эту опцию можно убрать, сократив тем самым объем информации в системных протоколах.

    Следующая строка: устанавливает время ожидания для прихода ожидаемых строк, равное трем секундам. Для очень медленного модема это время можно увеличить до 5 или 10 секунд.

    Строка: говорит, что при приходе строки ‘BUSY’ надо прервать работу.

    Аналогично нужно поступить, если придет строка ‘NO ANSWER’: или строка ‘RINGING’: (кто-то уже звонит по телефону клиента).

    Посылаем модему строку ‘AT’; в ответ ничего не ожидается: В следующей строке: использованы некоторые возможности восстановления после сообщений об ошибке.

    Здесь от модема ожидается строка ‘OK’; если она не пришла (из-за того, что модем не находится в командном режиме), то посылается строка ‘+++’ (эта строка возвращает стандартный Hayes-совместимый модем в командный режим) и ожидается ‘OK’, а затем посылается команда ATH0. Эта команда позволяет скрипту справляться с ситуацией, когда модем завис в режиме on-line.

    Следующая строка: устанавливает время ожидания, равное 30 секундам, на весь остаток скрипта. Если это время окажется недостаточным, его можно увеличить до 45 секунд и более.

    Строка набора номера: ожидает ‘OK’ от модема в ответ на команду ATH0, и набирает требуемый номер.

    Дальше ждем сообщения ‘CONNECT’: Наш модем также посылает ‘CONNECT’, когда отвечает удаленный модем.

    Теперь надо войти в систему:

    В эту команду встроен механизм, который, когда время ожидания будет исчерпано, а приглашение войти в систему (. ogin:) получено не будет, посылает пустую строку и еще раз ждет приглашения. Когда приглашение получено, то посылается имя пользователя, которое хранится в переменной командной оболочки по имени $ACCOUNT.

    Теперь ожидается приглашение ввести пароль: и он вводится.

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

    6.2.5 Запуск PPP на сервере.

    Приведенный выше скрипт ppp-on-dialer хорошо работает для тех серверов, которые после входа в систему автоматически запускают программу pppd . Однако некоторые серверы требуют, чтобы эта программа была явным образом запущена. Для этого нужно отредактировать скрипт ppp-on-dialer .

    В конце скрипта (после строки, где ожидается и вводится пароль) надо ввести еще одну строку. В ней будет ожидаться приглашение командной оболочки сервера. Следует особо обходится с символами, которые имеют особый смысл в командных оболочках, например, для оболочки Bourne shell это символы:

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

    Сервер, которым пользуется автор этих строк, использует стандартное приглашение оболочки Bash системы Linux: на что требуется ответить: и на сервере будет запущен протокол PPP.

    Можно предусмотреть различные ситуации следующей строкой в скрипте: Это означает, что если приглашение в установленное время не получено, то надо послать пустую строку и еще раз подождать приглашения.

    Когда приглашение получено, посылается строка ‘ppp’.

    К концу предыдущей строки скрипта надо не забыть добавить символ \ , так чтобы скрипт рассматривался как одна длинная строка!

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

    6.2.6 Если Ваш PPP-сервер использует PAP (Password Authentication Protocol).

    Если сервер использует для опознавания клиента протоколы PAP или CHAP, то требуется еще некоторая работа.

    В дополнение к уже указанным, в файл /etc/ppp/options нужно добавить следующие строки:

    6.2.7 Использование MSCHAP.

    Программа RAS в операционной системе Microsoft Windows NT может быть установлена так, что в ней будет использоваться модификация протокола CHAP. Среди исходных текстов программ PPP можно найти файл README.MSCHAP80 , в котором обсуждается этот вопрос. Узнать о том, использует ли сервер для опознавания этот протокол, можно, установив опцию поиска ошибок (debugging) программы pppd . Если сервер использует протокол MS CHAP, то на экране будет примерно такая строка:

    Индикатором здесь является строка auth chap 80 .

    Для того, чтобы использовать MS CHAP, надо будет заново откомпилировать программу pppd , чтобы включить туда поддержку этого протокола. Инструкции для компилирования и использования такой версии программы pppd можно также найти в файле README.MSCHAP80 .

    Если используется опознавание протоколом PAP или CHAP, то нужно создать файлы с секретными ключами (secrets file). Их имена будут соответственно /etc/ppp/pap-secrets и /etc/ppp/chap-secrets , принадлежность пользователю root , группе root с правами доступа 740.

    Первое, что нужно знать о протоколах PAP и CHAP, это что они созданы для опознавания хостов, а не пользователей. Другими словами, после того, как компьютер совершил PPP-соединение с сервером, любой пользователь на этом компьютере сможет использовать это соединение.

    Протокол PAP может, а протокол CHAP должен потребовать двустороннего опознавания, т.е. имя и ключ потребуются с каждой стороны. Однако большинство PPP-серверов, использующих PAP, этого не требуют.

    Предоставляя услуги, провайдер обычно дает клиенту имя и пароль для входа в систему, и не интересуется тем, какое имя компьютера установлено в операционной системе на клиентском компьютере. Поэтому при соединении с сервером надо использовать имя пользователя, данное провайдером. Для этого используется опция name программы pppd . В файл /etc/ppp/options надо добавить строку: (первый аргумент «локальное» имя пользователя, второй имя на сервере).

    С технической точки зрения, на самом деле надо использовать команду user your_user name_at_your_ISP для PAP, однако программа pppd может использовать это имя в качестве имени пользователя, если оно требуется для PAP. Преимущество использования опции name в том, что она применима и к протоколу CHAP.

    Поскольку протокол PAP предназначен для опознавания компьютеров, с технической точки зрения требуется также указать имя удаленного компьютера. Однако, поскольку в большинстве случаев используется один сервер, в файле с секретным ключом можно использовать для имени удаленного компьютера шаблон » * «.

    Файл /etc/ppp/pap-secrets устроен следующим образом:

    Четыре поля в файле разделены пробелами; последнее поле может быть пустым (для динамического и, возможно, статического назначения IP-адреса сервером).

    Пусть провайдер предоставил имя пользователя fred и пароль flintstone . Значение fred для опции name будет занесено в файл /etc/ppp/options , а файл /etc/ppp/pap-secrets будет выглядеть так:

    В данном файле указывается, что клиентский компьютер по имени fred (это имя будет использоваться программой pppd , хотя настоящее имя компьютера может быть иным) с каждым сервером будет использовать пароль (секретный ключ) flintstone .

    Заметим, что указывать IP-адрес клиента не требуется, если только сервер не требует, чтобы статический IP-адрес клиента обязательно указывался. Иначе, даже если адрес будет указан, для большинства PPP-серверов это не будет работать, так как они (по соображениям безопасности) не позволяют клиентам указывает те IP-адреса, которые им будут даны.

    Процедура требует, чтобы опознавание было двусторонним, т.е. чтобы не только сервер опознавал клиента, но и клиент опознавал сервер.

    Допустим, что имя клиентского компьютера fred , а имя сервера barney . Тогда клиент в файле /etc/ppp/options.ttySx должен указать значение опций name и remotename соответственно fred и barney , а сервер наоборот: barney и fred .

    На компьютере fred файл /etc/chap-secrets будет выглядеть так: а на компьютере barney :

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

    Скрипт для связи с опознаванием по PAP/CHAP.

    Если сервер провайдера использует PAP/CHAP, то диалоговый скрипт выглядит гораздо проще. Все, что должен делать этот скрипт, это набрать номер, подождать соединения и передать управление для входа в систему программе pppd .

    Как и раньше, протоколирование сообщений можно включить опцией -d программы pppd . Это эквивалентно опции ‘debug’.

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

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

    Проверка работы скрипта.

    Для проверки работы откройте новый Xterm как root (если используется X Window System), или откройте новую виртуальную консоль. В этом новом сеансе надо ввести команду: Во многих системах протокол помещается именно в файл /var/log/messages . Если в данной системе для этого используется файл с другим именем, то команду, приведенную выше, надо соответственно изменить.

    В первом окне (или с первой виртуальной консоли) надо ввести команду: (если имя отредактированного скрипта /usr/sbin/ppp-on не было изменено).

    Если этот скрипт не запускается в фоновом режиме путем приписывания символа & в конце команды, то приглашение консоли (терминала) пропадет до тех пор, пока программы PPP не закончат работу (до завершения связи).

    После этого можно переключиться в окно (консоль), в котором будет вестись наблюдение за протоколом системы (system log).

    6.2.8 Завершение PPP-соединения.

    После того, как работа с PPP-связью завершена, ее надо завершить стандартной командой ppp-off (это может сделать пользователь root или пользователь группы ppp ).

    6.2.9 Наиболее распространенные проблемы с соединением.

    Одна проблема может заключаться в том, что многие провайдеры поддерживают только те пакеты программного обеспечения, которые они предоставляют новым пользователям сервера. Обычно эти программы предназначены для операционной системы Microsoft Windows (и многие службы технической поддержки ничего не знают о системах UNIX и Linux). Так что можно рассчитывать на весьма ограниченную помощь провайдера.

    Можно, разумеется, оказать частную услугу работникам технической поддержки, познакомив их с системой Linux (они могут иметь начальное представление о системе UNIX из работы в Интернете), которую они могут установить на собственных домашних компьютерах.

    Проблемы с адресами.

    Итак, PPP-соединение установлено и работает, и можно получить отклик от PPP-сервера командой ping , указав в качестве IP-адреса второй (удаленный) IP-адрес, выданный командой ifconfig ppp0 .

    Прежде всего, следует попытаться указать команде ping те IP-адреса, которые указаны в файле /etc/resolv.conf IP-адресами серверов имен. Если серверы откликаются и их IP-адреса отличны от IP-адреса сервера, то должна иметься возможность установить связь через сервер с внешним миром. Попробуйте задать в качестве аргумента команды ping полное имя сервера провайдера: (в эту команду надо подставить нужное имя). Если это не сработало, то имеются проблемы с разрешением имен. Возможно, имеется опечатка в файле /etc/resolv.conf , и его нужно тщательно сверить с образцом, приведенном в разделе 6.1.1.

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

    Если на команду ping не дают отклики серверы имен провайдера, то они могут быть выключены (об этом можно узнать по телефону), или имеются проблемы с маршрутами на сервере.

    Одной из возможностей может быть та, когда на сервере стоит система Linux, где среди опций ядра системы не указано перенаправление сообщений в Интернет-протоколах (IP forwarding)!

    Поиск ошибок при неудачной попытке установить соединение.

    Причин неудачи при соединении может быть много (ошибки в работе диалогового скрипта, сильные шумы в телефонных линиях и т.п.). Поэтому при неудачах надо исследовать системные протоколы.

    Весьма распространена ситуация, когда ядро системы Linux откомпилировано и в него включены функции поддержки PPP, но при запуске программы pppd ядро выдает сообщение, что поддержки PPP нет. Для этого имеется целый набор возможных причин.

    • Загружено не новое, а старое ядро без поддержки PPP.
    • Модули поддержки PPP откомпилированы, но не установлены.
    • Ожидается, что модули будут загружаться автоматически, однако это не так.
    • Используется не та версия PPP, которая нужна для данной версии ядра.
    • pppd запускается не пользователем root .
    • Имеется опечатка в стартовых скриптах.
    • Вход в систему сервера осуществляется неправильно.
    • Не запускается протокол PPP на сервере.
    • Процесс PPP на сервере начинается слишком медленно.
    • Не установлен маршрут по умолчанию.

    Наилучшим средством решения проблем будет обратиться к документу PPP FAQ (который действительно представляет собой набор вопросов и ответов). Это весьма полезный документ, и там наверняка есть ответы на все важные вопросы. Скорее всего, если там нет ответа на конкретный вопрос, то проблема не связана с протоколом PPP!

    Ничего не получается.

    Если ничто не помогает наладить PPP-соединение, следует вернуться к началу этой главы и проверить все с начала и в соответствии с выдачей в файлах системных протоколов, созданных командами chat -v и pppd -d .

    Следует также обратиться к документации по протоколу PPP, к документу PPP FAQ, а также к другим указанным в этом разделе источникам!

    Если проблема остается, можно обратиться за помощью в телеконференции comp.os.linux.misc и comp.os.linux.networking , а также в comp.protocols.ppp . Эти телеконференции часто посещают специалисты, которые могут оказать помощь.

    Если принято решение искать помощь в системе Usenet, не следует посылать очень длинные сообщения, содержащие системные протоколы, поскольку это перегружает сеть. Более продуктивно будет описать проблему словами и, возможно, включить несколько строк выдачи (объемом не более одного экрана).

    Источник

    Читайте также:  Создание загрузочной флешки с windows для bootcamp
    Оцените статью