Подробное руководство по PPP
Пред. | Глава 3. Конфигурирование PPP-соединения | След.

# 3.2. Создание собственных конфигурационных файлов PPP

По умолчанию, в процессе установки FreeBSD создается несколько примеров конфигурационных файлов в каталогах `/etc/ppp` и `/usr/share/examples/ppp`. Пожалуйста выберите время для ознакомления с этими файлами; они были взяты с работающих систем и полное представление об особенностях и возможностях программы PPP.

Мы настоятельно рекомендуем Вам изучить эти файлы и использовать их при настройке собственной конфигурации по мере необходимости.

Более подробную информацию о программе `ppp` Вы можете получить, прочитав man-страницу справочного руководства по ppp:

    # man ppp

Более подробную информацию о языке скриптов `chat`, используемого программой PPP, Вы можете получить, прочитав man-страницу справочного руководства по chat:

    # man chat

В этом разделе описано рекомендуемое содержание конфигурационных файлов программы PPP.

## 3.2.1. Файл '`/etc/ppp/ppp.conf`'

В файле '`/etc/ppp/ppp.conf`' содержится информация и настройки, необходимые для установки PPP-соединения. В этом файле может содержаться более одной конфигурации. Более детальное описание содержания и синтаксиса этого файла Вы можете получить в Руководстве по FreeBSD.

Этот раздел описывает только минимальную конфигурацию для получения нормального "рабочего" соединения.

Ниже приведен пример файла /etc/ppp/ppp.conf, который будет использоваться для обеспечения Интернет-шлюза для нашей локальной сети:

> Замечание: Полное описание синтаксиса для `/etc/ppp/ppp.conf` Вы можете найти в странице Справочника ppp(8). В частности обратите внимание, что все строки которые не являются метками заканчивающимися двоеточием (например `default:`, `interactive:`), или командой начинающейся с ''!'' (например `!include`), или комментарием обязаны иметь отступ в начале строки (indented)!

    ###############################################################################
    # Конфигурационный файл PPP ('/etc/ppp/ppp.conf')
    #
    # Стандартные установки; они всегда выполняются при запуске программы PPP
    # и применяются для конфигурации всех систем.
    ###############################################################################
    default:
      set device /dev/cuaa0
      set speed 57600
      disable pred1
      deny pred1
      disable lqr
      deny lqr
      set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0M0 OK-AT-OK\\dATDT\\T TIMEOUT 40 CONNECT"
      set redial 3 10
    ###############################################################################
    #
    # Для интерактивного режима используйте следующую конфигурацию:
    #
    # Формат вызова `ppp -alias interactive'
    #
    ###############################################################################
    interactive:
      set authname Ваш_логин_на_удаленную_систему
      set authkey Ваш_пароль_на_удаленную_систему
      set phone Телефон_для_вызова_системы
      set timeout 300
      set openmode active
      accept chap
    ###############################################################################
    #
    # Для режима с дозвоном по необходимости (или автоматического)
    # используйте следующую конфигурацию:
    #
    # Формат вызова: `ppp -auto -alias demand'
    #
    ###############################################################################
    demand:
      set authname Ваш_логин_на_удаленную_систему
      set authkey Ваш_пароль_на_удаленную_систему
      set phone Телефон_для_вызова_системы
      set timeout 300
      set openmode active
      accept chap
      set ifaddr 127.1.1.1/0 127.2.2.2/0 255.255.255.0
      add 0 0 127.2.2.2
    ###############################################################################
    # Конец файла /etc/ppp/ppp.conf

Этот файл, взятый без изменений с работающей системы, содержит три взаимосвязанные конфигурационные секции:

### 3.2.1.1. "Стандартная" секция

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

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

Ниже приведено описание каждой строки в "стандартной" секции примера файла '`/etc/ppp/ppp.conf`':

    set device /dev/cuaa0

Эта строка сообщает программе PPP, что ей необходимо использовать первый последовательный порт. В системе FreeBSD устройство '`/dev/cuaa0`' - это тот же самый порт, который известен под именем "COM1:" в системах DOS, Windows, Windows 95 и т.д...

Если Ваш модем подключен к порту COM2:, то необходимо указать значение '`/dev/cuaa1`, если COM3: - '`/dev/cuaa2`'.

    set speed 57600

