Глава 30. PPP

Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.

30.1. Обзор

FreeBSD поддерживает протокол Point-to-Point (PPP), который может использоваться для установки сетевого или интернет-соединения с помощью модема. В этой главе описывается, как настроить услуги связи на основе модема в FreeBSD.

Прочитав эту главу, вы будете знать:

  • Как настроить, использовать и устранять неполадки PPP-подключения.

  • Как настроить PPP over Ethernet (PPPoE).

  • Как настроить PPP over ATM (PPPoA).

Прежде чем читать эту главу, вы должны:

  • Знать основные термины и понятия сетевых технологий.

  • Понимать основы и назначение коммутируемого соединения и PPP.

30.2. Настройка PPP

FreeBSD предоставляет встроенную поддержку для управления коммутируемыми PPP-соединениями с помощью ppp(8). Стандартное ядро FreeBSD поддерживает tun, который используется для взаимодействия с модемным оборудованием. Настройка выполняется путём редактирования как минимум одного конфигурационного файла, и предоставляются примеры таких файлов. Наконец, ppp используется для запуска и управления соединениями.

Для использования PPP-соединения необходимы следующие компоненты:

  • Учетная запись для коммутируемого доступа у поставщика интернет-услуг (Internet Service Provider — ISP).

  • Модем для коммутируемого доступа.

  • Номер телефона для дозвона к ISP.

  • Имя пользователя и пароль, назначенные ISP.

  • IP-адрес одного или нескольких DNS-серверов. Обычно эти адреса предоставляет интернет-провайдер. Если он этого не сделал, FreeBSD можно настроить на использование согласования DNS.

Если отсутствует какая-либо необходимая информация, обратитесь к интернет-провайдеру.

Следующая информация может быть предоставлена интернет-провайдером, но не является обязательной:

  • IP-адрес шлюза по умолчанию. Если эта информация неизвестна, интернет-провайдер автоматически предоставит правильное значение во время настройки соединения. При настройке PPP в FreeBSD этот адрес обозначается как HISADDR.

  • Маска подсети. Если провайдер не предоставил ее, в конфигурационном файле ppp(8) будет использовано значение 255.255.255.255. *

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

Оставшаяся часть этого раздела демонстрирует, как настроить FreeBSD для распространённых сценариев PPP-подключения. Необходимый конфигурационный файл — это /etc/ppp/ppp.conf, а дополнительные файлы и примеры доступны в /usr/share/examples/ppp/.

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

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

30.2.1. Базовая конфигурация

Для настройки PPP-соединения сначала отредактируйте файл /etc/ppp/ppp.conf, указав данные для подключения к интернет-провайдеру. Этот файл описывается следующим образом:

1     default:
2       set log Phase Chat LCP IPCP CCP tun command
3       ident user-ppp VERSION
4       set device /dev/cuau0
5       set speed 115200
6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8       set timeout 180
9       enable dns
10
11    provider:
12      set phone "(123) 456 7890"
13      set authname foo
14      set authkey bar
15      set timeout 300
16      set ifaddr x.x.x.x/0 y.y.y.y/0 255.255.255.255 0.0.0.0
17      add default HISADDR
Строка 1

Определяет запись default. Команды в этой записи (строки со 2 по 9) выполняются автоматически при запуске ppp.

Строка 2

Включает подробные параметры журналирования для тестирования соединения. Как только конфигурация начнёт работать удовлетворительно, эту строку следует сократить до:

set log phase tun
Строка 3

Отображает версию ppp(8) для PPP-программного обеспечения, работающего на другой стороне соединения.

Строка 4

Определяет устройство, к которому подключен модем, где COM1 соответствует /dev/cuau0, а COM2 соответствует /dev/cuau1.

Строка 5

Устанавливает скорость соединения. Если 115200 не работает на старом модеме, попробуйте 38400.

Строки 6 и 7

Строка набора, записанная в синтаксисе expect-send. Дополнительную информацию смотрите в chat(8).

Обратите внимание, что эта команда продолжается на следующей строке для удобства чтения. Любая команда в ppp.conf может быть записана таким образом, если последним символом в строке является \.

Строка 8

Устанавливает время ожидания бездействия соединения в секундах.

Строка 9

Указывает узлу подтвердить настройки DNS. Если в локальной сети работает собственный DNS-сервер, эту строку следует закомментировать, добавив # в начале строки, или удалить.

Строка 10

Пустая строка для удобочитаемости. Пустые строки игнорируются ppp(8).

