Path: blob/main/documentation/content/ru/books/handbook/ppp-and-slip/_index.adoc
18099 views
---
description: 'FreeBSD поддерживает протокол Point-to-Point (PPP), который можно использовать для установки сетевого или интернет-соединения с помощью модема'
next: books/handbook/mail
params:
path: /books/handbook/ppp-and-slip/
part: 'IV. Сетевое взаимодействие'
prev: books/handbook/serialcomms
showBookMenu: 'true'
tags: ["PPP", "PPPoE", "PPPoA", "modem"]
title: 'Глава 30. PPP'
weight: 35
---
[[ppp-and-slip]]
= PPP
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 30
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/ppp-and-slip/
ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]
ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
[[ppp-and-slip-synopsis]]
== Обзор
FreeBSD поддерживает протокол Point-to-Point (PPP), который может использоваться для установки сетевого или интернет-соединения с помощью модема. В этой главе описывается, как настроить услуги связи на основе модема в FreeBSD.
Прочтите эту главу, чтобы узнать:
* Как настроить, использовать и устранять неполадки PPP-подключения.
* Как настроить PPP over Ethernet (PPPoE).
* Как настроить PPP over ATM (PPPoA).
Прежде чем читать эту главу, необходимо:
* Знать основные термины и понятия сетевых технологий.
* Понимать основы и назначение коммутируемого соединения и PPP.
[[userppp]]
== Настройка PPP
FreeBSD предоставляет встроенную поддержку для управления коммутируемыми PPP-соединениями с помощью man:ppp[8]. Стандартное ядро FreeBSD поддерживает [.filename]#tun#, который используется для взаимодействия с модемным оборудованием. Настройка выполняется путём редактирования как минимум одного конфигурационного файла, и предоставляются примеры таких файлов. Наконец, `ppp` используется для запуска и управления соединениями.
Для использования PPP-соединения необходимы следующие компоненты:
* Учётная запись для коммутируемого доступа у поставщика интернет-услуг (Internet Service Provider — ISP).
* Модем для коммутируемого доступа.
* Номер телефона для дозвона к ISP.
* Имя пользователя и пароль, назначенные ISP.
* IP-адрес одного или нескольких DNS-серверов. Обычно эти адреса предоставляет интернет-провайдер. Если он этого не сделал, FreeBSD можно настроить на использование согласования DNS.
Если отсутствует какая-либо необходимая информация, обратитесь к интернет-провайдеру.
Следующая информация может быть предоставлена интернет-провайдером, но не является обязательной:
* IP-адрес шлюза по умолчанию. Если эта информация неизвестна, интернет-провайдер автоматически предоставит правильное значение во время настройки соединения. При настройке PPP в FreeBSD этот адрес обозначается как `HISADDR`.
* Маска подсети. Если провайдер не предоставил её, в конфигурационном файле man:ppp[8] будет использовано значение `255.255.255.255`. *
+
Если интернет-провайдер выделил статический IP-адрес и имя хоста, их следует указать в файле конфигурации. В противном случае эта информация будет автоматически предоставлена при настройке соединения.
Оставшаяся часть этого раздела демонстрирует, как настроить FreeBSD для распространённых сценариев PPP-подключения. Необходимый конфигурационный файл — это [.filename]#/etc/ppp/ppp.conf#, а дополнительные файлы и примеры доступны в [.filename]#/usr/share/examples/ppp/#.
[NOTE]
====
На протяжении всего этого раздела во многих примерах файлов указаны номера строк. Эти номера добавлены для удобства обсуждения и не предназначены для включения в фактический файл.
При редактировании конфигурационного файла важно соблюдать правильные отступы. Строки, заканчивающиеся на `:`, начинаются с первой колонки (в начале строки), тогда как все остальные строки должны иметь отступ, как показано, с использованием пробелов или табуляции.
====
[[userppp-staticIP]]
=== Базовая конфигурация
Для настройки PPP-соединения сначала отредактируйте файл [.filename]#/etc/ppp/ppp.conf#, указав данные для подключения к интернет-провайдеру. Этот файл описывается следующим образом:
[.programlisting]
....
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:::
Включает подробные параметры журналирования для тестирования соединения. Как только конфигурация начнёт работать удовлетворительно, эту строку следует сократить до:
+
[.programlisting]
....
set log phase tun
....
Строка 3:::
Отображает версию man:ppp[8] для PPP-программного обеспечения, работающего на другой стороне соединения.
Строка 4:::
Определяет устройство, к которому подключен модем, где [.filename]#COM1# соответствует [.filename]#/dev/cuau0#, а [.filename]#COM2# соответствует [.filename]#/dev/cuau1#.
Строка 5:::
Устанавливает скорость соединения. Если `115200` не работает на старом модеме, попробуйте `38400`.
Строки 6 и 7:::
Строка набора, записанная в синтаксисе expect-send. Дополнительную информацию смотрите в man:chat[8].
+
Обратите внимание, что эта команда продолжается на следующей строке для удобства чтения. Любая команда в [.filename]#ppp.conf# может быть записана таким образом, если последним символом в строке является `\`.
Строка 8:::
Устанавливает время ожидания бездействия соединения в секундах.
Строка 9:::
Указывает узлу подтвердить настройки DNS. Если в локальной сети работает собственный DNS-сервер, эту строку следует закомментировать, добавив `+#+` в начале строки, или удалить.
Строка 10:::
Пустая строка для удобочитаемости. Пустые строки игнорируются man: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-адрес изменяется при каждом подключении, измените эту строку на следующее значение. Это указывает man:ppp[8] использовать протокол IP Configuration Protocol (IPCP) для согласования динамического IP-адреса:
+
[.programlisting]
....
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.
В зависимости от того, запускается ли man:ppp[8] вручную или автоматически, может потребоваться создать файл [.filename]#/etc/ppp/ppp.linkup# со следующим содержимым. Этот файл необходим при запуске `ppp` в режиме `-auto`. Он используется после установки соединения. На этом этапе IP-адрес уже будет назначен, и можно добавить записи в таблицу маршрутизации. При создании этого файла убедитесь, что значение _provider_ совпадает с указанным в строке 11 файла [.filename]#ppp.conf#.
[.programlisting]
....
provider:
add default HISADDR
....
Этот файл также необходим, когда адрес шлюза по умолчанию "угадывается" в конфигурации статического IP-адреса. В этом случае удалите строку 17 из [.filename]#ppp.conf# и создайте файл [.filename]#/etc/ppp/ppp.linkup# с указанными двумя строками. Дополнительные примеры для этого файла можно найти в [.filename]#/usr/share/examples/ppp/#.
По умолчанию `ppp` должен запускаться от имени `root`. Чтобы изменить это поведение, добавьте учётную запись пользователя, который должен запускать `ppp`, в группу `network` в файле [.filename]#/etc/group#.
Затем предоставьте пользователю доступ к одной или нескольким записям в [.filename]#/etc/ppp/ppp.conf# с помощью `allow`. Например, чтобы дать `fred` и `mary` разрешение только на запись `provider:`, добавьте следующую строку в раздел `provider:`:
[.programlisting]
....
allow users fred mary
....
Чтобы предоставить указанным пользователям доступ ко всем записям, поместите эту строку в раздел `default` вместо этого.
=== Расширенная настройка
Возможно настроить PPP для предоставления адресов DNS- и NetBIOS-серверов по запросу.
Для включения этих расширений в PPP версии 1.x можно добавить следующие строки в соответствующую секцию файла [.filename]#/etc/ppp/ppp.conf#.
[.programlisting]
....
enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
....
А для PPP версии 2 и выше:
[.programlisting]
....
accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5
....
Это сообщит клиентам адреса основного и дополнительного серверов имен, а также хост сервера имён NetBIOS.
В версии 2 и выше, если строка `set dns` опущена, PPP будет использовать значения, указанные в [.filename]#/etc/resolv.conf#.
[[userppp-PAPnCHAP]]
==== Проверка подлинности (аутентификация) PAP и CHAP
Некоторые интернет-провайдеры настраивают свои системы таким образом, что проверка подлинности пользователя при подключении выполняется с использованием механизмов PAP или CHAP. В таком случае провайдер не будет выводить приглашение `login:` при соединении, а сразу начнёт работу по протоколу PPP.
PAP менее безопасен, чем CHAP, но безопасность обычно не является проблемой, так как пароли, хотя и передаются в открытом виде с PAP, передаются только по последовательной линии. У взломщиков мало возможностей для "прослушивания".
Необходимо внести следующие изменения:
[.programlisting]
....
13 set authname MyUserName
14 set authkey MyPassword
15 set login
....
Line 13:::
Эта строка указывает имя пользователя PAP/CHAP. Вставьте правильное значение для _MyUserName_.
Line 14:::
Эта строка указывает пароль PAP/CHAP. Вставьте правильное значение вместо _MyPassword_. Дополнительная строка может быть добавлена, например:
+
[.programlisting]
....
16 accept PAP
....
+
или
+
[.programlisting]
....
16 accept CHAP
....
+
чтобы сделать это намерение очевидным, но PAP и CHAP по умолчанию принимаются оба.
Строка 15:::
Поставщик интернет-услуг обычно не требует входа на сервер при использовании PAP или CHAP. Поэтому отключите строку `set login`.
[[userppp-nat]]
==== Использование возможности трансляции сетевых адресов (NAT) в PPP
PPP обладает возможностью использовать внутренний NAT без функций перенаправления ядра. Эту функциональность можно включить следующей строкой в [.filename]#/etc/ppp/ppp.conf#:
[.programlisting]
....
nat enable yes
....
Или NAT может быть включён с помощью параметра командной строки `-nat`. Также существует параметр [.filename]#/etc/rc.conf# с именем `ppp_nat`, который включён по умолчанию.
При использовании этой функции может быть полезно включить следующие параметры в файле [.filename]#/etc/ppp/ppp.conf# для переадресации входящих соединений:
[.programlisting]
....
nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http http
....
или вообще не доверять внешнему миру
[.programlisting]
....
nat deny_incoming yes
....
[[userppp-final]]
=== Окончательная конфигурация системы
В то время как `ppp` уже настроен, некоторые изменения всё ещё необходимо внести в [.filename]#/etc/rc.conf#.
Посмотрев файл с начала до конца, убедитесь, что строка `hostname=` установлена:
[.programlisting]
....
hostname="foo.example.com"
....
Если интернет-провайдер предоставил статический IP-адрес и имя, используйте это имя в качестве имени хоста.
Проверьте переменную `network_interfaces`. Чтобы настроить систему для дозвона к интернет-провайдеру по требованию, убедитесь, что устройство [.filename]#tun0# добавлено в список, в противном случае удалите его.
[.programlisting]
....
network_interfaces="lo0 tun0"
ifconfig_tun0=
....
[NOTE]
====
Переменная `ifconfig_tun0` должна быть пустой, а файл с именем [.filename]#/etc/start_if.tun0# должен быть создан. Этот файл должен содержать строку:
[.programlisting]
....
ppp -auto mysystem
....
Этот скрипт выполняется во время настройки сети, запуская демон ppp в автоматическом режиме. Если данный компьютер выступает в качестве шлюза, рекомендуется включить опцию `-alias`. Дополнительные сведения см. на соответствующей странице Справочника.
====
Убедитесь, что программа маршрутизатора отключена, проверив, что в [.filename]#/etc/rc.conf# следующая строка установлена в `NO`:
[.programlisting]
....
router_enable="NO"
....
Важно, чтобы демон `routed` не запускался, так как `routed` имеет тенденцию удалять записи по умолчанию из таблицы маршрутизации , созданные `ppp`.
Вероятно, стоит убедиться, что строка `sendmail_flags` не содержит опцию `-q`, иначе `sendmail` будет периодически пытаться выполнить сетевой запрос, что может привести к нежелательному дозвону. Можно попробовать:
[.programlisting]
....
sendmail_flags="-bd"
....
Недостаток в том, что `sendmail` вынужден повторно проверять очередь почты каждый раз при установке ppp-соединения. Для автоматизации этого процесса добавьте `!bg` в файл [.filename]#ppp.linkup#:
[.programlisting]
....
1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30m
....
Альтернативный вариант — настроить "dfilter" для блокировки SMTP-трафика. Дополнительные сведения см. в примерных файлах.
=== Использование `ppp`
Осталось только перезагрузить машину. После перезагрузки введите:
[source, shell]
....
# ppp
....
затем `dial provider` для запуска сеанса PPP или, чтобы настроить `ppp` для автоматического установления сеансов при наличии исходящего трафика и отсутствии файла [.filename]#start_if.tun0#, введите:
[source, shell]
....
# ppp -auto provider
....
Возможно общаться с программой `ppp`, пока она работает в фоновом режиме, но только если настроен соответствующий диагностический порт. Для этого добавьте следующую строку в конфигурацию:
[.programlisting]
....
set server /var/run/ppp-tun%d DiagnosticPassword 0177
....
Это заставит PPP прослушивать указанный сокет домена UNIX(R), запрашивая у клиентов указанный пароль перед предоставлением доступа. Символ `%d` в имени заменяется на номер устройства [.filename]#tun#, который используется.
После настройки сокета программа man:pppctl[8] может использоваться в скриптах для управления работающим приложением.
[[userppp-mgetty]]
=== Настройка сервисов для входящих звонков
crossref:serialcomms[dialup,"Входящие соединения по модему"] предоставляет хорошее описание настройки услуг дозвона с использованием man:getty[8].
Альтернативой `getty` является порт package:comms/mgetty+sendfax[], более интеллектуальная версия `getty`, разработанная для работы с коммутируемыми линиями.
Преимущество использования `mgetty` заключается в том, что он активно _общается_ с модемами, то есть если порт выключен в [.filename]#/etc/ttys#, то модем не будет отвечать на звонки.
Поздние версии `mgetty` (начиная с 0.99beta) также поддерживают автоматическое определение PPP-потоков, что позволяет клиентам получать доступ к серверу без использования скриптов.
См. http://mgetty.greenie.net/doc/mgetty_toc.html[http://mgetty.greenie.net/doc/mgetty_toc.html] для получения дополнительной информации о `mgetty`.
По умолчанию порт package:comms/mgetty+sendfax[] поставляется с включённой опцией `AUTO_PPP`, которая позволяет `mgetty` обнаруживать фазу LCP PPP-соединений и автоматически запускать оболочку ppp. Однако, поскольку стандартная последовательность ввода логина и пароля не выполняется, необходимо аутентифицировать пользователей с помощью PAP или CHAP.
Этот раздел предполагает, что пользователь успешно скомпилировал и установил порт package:comms/mgetty+sendfax[] в своей системе.
Убедитесь, что в файле [.filename]#/usr/local/etc/mgetty+sendfax/login.config# присутствует следующее:
[.programlisting]
....
/AutoPPP/ - - /etc/ppp/ppp-pap-dialup
....
Это указывает `mgetty` запускать [.filename]#ppp-pap-dialup# для обнаруженных PPP-соединений.
Создайте исполняемый файл с именем [.filename]#/etc/ppp/ppp-pap-dialup#, содержащий следующее:
[.programlisting]
....
#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENT
....
Для каждой включенной коммутируемой линии в [.filename]#/etc/ttys# создайте соответствующую запись в [.filename]#/etc/ppp/ppp.conf#. Это будет прекрасно сосуществовать с определениями, созданными ранее.
[.programlisting]
....
pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxy
....
Каждый пользователь, входящий в систему этим методом, должен иметь имя пользователя и пароль в [.filename]#/etc/ppp/ppp.secret#. Или можно добавить следующую опцию для аутентификации пользователей через PAP из [.filename]#/etc/passwd#.
[.programlisting]
....
enable passwdauth
....
Для назначения статического IP-адреса некоторым пользователям укажите этот адрес в качестве третьего аргумента в [.filename]#/etc/ppp/ppp.secret#. Примеры можно найти в [.filename]#/usr/share/examples/ppp/ppp.secret.sample#.
[[ppp-troubleshoot]]
== Устранение неполадок PPP-подключений
В этом разделе рассматриваются некоторые проблемы, которые могут возникнуть при использовании PPP через модемное соединение. Некоторые интернет-провайдеры выводят приглашение `ssword`, тогда как другие используют `password`. Если скрипт `ppp` не настроен соответствующим образом, попытка входа завершится неудачей. Наиболее распространённый способ отладки соединений `ppp` — это ручное подключение, как описано в данном разделе.
=== Проверьте файлы устройств
При использовании собственного ядра убедитесь, что в конфигурационном файле ядра присутствует следующая строка:
[.programlisting]
....
device uart
....
Устройство [.filename]#uart# уже включено в ядро `GENERIC`, поэтому в этом случае дополнительные действия не требуются. Просто проверьте вывод `dmesg` на наличие модема с помощью:
[source, shell]
....
# dmesg | grep uart
....
Это должно вывести некоторую важную информацию об устройствах [.filename]#uart#. Это COM-порты, которые нам нужны. Если модем работает как стандартный последовательный порт, он должен быть указан как [.filename]#uart1# или [.filename]#COM2#. Если это так, пересборка ядра не требуется. При сопоставлении, если модем находится на [.filename]#uart1#, устройство модема будет [.filename]#/dev/cuau1#.
=== Подключение вручную
Подключение к Интернету с ручным управлением `ppp` выполняется быстро, просто и является отличным способом для отладки соединения или получения информации о том, как ISP взаимодействует с клиентами `ppp`. Давайте запустим PPP из командной строки. Обратите внимание, что во всех наших примерах мы будем использовать _example_ в качестве имени хоста машины, на которой работает PPP. Для запуска `ppp`:
[source, shell]
....
# ppp
....
[source, shell]
....
ppp ON example> set device /dev/cuau1
....
Эта вторая команда устанавливает модемное устройство в [.filename]#cuau1#.
[source, shell]
....
ppp ON example> set speed 115200
....
Это устанавливает скорость соединения на 115 200 Кбит/с.
[source, shell]
....
ppp ON example> enable dns
....
Это указывает `ppp` настроить резолвер и добавить строки nameserver в [.filename]#/etc/resolv.conf#. Если `ppp` не может определить имя хоста, его можно задать вручную позже.
[source, shell]
....
ppp ON example> term
....
Это переключает в "терминальный" режим для ручного управления модемом.
[.programlisting]
....
deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
....
[source, shell]
....
at
OK
atdt123456789
....
Используйте `at` для инициализации модема, затем используйте `atdt` и номер провайдера для начала процесса дозвона.
[source, shell]
....
CONNECT
....
Подтверждение подключения: если у нас возникнут проблемы с соединением, не связанные с оборудованием, здесь мы попытаемся их устранить.
[source, shell]
....
ISP Login:myusername
....
На этом приглашении введите имя пользователя, предоставленное ISP.
[source, shell]
....
ISP Pass:mypassword
....
На этом запросе введите пароль, предоставленный интернет-провайдером. Как и при входе в FreeBSD, пароль не будет отображаться.
[source, shell]
....
Shell or PPP:ppp
....
В зависимости от провайдера, это приглашение может не появляться. Если оно появилось, то запрашивается выбор между использованием оболочки провайдера или запуском `ppp`. В данном примере был выбран `ppp` для установки подключения к Интернету.
[source, shell]
....
Ppp ON example>
....
Обратите внимание, что в этом примере первая буква `p` написана заглавной. Это означает, что мы успешно подключились к интернет-провайдеру.
[source, shell]
....
Ppp ON example>
....
Мы успешно прошли аутентификацию у нашего провайдера и ожидаем назначенный IP-адрес.
[source, shell]
....
PPP ON example>
....
Мы согласовали IP-адрес и успешно установили соединение.
[source, shell]
....
PPP ON example>add default HISADDR
....
Вот мы добавляем наш маршрут по умолчанию, это необходимо сделать до того, как мы сможем взаимодействовать с внешним миром, так как на данный момент единственное установленное соединение — с удалённой стороной. Если это не удаётся из-за существующих маршрутов, поставьте восклицательный знак `!` перед командой `add`. По-другому, можно установить маршрут до установки соединения, и тогда будет согласован новый маршрут соответствующим образом.
Если всё прошло хорошо, у нас теперь должно быть активное подключение к Интернету, которое можно перевести в фоновый режим с помощью kbd:[CTRL+z]. Если `PPP` возвращается к `ppp`, соединение было потеряно. Это полезно знать, так как показывает статус подключения. Заглавные буквы P обозначают подключение к ISP, а строчные p показывают, что соединение потеряно.
=== Отладка
Если соединение не может быть установлено, отключите аппаратный поток CTS/RTS с помощью `set ctsrts off`. Это в основном происходит при подключении к некоторым терминальным серверам с поддержкой PPP, где PPP зависает при попытке записи данных в линию связи и ожидает сигнала Clear To Send (CTS), который может никогда не поступить. При использовании этой опции включите `set accmap`, так как может потребоваться обойти аппаратную зависимость от передачи определённых символов от конца к концу, чаще всего XON/XOFF. Дополнительную информацию об этой опции и её использовании см. в man:ppp[8].
Старый модем может потребовать `set parity even`. По умолчанию чётность отключена, но она используется для проверки ошибок с значительным увеличением трафика на старых модемах.
PPP может не вернуться в командный режим, что обычно является ошибкой согласования, когда ISP ожидает начала процесса согласования. В этом случае использование `~p` заставит ppp начать отправку информации о конфигурации.
Если приглашение на вход никогда не появляется, скорее всего, требуется аутентификация PAP или CHAP. Чтобы использовать PAP или CHAP, добавьте следующие параметры в PPP перед переходом в терминальный режим:
[source, shell]
....
ppp ON example> set authname myusername
....
Где _myusername_ следует заменить на имя пользователя, предоставленное провайдером интернет-услуг.
[source, shell]
....
ppp ON example> set authkey mypassword
....
Где _mypassword_ следует заменить на пароль, назначенный провайдером.
Если соединение установлено, но не удается найти доменное имя, попробуйте выполнить `man:ping[8]` для IP-адреса. Если наблюдается 100% потерь пакетов, вероятно, маршрут по умолчанию не назначен. Убедитесь, что во время подключения был установлен параметр `add default HISADDR`. Если удается установить соединение с удалённым IP-адресом, возможно, в файл [.filename]#/etc/resolv.conf# не добавлен адрес резолвера. Этот файл должен выглядеть следующим образом:
[.programlisting]
....
domain example.com
nameserver x.x.x.x
nameserver y.y.y.y
....
Где _x.x.x.x_ и _y.y.y.y_ следует заменить на IP-адреса DNS-серверов провайдера.
Для настройки man:syslog[3] для ведения журнала PPP-подключения убедитесь, что следующая строка присутствует в [.filename]#/etc/syslog.conf#:
[.programlisting]
....
!ppp
*.* /var/log/ppp.log
....
[[pppoe]]
== Использование PPP через Ethernet (PPPoE)
Этот раздел описывает, как настроить PPP через Ethernet (PPPoE).
Вот пример рабочего [.filename]#ppp.conf#:
[.programlisting]
....
default:
set log Phase tun command # add more detailed logging when needed
set ifaddr 10.0.0.1/0 10.0.0.2/0
name_of_service_provider:
set device PPPoE:xl1 # replace xl1 with the Ethernet device
set authname THELOGINNAME
set authkey THEPASSWORD
set dial
set login
add default HISADDR
....
Как `root`, выполните:
[source, shell]
....
# ppp -ddial name_of_service_provider
....
Добавьте следующее в [.filename]#/etc/rc.conf#:
[.programlisting]
....
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # when needing to enable nat for the local network, otherwise NO
ppp_profile="name_of_service_provider"
....
=== Использование тега сервиса PPPoE
Иногда для установки соединения может потребоваться использовать тег сервиса. Теги сервиса используются для различения разных серверов PPPoE, подключённых к определённой сети.
Любая необходимая информация о теге сервиса должна быть указана в документации, предоставляемой интернет-провайдером (ISP).
В крайнем случае можно попробовать установить пакет или порт package:net/rr-pppoe[]. Однако учтите, что это может перепрограммировать ваш модем и сделать его бесполезным, поэтому хорошо подумайте перед этим. Просто установите программу, поставляемую с модемом. Затем откройте меню menu:System[] в программе. Имя профиля должно быть указано там. Обычно это _ISP_.
Имя профиля (тег сервиса) будет использоваться в записи конфигурации PPPoE в файле [.filename]#ppp.conf# как часть провайдера для `set device`. Подробности смотрите в man:ppp[8]. Это должно выглядеть так:
[.programlisting]
....
set device PPPoE:xl1:ISP
....
Не забудьте изменить _xl1_ на соответствующее имя устройства вашей Ethernet-карты.
Не забудьте изменить _ISP_ на профиль, определённый вами ранее.
Для получения дополнительной информации обратитесь к http://renaud.waldura.com/doc/freebsd/pppoe/[более дешёвому широкополосному доступу с FreeBSD через DSL] от Renaud Waldura.
[[ppp-3com]]
=== PPPoE с модемом 3Com(R) HomeConnect(TM) ADSL Modem Dual Link
Этот модем не соответствует спецификации PPPoE, определённой в http://www.faqs.org/rfcs/rfc2516.html[RFC 2516].
Чтобы FreeBSD мог взаимодействовать с этим устройством, необходимо установить sysctl. Это можно сделать автоматически при загрузке, изменив файл [.filename]#/etc/sysctl.conf#:
[.programlisting]
....
net.graph.nonstandard_pppoe=1
....
или может быть выполнено сразу с помощью команды:
[source, shell]
....
# sysctl net.graph.nonstandard_pppoe=1
....
К сожалению, поскольку это общесистемная настройка, невозможно одновременно работать с обычным клиентом или сервером PPPoE и модемом 3Com(R) HomeConnect(TM) ADSL.
[[pppoa]]
== Использование PPP через ATM (PPPoA)
Следующее описание объясняет, как настроить PPP через ATM (PPPoA). PPPoA — популярный выбор среди европейских провайдеров DSL.
=== Использование mpd
Приложение mpd можно использовать для подключения к различным сервисам, в частности к PPTP-сервисам. Его можно установить с помощью пакета package:net/mpd5[] или порта. Многие ADSL-модемы требуют создания PPTP-туннеля между модемом и компьютером.
После установки настройте mpd в соответствии с параметрами провайдера. Порт предоставляет набор примеров конфигурационных файлов, которые хорошо документированы в [.filename]#/usr/local/etc/mpd/#. Полное руководство по настройке mpd доступно в формате HTML в [.filename]#/usr/ports/shared/doc/mpd/#. Вот пример конфигурации для подключения к ADSL-сервису с помощью mpd. Конфигурация разделена на два файла, первый — [.filename]#mpd.conf#:
[NOTE]
====
Этот пример [.filename]#mpd.conf# работает только с mpd 4.x.
====
[.programlisting]
....
default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname username <.>
set bundle password password <.>
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
....
<.> Имя пользователя для аутентификации у вашего провайдера.
<.> Пароль, используемый для аутентификации у вашего провайдера.
Информация о соединении или соединениях, которые необходимо установить, находится в файле [.filename]#mpd.links#. Пример файла [.filename]#mpd.links#, соответствующий приведённому выше примеру, представлен ниже:
[.programlisting]
....
adsl:
set link type pptp
set pptp mode active
set pptp enable originate outcall
set pptp self 10.0.0.1 <.>
set pptp peer 10.0.0.138 <.>
....
<.> IP-адрес компьютера FreeBSD, на котором работает mpd.
<.> IP-адрес модема ADSL. По умолчанию для Alcatel SpeedTouch(TM) Home используется `10.0.0.138`.
Возможно легко инициализировать соединение, выполнив следующую команду от имени `root`:
[source, shell]
....
# mpd -b adsl
....
Для просмотра состояния соединения:
[source, shell]
....
% 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.
=== Использование pptpclient
Также возможно использовать FreeBSD для подключения к другим сервисам PPPoA с помощью package:net/pptpclient[].
Для подключения к DSL-сервису с помощью package:net/pptpclient[] установите порт или пакет, затем отредактируйте файл [.filename]#/etc/ppp/ppp.conf#. Пример раздела [.filename]#ppp.conf# приведен ниже. Дополнительные сведения о параметрах [.filename]#ppp.conf# можно найти в man:ppp[8].
[.programlisting]
....
adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname username <.>
set authkey password <.>
set ifaddr 0 0
add default HISADDR
....
<.> Имя пользователя для провайдера DSL.
<.> Пароль для вашей учётной записи.
[WARNING]
====
Поскольку пароль учётной записи добавляется в [.filename]#ppp.conf# в открытом виде, убедитесь, что никто не может прочитать содержимое этого файла:
[source, shell]
....
# chown root:wheel /etc/ppp/ppp.conf
# chmod 600 /etc/ppp/ppp.conf
....
====
Это откроет туннель для PPP-сессии к DSL-маршрутизатору. Ethernet DSL-модемы имеют предварительно настроенный LAN IP-адрес для подключения. В случае Alcatel SpeedTouch(TM) Home этот адрес `10.0.0.138`. В документации маршрутизатора должен быть указан используемый устройством адрес. Чтобы открыть туннель и начать PPP-сессию:
[source, shell]
....
# pptp address adsl
....
[TIP]
====
Если в конец этой команды добавить амперсанд ("&"), pptp вернёт приглашение командной строки.
====
Будет создано виртуальное туннельное устройство [.filename]#tun# для взаимодействия между процессами pptp и ppp. Как только вернется приглашение или процесс pptp подтвердит соединение, проверьте туннель:
[source, shell]
....
% 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` и содержимое файла журнала [.filename]#/var/log/ppp.log# для поиска подсказок.