Эта строка устанавливает скорость передачи и приема для соединения между последовательным портом и модемом. И хотя модем, используемый в данной конфигурации, имеет максимальную скорость 28.8К, устанавливая эту величину в значение 57600 мы позволим последовательному соединению работать на более высокой скорости, которая будет соответствовать высокой пропускной способности канала, в результате использования сжатия данных, встроенного в последние модели модемов.

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

    disable pred1
    deny pred1

Эти две строки выключают режим сжатия "CCP/Predictor type 1", встроенный в программу PPP. Текущая версия `ppp` поддерживает сжатие данных в соответствии с требованиями стандартов сети Интернет. К сожалению, многие Интернет-провайдеры используют оборудование, которое не поддерживает эту возможность. Большинство модемов выполняют сжатие "на лету", однако Вы не потеряете многого в производительности системы, выключив этот режим на своем узле и запретив удаленному узлу принуждать Вас к его поддержке.

    disable lqr
    deny lqr

Эти две строки контролируют функции "отчета о качестве линии", которые являются частью полной спецификации протокола Point-to-Point (PPP). (За более подробной информацией обратитесь к RFC-1989.)

Первая строка "disable lqr" сообщает программе PPP не пытаться сообщать о состоянии качества линии устройству на удаленном узле.

Вторая строка "deny lqr" сообщает программе PPP запретить любые попытки удаленного узла сообщать о качестве линии.

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

    set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATE1Q0M0
    OK-AT-OK\\dATDT\\T TIMEOUT 40 CONNECT"

ПРИМЕЧАНИЕ: (Этот оператор необходимо ввести одной строкой; все переносы строк, которые Вы встретите в этом документе должны игнорироваться.)

Эта строка сообщает программе PPP как работать с модемом и определяет некоторые устаревшие директивы для его управления:

- Попытки дозвона ошибочны, если модем вернул код "BUSY" ("ЗАНЯТО"),

- Попытки дозвона ошибочны, если модем вернул код "NO CARRIER" ("НЕТ НЕСУЩЕЙ"),