Строка 11

Определяет запись с именем provider. Это имя можно изменить на название ISP, чтобы использовать команду load ISP для установки соединения.

Строка 12

Используйте номер телефона вашего ISP. Несколько номеров можно указать, используя в качестве разделителя символ двоеточия (:) или вертикальной черты (|). Для перебора номеров используйте двоеточие. Чтобы всегда сначала пытаться дозвониться по первому номеру и пробовать другие номера только в случае неудачи с первым, используйте символ вертикальной черты. Всегда заключайте весь набор номеров в кавычки ("), чтобы избежать сбоев при наборе.

Строки 13 и 14

Используйте имя пользователя и пароль для ISP.

Строка 15

Устанавливает таймаут неактивности по умолчанию для соединения в секундах. В данном примере соединение будет автоматически закрыто после 300 секунд бездействия. Чтобы отключить таймаут, установите значение в ноль.

Строка 16

Устанавливает адреса интерфейсов. Используемые значения зависят от того, получен ли статический IP-адрес от провайдера или он динамически назначается при подключении.

Если интернет-провайдер выделил статический IP-адрес и шлюз по умолчанию, замените x.x.x.x на статический IP-адрес, а y.y.y.y — на IP-адрес шлюза по умолчанию. Если провайдер предоставил только статический IP-адрес без адреса шлюза, замените y.y.y.y на 10.0.0.2/0.

Если IP-адрес изменяется при каждом подключении, измените эту строку на следующее значение. Это указывает ppp(8) использовать протокол IP Configuration Protocol (IPCP) для согласования динамического IP-адреса:

set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 0.0.0.0
Line 17

Оставьте эту строку как есть, так как она добавляет маршрут по умолчанию к шлюзу. HISADDR будет автоматически заменён на адрес шлюза, указанный в строке 16. Важно, чтобы эта строка располагалась после строки 16.

В зависимости от того, запускается ли ppp(8) вручную или автоматически, может потребоваться создать файл /etc/ppp/ppp.linkup со следующим содержимым. Этот файл необходим при запуске ppp в режиме -auto. Он используется после установки соединения. На этом этапе IP-адрес уже будет назначен, и можно добавить записи в таблицу маршрутизации. При создании этого файла убедитесь, что значение provider совпадает с указанным в строке 11 файла ppp.conf.

provider:
      add default HISADDR

Этот файл также необходим, когда адрес шлюза по умолчанию "угадывается" в конфигурации статического IP-адреса. В этом случае удалите строку 17 из ppp.conf и создайте файл /etc/ppp/ppp.linkup с указанными двумя строками. Дополнительные примеры для этого файла можно найти в /usr/share/examples/ppp/.

По умолчанию ppp должен запускаться от имени root. Чтобы изменить это поведение, добавьте учётную запись пользователя, который должен запускать ppp, в группу network в файле /etc/group.

Затем предоставьте пользователю доступ к одной или нескольким записям в /etc/ppp/ppp.conf с помощью allow. Например, чтобы дать fred и mary разрешение только на запись provider:, добавьте следующую строку в раздел provider::

allow users fred mary

Чтобы предоставить указанным пользователям доступ ко всем записям, поместите эту строку в раздел default вместо этого.

30.2.2. Расширенная Настройка

Возможно настроить PPP для предоставления адресов DNS- и NetBIOS-серверов по запросу.

Для включения этих расширений в PPP версии 1.x можно добавить следующие строки в соответствующую секцию файла /etc/ppp/ppp.conf.

enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5

А для PPP версии 2 и выше:

accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5

Это сообщит клиентам адреса основного и дополнительного серверов имен, а также хост сервера имен NetBIOS.

В версии 2 и выше, если строка set dns опущена, PPP будет использовать значения, указанные в /etc/resolv.conf.

30.2.2.1. Проверка подлинности (аутентификация) PAP и CHAP

Некоторые интернет-провайдеры настраивают свои системы таким образом, что проверка подлинности пользователя при подключении выполняется с использованием механизмов PAP или CHAP. В таком случае провайдер не будет выводить приглашение login: при соединении, а сразу начнёт работу по протоколу PPP.

PAP менее безопасен, чем CHAP, но безопасность обычно не является проблемой, так как пароли, хотя и передаются в открытом виде с PAP, передаются только по последовательной линии. У взломщиков мало возможностей для "прослушивания".

Необходимо внести следующие изменения:

13      set authname MyUserName
14      set authkey MyPassword
15      set login
Line 13

Эта строка указывает имя пользователя PAP/CHAP. Вставьте правильное значение для MyUserName.

Line 14

Эта строка указывает пароль PAP/CHAP. Вставьте правильное значение вместо MyPassword. Возможно, вы захотите добавить дополнительную строку, например:

16      accept PAP

или

16      accept CHAP

чтобы сделать это намерение очевидным, но PAP и CHAP по умолчанию принимаются оба.

Строка 15

Поставщик интернет-услуг обычно не требует входа на сервер при использовании PAP или CHAP. Поэтому отключите строку set login.

30.2.2.2. Использование возможности трансляции сетевых адресов (NAT) в PPP

PPP обладает возможностью использовать внутренний NAT без функций перенаправления ядра. Эту функциональность можно включить следующей строкой в /etc/ppp/ppp.conf:

nat enable yes

Альтернативно, NAT может быть включён с помощью параметра командной строки -nat. Также существует параметр /etc/rc.conf с именем ppp_nat, который включён по умолчанию.

При использовании этой функции может быть полезно включить следующие параметры в файле /etc/ppp/ppp.conf для переадресации входящих соединений:

nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http http

или вообще не доверять внешнему миру

nat deny_incoming yes

30.2.3. Окончательная конфигурация системы

В то время как ppp уже настроен, некоторые изменения всё ещё необходимо внести в /etc/rc.conf.

Посмотрев файл с начала до конца, убедитесь, что строка hostname= установлена:

hostname="foo.example.com"

Если интернет-провайдер предоставил статический IP-адрес и имя, используйте это имя в качестве имени хоста.

Прповерьте переменную network_interfaces. Чтобы настроить систему для дозвона к интернет-провайдеру по требованию, убедитесь, что устройство tun0 добавлено в список, в противном случае удалите его.

network_interfaces="lo0 tun0"
ifconfig_tun0=

Переменная ifconfig_tun0 должна быть пустой, а файл с именем /etc/start_if.tun0 должен быть создан. Этот файл должен содержать строку:

ppp -auto mysystem

Этот скрипт выполняется во время настройки сети, запуская демон ppp в автоматическом режиме. Если данный компьютер выступает в качестве шлюза, рекомендуется включить опцию -alias. Дополнительные сведения см. на соответствующей странице Справочника.

Убедитесь, что программа маршрутизатора отключена, проверив, что в /etc/rc.conf следующая строка установлена в NO:

router_enable="NO"

Важно, чтобы демон routed не запускался, так как routed имеет тенденцию удалять записи по умолчанию из таблицы маршрутизации , созданные ppp.

Вероятно, стоит убедиться, что строка sendmail_flags не содержит опцию -q, иначе sendmail будет периодически пытаться выполнить сетевой запрос, что может привести к нежелательному дозвону. Можно попробовать:

sendmail_flags="-bd"

Недостаток в том, что sendmail вынужден повторно проверять очередь почты каждый раз при установке ppp-соединения. Для автоматизации этого процесса добавьте !bg в файл ppp.linkup:

1     provider:
2       delete ALL
3       add 0 0 HISADDR
4       !bg sendmail -bd -q30m

Альтернативный вариант — настроить "dfilter" для блокировки SMTP-трафика. Дополнительные сведения см. в примерных файлах.

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

Осталось только перезагрузить машину. После перезагрузки введите:

# ppp

затем dial provider для запуска сеанса PPP или, чтобы настроить ppp для автоматического установления сеансов при наличии исходящего трафика и отсутствии файла start_if.tun0, введите:

# ppp -auto provider

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

set server /var/run/ppp-tun%d DiagnosticPassword 0177

Это заставит PPP прослушивать указанный сокет домена UNIX®, запрашивая у клиентов указанный пароль перед предоставлением доступа. Символ %d в имени заменяется на номер устройства tun, который используется.

После настройки сокета программа pppctl(8) может использоваться в скриптах для управления работающим приложением.

30.2.5. Настройка сервисов для входящих звонков

Входящие соединения по модему предоставляет хорошее описание настройки услуг дозвона с использованием getty(8).

Альтернативой getty является порт comms/mgetty+sendfax, более интеллектуальная версия getty, разработанная для работы с коммутируемыми линиями.

Преимущество использования mgetty заключается в том, что он активно общается с модемами, то есть если порт выключен в /etc/ttys, то модем не будет отвечать на звонки.

Поздние версии mgetty (начиная с 0.99beta) также поддерживают автоматическое определение PPP-потоков, что позволяет клиентам получать доступ к серверу без использования скриптов.

См. http://mgetty.greenie.net/doc/mgetty_toc.html для получения дополнительной информации о mgetty.

По умолчанию порт comms/mgetty+sendfax поставляется с включённой опцией AUTO_PPP, которая позволяет mgetty обнаруживать фазу LCP PPP-соединений и автоматически запускать оболочку ppp. Однако, поскольку стандартная последовательность ввода логина и пароля не выполняется, необходимо аутентифицировать пользователей с помощью PAP или CHAP.

Этот раздел предполагает, что пользователь успешно скомпилировал и установил порт comms/mgetty+sendfax в своей системе.

Убедитесь, что в файле /usr/local/etc/mgetty+sendfax/login.config присутствует следующее:

/AutoPPP/ -     - /etc/ppp/ppp-pap-dialup

Это указывает mgetty запускать ppp-pap-dialup для обнаруженных PPP-соединений.

Создайте исполняемый файл с именем /etc/ppp/ppp-pap-dialup, содержащий следующее:

#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENT

Для каждой включенной коммутируемой линии в /etc/ttys создайте соответствующую запись в /etc/ppp/ppp.conf. Это будет прекрасно сосуществовать с определениями, созданными ранее.

pap:
  enable pap
  set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
  enable proxy

Каждый пользователь, входящий в систему этим методом, должен иметь имя пользователя и пароль в /etc/ppp/ppp.secret. Альтернативно можно добавить следующую опцию для аутентификации пользователей через PAP из /etc/passwd.

enable passwdauth

Для назначения статического IP-адреса некоторым пользователям укажите этот адрес в качестве третьего аргумента в /etc/ppp/ppp.secret. Примеры можно найти в /usr/share/examples/ppp/ppp.secret.sample.

30.3. Устранение неполадок PPP-подключений

В этом разделе рассматриваются некоторые проблемы, которые могут возникнуть при использовании PPP через модемное соединение. Некоторые интернет-провайдеры выводят приглашение ssword, тогда как другие используют password. Если скрипт ppp не настроен соответствующим образом, попытка входа завершится неудачей. Наиболее распространённый способ отладки соединений ppp — это ручное подключение, как описано в данном разделе.

30.3.1. Проверьте файлы устройств

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

device   uart

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

# dmesg | grep uart

Это должно вывести некоторую важную информацию об устройствах uart. Это COM-порты, которые нам нужны. Если модем работает как стандартный последовательный порт, он должен быть указан как uart1 или COM2. Если это так, пересборка ядра не требуется. При сопоставлении, если модем находится на uart1, устройство модема будет /dev/cuau1.

30.3.2. Подключение вручную

Подключение к Интернету с ручным управлением ppp выполняется быстро, просто и является отличным способом для отладки соединения или получения информации о том, как ISP взаимодействует с клиентами ppp. Давайте запустим PPP из командной строки. Обратите внимание, что во всех наших примерах мы будем использовать example в качестве имени хоста машины, на которой работает PPP. Для запуска ppp:

# ppp
ppp ON example> set device /dev/cuau1

Эта вторая команда устанавливает модемное устройство в cuau1.

ppp ON example> set speed 115200

Это устанавливает скорость соединения на 115 200 Кбит/с.

ppp ON example> enable dns

Это указывает ppp настроить резолвер и добавить строки nameserver в /etc/resolv.conf. Если ppp не может определить имя хоста, его можно задать вручную позже.

ppp ON example> term

Это переключает в "терминальный" режим для ручного управления модемом.

deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
at
OK
atdt123456789

Используйте at для инициализации модема, затем используйте atdt и номер провайдера для начала процесса дозвона.

CONNECT

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

ISP Login:myusername

На этом приглашении введите имя пользователя, предоставленное ISP.

ISP Pass:mypassword

На этом запросе введите пароль, предоставленный интернет-провайдером. Как и при входе в FreeBSD, пароль не будет отображаться.

Shell or PPP:ppp

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

Ppp ON example>

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

Ppp ON example>

Мы успешно прошли аутентификацию у нашего провайдера и ожидаем назначенный IP-адрес.

PPP ON example>

Мы согласовали IP-адрес и успешно установили соединение.

PPP ON example>add default HISADDR

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

Если всё прошло хорошо, у нас теперь должно быть активное подключение к Интернету, которое можно перевести в фоновый режим с помощью CTRL+z. Если PPP возвращается к ppp, соединение было потеряно. Это полезно знать, так как показывает статус подключения. Заглавные буквы P обозначают подключение к ISP, а строчные p показывают, что соединение потеряно.

30.3.3. Отладка

Если соединение не может быть установлено, отключите аппаратный поток CTS/RTS с помощью set ctsrts off. Это в основном происходит при подключении к некоторым терминальным серверам с поддержкой PPP, где PPP зависает при попытке записи данных в линию связи и ожидает сигнала Clear To Send (CTS), который может никогда не поступить. При использовании этой опции включите set accmap, так как может потребоваться обойти аппаратную зависимость от передачи определённых символов от конца к концу, чаще всего XON/XOFF. Дополнительную информацию об этой опции и её использовании см. в ppp(8).

Старый модем может потребовать set parity even. По умолчанию четность отключена, но она используется для проверки ошибок с значительным увеличением трафика на старых модемах.

PPP может не вернуться в командный режим, что обычно является ошибкой согласования, когда ISP ожидает начала процесса согласования. В этом случае использование ~p заставит ppp начать отправку информации о конфигурации.

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

ppp ON example> set authname myusername

Где myusername следует заменить на имя пользователя, предоставленное провайдером интернет-услуг.

ppp ON example> set authkey mypassword

Где mypassword следует заменить на пароль, назначенный провайдером.

Если соединение установлено, но не удается найти доменное имя, попробуйте выполнить ping(8) для IP-адреса. Если наблюдается 100% потерь пакетов, вероятно, маршрут по умолчанию не назначен. Убедитесь, что во время подключения был установлен параметр add default HISADDR. Если удается установить соединение с удаленным IP-адресом, возможно, в файл /etc/resolv.conf не добавлен адрес резолвера. Этот файл должен выглядеть следующим образом:

domain example.com
nameserver x.x.x.x
nameserver y.y.y.y

Где x.x.x.x и y.y.y.y следует заменить на IP-адреса DNS-серверов провайдера.

Для настройки syslog(3) для ведения журнала PPP-подключения убедитесь, что следующая строка присутствует в /etc/syslog.conf:

!ppp
*.*     /var/log/ppp.log

30.4. Использование PPP через Ethernet (PPPoE)

Этот раздел описывает, как настроить PPP через Ethernet (PPPoE).

Вот пример рабочего ppp.conf:

default:
  set log Phase tun command # you can add more detailed logging if you wish
  set ifaddr 10.0.0.1/0 10.0.0.2/0

name_of_service_provider:
  set device PPPoE:xl1 # replace xl1 with your Ethernet device
  set authname YOURLOGINNAME
  set authkey YOURPASSWORD
  set dial
  set login
  add default HISADDR

Как root, выполните:

# ppp -ddial name_of_service_provider

Добавьте следующее в /etc/rc.conf:

ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES"	# if you want to enable nat for your local network, otherwise NO
ppp_profile="name_of_service_provider"

30.4.1. Использование тега сервиса PPPoE

Иногда для установки соединения может потребоваться использовать тег сервиса. Теги сервиса используются для различения разных серверов PPPoE, подключённых к определённой сети.

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

В крайнем случае можно попробовать установить пакет или порт net/rr-pppoe. Однако учтите, что это может перепрограммировать ваш модем и сделать его бесполезным, поэтому хорошо подумайте перед этим. Просто установите программу, поставляемую с модемом. Затем откройте меню System в программе. Имя профиля должно быть указано там. Обычно это ISP.

Имя профиля (тег сервиса) будет использоваться в записи конфигурации PPPoE в файле ppp.conf как часть провайдера для set device. Подробности смотрите в ppp(8). Это должно выглядеть так:

set device PPPoE:xl1:ISP

Не забудьте изменить xl1 на соответствующее имя устройства вашей Ethernet-карты.

Не забудьте изменить ISP на профиль, определенный вами ранее.

Для получения дополнительной информации обратитесь к более дешёвому широкополосному доступу с FreeBSD через DSL от Renaud Waldura.

30.4.2. PPPoE с модемом 3Com® HomeConnect™ ADSL Modem Dual Link

Этот модем не соответствует спецификации PPPoE, определённой в RFC 2516.

Чтобы FreeBSD мог взаимодействовать с этим устройством, необходимо установить sysctl. Это можно сделать автоматически при загрузке, изменив файл /etc/sysctl.conf:

net.graph.nonstandard_pppoe=1

или может быть выполнено сразу с помощью команды:

# sysctl net.graph.nonstandard_pppoe=1

К сожалению, поскольку это общесистемная настройка, невозможно одновременно работать с обычным клиентом или сервером PPPoE и модемом 3Com® HomeConnect™ ADSL.

30.5. Использование PPP через ATM (PPPoA)

Следующее описание объясняет, как настроить PPP через ATM (PPPoA). PPPoA — популярный выбор среди европейских провайдеров DSL.

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

Приложение mpd можно использовать для подключения к различным сервисам, в частности к PPTP-сервисам. Его можно установить с помощью пакета net/mpd5 или порта. Многие ADSL-модемы требуют создания PPTP-туннеля между модемом и компьютером.

После установки настройте mpd в соответствии с параметрами провайдера. Порт предоставляет набор примеров конфигурационных файлов, которые хорошо документированы в /usr/local/etc/mpd/. Полное руководство по настройке mpd доступно в формате HTML в /usr/ports/shared/doc/mpd/. Вот пример конфигурации для подключения к ADSL-сервису с помощью mpd. Конфигурация разделена на два файла, первый — mpd.conf:

Этот пример mpd.conf работает только с mpd 4.x.

default:
    load adsl

adsl:
    new -i ng0 adsl adsl
    set bundle authname username (1)
    set bundle password password (2)
    set bundle disable multilink

    set link no pap acfcomp protocomp
    set link disable chap
    set link accept chap
    set link keep-alive 30 10

    set ipcp no vjcomp
    set ipcp ranges 0.0.0.0/0 0.0.0.0/0

    set iface route default
    set iface disable on-demand
    set iface enable proxy-arp
    set iface idle 0

    open
1Имя пользователя для аутентификации у вашего провайдера.
2Пароль, используемый для аутентификации у вашего провайдера.

Информация о соединении или соединениях, которые необходимо установить, находится в файле mpd.links. Пример файла mpd.links, соответствующий приведенному выше примеру, представлен ниже:

adsl:
    set link type pptp
    set pptp mode active
    set pptp enable originate outcall
    set pptp self 10.0.0.1 (1)
    set pptp peer 10.0.0.138 (2)
1IP-адрес компьютера FreeBSD, на котором работает mpd.
2IP-адрес модема ADSL. По умолчанию для Alcatel SpeedTouch™ Home используется 10.0.0.138.

Возможно легко инициализировать соединение, выполнив следующую команду от имени root:

# mpd -b adsl

Для просмотра состояния соединения:

% ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
     inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff

Использование mpd является рекомендуемым способом подключения к услуге ADSL в FreeBSD.

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

Также возможно использовать FreeBSD для подключения к другим сервисам PPPoA с помощью net/pptpclient.

Для подключения к DSL-сервису с помощью net/pptpclient установите порт или пакет, затем отредактируйте файл /etc/ppp/ppp.conf. Пример раздела ppp.conf приведен ниже. Дополнительные сведения о параметрах ppp.conf можно найти в ppp(8).

adsl:
 set log phase chat lcp ipcp ccp tun command
 set timeout 0
 enable dns
 set authname username (1)
 set authkey password (2)
 set ifaddr 0 0
 add default HISADDR
1Имя пользователя для провайдера DSL.
2Пароль для вашей учетной записи.

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

# chown root:wheel /etc/ppp/ppp.conf
# chmod 600 /etc/ppp/ppp.conf

Это откроет туннель для PPP-сессии к DSL-маршрутизатору. Ethernet DSL-модемы имеют предварительно настроенный LAN IP-адрес для подключения. В случае Alcatel SpeedTouch™ Home этот адрес 10.0.0.138. В документации маршрутизатора должен быть указан используемый устройством адрес. Чтобы открыть туннель и начать PPP-сессию:

# pptp address adsl

Если в конец этой команды добавить амперсанд ("&"), pptp вернёт приглашение командной строки.

Будет создано виртуальное туннельное устройство tun для взаимодействия между процессами pptp и ppp. Как только вернется приглашение или процесс pptp подтвердит соединение, проверьте туннель:

% ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
        inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
	Opened by PID 918

Если соединение не удалось, проверьте настройки маршрутизатора, который обычно доступен через веб-браузер. Также изучите вывод pptp и содержимое файла журнала /var/log/ppp.log для поиска подсказок.


Изменено: 20 октября 2025 г. by Vladlen Popolitov