--- 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 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 mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 .... Если соединение не удалось, проверьте настройки маршрутизатора, который обычно доступен через веб-браузер. Также изучите вывод `pptp` и содержимое файла журнала [.filename]#/var/log/ppp.log# для поиска подсказок.