- Программа PPP ожидает завершение каждого последующего события в течение 5-секундного интервала:

  - Первоначально программа PPP не ожидает от модема никаких событий (определяется выше указанием символов \"\" в операторе dial)

  - Программа будет посылать модему строку инициализации "ATE1Q0M0" и ждать ответа "OK". Если ответ не будет получен, то программа будет вынуждена послать на модем команду "AT" и снова ожидать ответа "OK",

  - Перед посылкой в модем строки дозвона программа вынуждена ждать около 1 секунды (определено символами "\\d" в операторе dial). Часть выражения "ATDT" есть стандартный модемный префикс для дозвона с использованием тонового набора номера; если Ваша телефонная линия не поддерживает тоновый набора, замените "ATDT" на "ATDP". Символы "\\T" определяют место расположения для реального номера телефона (который будет автоматически вставляться из параметра "set dial").

- И наконец, перед тем как закончится максимальный тайм-аут в 40 секунд, программа PPP ожидает "увидеть" код "CONNECT"("СОЕДИНЕНИЕ"), возвращаемый модемом.

Ошибка в любой точке этого "диалога" будет интерпретироваться как ошибка дозвона и программа PPP откажет в соединении.

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

    set redial 3 10

Эта строка определяет количество попыток дозвона (максимум 3), используемых программой PPP в случае, если соединение не может быть установлено сразу. Интервал между попытками равен 10 секундам.

### 3.2.1.2. "Интерактивная" секция

'Интерактивная:' секция содержит параметры и настройки, используемые для установки "интерактивных" PPP-сессий с определенными удаленными системами. В настройки этой секции будут автоматически добавлены строки, находящиеся в "стандартной" секции.

В примере, используемом в этой секции данного руководства подразумевается, что Вы будете соединяться с удаленной системой, которая "понимает" как идентифицировать пользователя без использования языка скриптов. То есть, в этом примере используется протокол CHAP для установки соединения.

Считается, что если дозвонщик системы Windows '95 может установить соединение простым нажатием кнопки "Подключиться", то такой пример конфигурации должен работать на "ура".

С другой стороны, когда Вы соединяетесь с Вашим Интернет-провайдером, используя механизм дозвона Microsoft Windows '95, Вам необходимо использовать инструментарий создания скриптов дозвона из пакета Microsoft Plus! или Вы должны включить флажок "Вывести окно терминала после соединения" в свойствах соединения для Windows '95, а затем Вам необходимо заглянуть в примеры конфигурационных файлов PPP и справочную информацию по ppp, для того, чтобы написать скрипты "ожидание / ответ" для установки соединения с Вашим Интернет-провайдером. Команда "set login" используется как раз для этой цели.

А еще лучше, найдите такого Интернет-провайдера, который знает как обеспечить PAP- или CHAP-идентификацию!

Примеры конфигурации, показанные здесь были успешно использованы для соединения с:

- Various Shiva LanRovers

- IBM Network (http://www.ibm.net)

- AT&T WorldNet (http://att.com/worldnet)

- Erol's (http://www.erols.com)

Ниже приведено описание каждой строки в "интерактивной" секции примера файла '`/etc/ppp/ppp.conf`':

    set authname Ваш_логин_на_удаленную_систему

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

    set authkey Ваш_пароль_на_удаленную_систему

Эта строка определяет пароль для регистрации на удаленной системе.

    set phone Телефон_для_вызова_системы

Эта строка определяет номер телефона, по которому будет производиться вызов удаленной системы. Если у Вас установлена своя мини-АТС перед номером телефона необходимо указать цифру '9'.

    set timeout 300

Эта строка сообщает программе PPP, чтобы она автоматически "вешала" трубку, если в течение 300 секунд (5 минут) по каналу не производится передача данных. Вы можете указать необходимый интервал, который удовлетворяет Вашим требованиям.

    set openmode active

Эта строка сообщает программе PPP о том, что как только модемы произведут соединение, она должна немедленно пытаться произвести настройку соединения. Некоторые удаленные узлы делают это автоматически, некоторые нет. Установка этого параметра инструктирует Вашу сторону соединения взять на себя инициативу и пытаться настроить соединение.

    accept chap

Эта строка сообщает программе PPP использовать "Challenge-Handshake Authentication Protocol" ("протокол аутентификации запрос-рукопожатие") для Вашей аутентификации. Значения идентификатора пользователя и пароля, передаваемые между локальной и удаленной стороной, берутся из полей 'authname' и 'authkey', указанных выше.

### 3.2.1.3. Секция "запрос"

"Demand"-секция содержит параметры и настройки, используемые для установки PPP-соединения "с вызовом по требованию" с определенной удаленной системой. Настройки этой секции также будут включать строки из "стандартной" секции, которые будут включены сюда автоматически.

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

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

Ниже приведено описание каждой строки секции "demand" в примере файла '`/etc/ppp/ppp.conf`':

    set authname Ваш_логин_на_удаленную_систему

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

    set authkey Ваш_пароль_на_удаленную_систему

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

    set phone Телефон_для_вызова_удаленной_системы

Эта строка определяет номер телефона, по которому будет производиться вызов удаленной системы.

    set timeout 300

Эта строка сообщает программе PPP, чтобы она автоматически "вешала" трубку, если в течение 300 секунд (5 минут) по каналу не производится передача данных. Вы можете указать необходимый интервал, который удовлетворяет Вашим требованиям.

    set openmode active

Эта строка сообщает программе PPP о том, что как только модемы произведут соединение, она должна немедленно пытаться произвести настройку соединения. Некоторые удаленные узлы делают это автоматически, некоторые нет. Установка этого параметра инструктирует Вашу сторону соединения взять на себя инициативу и пытаться настроить соединение.

    accept chap

Эта строка сообщает программе PPP использовать "Challenge-Handshake Authentication Protocol" ("протокол аутентификации запрос-рукопожатие") для Вашей аутентификации. Значения идентификатора пользователя и пароля, передаваемые между локальной и удаленной стороной, берутся из полей 'authname' и 'authkey', указанных выше.

    set ifaddr 127.1.1.1/0 127.2.2.2/0 255.255.255.0

Эта команда устанавливает пару "фальшивых" IP-адресов для локальной и удаленной сторон PPP-соединения. Она инструктирует программу PPP создать IP-адрес 127.1.1.1 для локальной стороны 'tun0' (туннельного) устройства и 127.2.2.2 для удаленной стороны. Добавление '`/0`' к каждому адресу сообщает программе PPP, что в этих адресах нет значимых битов и они могут (и фактически должны!) быть переданы между локальной и удаленной системами, когда соединение установилось. Строка 255.255.255.0 сообщает программе PPP какую маску подсети применять для этих псевдо-интерфейсов.

Запомните, мы считаем, что Ваш Интернет-провайдер предоставил Вам IP-адреса для обеих сторон соединения! Если Ваш Интернет-провайдер присвоил Вам определенный IP-адрес, то Вы обязаны при конфигурации Вашей системы ввести его здесь вместо адреса 127.1.1.1.

К слову, если Ваш Интернет-провайдер сообщил Вам определенный IP-адрес, который он использует на своей стороне, Вы обязаны ввести этот адрес здесь вместо адреса 127.2.2.2.

В обоих случаях, возможно хорошей идеей будет оставить символы '`/0`' в конце каждого адреса. Это дает программе PPP возможность изменять адрес(а) соединения, если это будет необходимо.

    add 0 0 127.2.2.2

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

Примечание: Если Вы используйте определенный Вашим Интернет-провайдером адрес вместо 127.2.2.2 в предыдущей строке, используйте этот же номер и здесь, вместо 127.2.2.2.

Добавив этот "фальшивый" маршрут для IP-трафика, программа PPP получает возможность в момент простоя:

- Принимать пакеты, которые FreeBSD-система уже не знает куда отправлять,

- Устанавливать соединение с Интернет-провайдером "на лету",

- Переконфигурировать IP-адреса локальной и удаленной сторон соединения,

- Отправлять пакеты между Вашей рабочей станцией и Интернет-провайдером

автоматически!

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

## 3.2.2. Файл '`/etc/ppp/ppp.linkup`'

Другие файлы, необходимые для полной конфигурации PPP находятся в '`/etc/ppp/ppp.linkup`'. Этот файл содержит инструкции для функционирования программы PPP после того как коммутируемое соединение будет установлено.

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

Демонстрационный файл '`/etc/ppp/ppp.linkup`':

    #########################################################################=

    # Файл установки соединений PPP ('/etc/ppp/ppp.linkup')
    #
    #  Этот файл обрабатывается после того, как PPP установит сетевое соединение.
    #
    #  Обработка этого файла производится в следующем порядке.
    #
    #  1) Сначала, производится поиск присвоенного нам IP-адреса и выполняются
    #     связанные с этим команды.
    #
    #  2) Если IP-адрес не найден, то производится поиск имени, определенного
    #     во время запуска PPP и выполняются связанные с этим команды.
    #
    #  3) Если не найдено ничего из выше перечисленного выше, то выполняются
    #     команды 'MYADDR:'.
    #
    ##############################################################################=
    #
    # Эта секция используется в конфигурации "demand" в файле /etc/ppp/ppp.conf:
    demand:
     delete ALL
     add 0 0 HISADDR
    #
    # Все другие конфигурации в файле /etc/ppp/ppp.conf используют это:
    #
    MYADDR:
     add 0 0 HISADDR
    ##############################################################################
    # Конец файла /etc/ppp/ppp.linkup

Заметьте, что секция, имеющая название "demand:" в этом файле идентична имени конфигурации, используемому в файле '`/etc/ppp/ppp.conf`'. Эта секция сообщает программе PPP о том, что как только соединение будет установлено, с использованием этой конфигурации, она должна:

1. Удалить любую информацию об IP-маршрутизации, которую создала программа PPP

2. Добавить маршрут по умолчанию, указывающий на реальный IP-адрес удаленной стороны.

Критичным моментом является то, что те конфигурации в файле '`/etc/ppp/ppp.conf`', которые включают операторы 'set ifaddr' и 'add 0 0' (т.e. настройки, используемые для конфигурацию "дозвон при необходимости") выполняют команды "delete ALL" и "add 0 0 HISADDR" в файле `/etc/ppp/ppp.linkup`.

Это механизм, который управляет действительной конфигурацией соединения.

Все конфигурации явно не указанные в файле `/etc/ppp/ppp.linkup` будут использовать все команды, указанные в секции "MYADDR:" этого файла. Эту секцию будут считывать конфигурации без "дозвона при необходимости" (такие как в нашем "интерактивном:" примера). Эта секция просто добавляет маршрут по умолчанию на реальный адрес Интернет-провайдера (на удаленной стороне).

Пред. | Начало | След.
Конфигурирование PPP-соединения | Уровень выше | IP-совмещение

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.