<!--
     The FreeBSD Russian Documentation Project

     $FreeBSD$
     $FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/ppp-and-slip/chapter.sgml,v 1.12 2004/09/28 08:39:21 den Exp $

     Original revision: 1.143
-->

<chapter id="ppp-and-slip">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Jim</firstname>
	<surname>Mock</surname>
	<contrib>Реструктурировал, реорганизовал и обновил </contrib>
	<!-- 1 Mar 2000 -->
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Денис</firstname>
	<surname>Пеплин</surname>
	<contrib>Перевод на русский язык: </contrib>
      </author>
    </authorgroup>
  </chapterinfo>

  <title>PPP и SLIP</title>

  <sect1 id="ppp-and-slip-synopsis">
    <title>Краткий обзор</title>
    <indexterm id="ppp-ppp">
      <primary>PPP</primary>
    </indexterm>
    <indexterm id="ppp-slip">
      <primary>SLIP</primary>
    </indexterm>

    <para>В FreeBSD существует множество способов соединения одного компьютера
      с другим.  Для установления соединения с отдельной сетью или интернет
      через обычный модем, или для открытия доступа к собственному компьютеру
      необходимо использование PPP или SLIP.  В этой главе детально описана
      настройка таких модемных сервисов.</para>

    <para>После прочтения этой главы вы будете знать:</para>

    <itemizedlist>
      <listitem>
	<para>Как настроить PPP уровня пользователя (user PPP).</para>
      </listitem>
      <listitem>
	<para>Как настроить PPP уровня ядра (kernel PPP).</para>
      </listitem>
      <listitem>
	<para>Как настроить <acronym>PPPoE</acronym> (PPP over
	  Ethernet).</para>
      </listitem>
      <listitem>
	<para>Как настроить <acronym>PPPoA</acronym> (PPP over
	  ATM).</para>
	</listitem>
      <listitem>
	<para>Как настроить SLIP клиента и сервер.</para>
      </listitem>
    </itemizedlist>

    <indexterm id="ppp-ppp-user">
      <primary>PPP</primary>
      <secondary>user PPP</secondary>
    </indexterm>
    <indexterm id="ppp-ppp-kernel">
      <primary>PPP</primary>
      <secondary>kernel PPP</secondary>
    </indexterm>
    <indexterm id="ppp-ppp-ethernet">
      <primary>PPP</primary>
      <secondary>over Ethernet</secondary>
    </indexterm>

    <para>Перед прочтением этой главы вам потребуется:</para>

    <itemizedlist>
      <listitem>
	<para>Ознакомиться с основными сетевыми технологиями.</para>
      </listitem>
      <listitem>
	<para>Понимать основы и назначение модемного соединения и PPP
	  и/или SLIP.</para>
      </listitem>
    </itemizedlist>

    <para>Вы возможно захотите узнать, в чем главное различие между PPP
      уровня пользователя и ядра.  Ответ прост: PPP уровня пользователя
      обрабатывает входящие и исходящие данные в пространстве пользователя,
      а не в ядре.  В терминах копирования данных между ядром и пространством
      пользователя это дорогостоящий путь, который однако позволяет значительно
      расширить возможности реализации PPP.  PPP уровня пользователя
      для связи с внешним миром использует устройство
      <devicename>tun</devicename>, а PPP уровня ядра &mdash; устройство
      <devicename>ppp</devicename>.</para>

    <note>
      <para>В дальнейшем в этой главе PPP уровня пользователя будет
	обозначаться просто как <application>ppp</application>, пока не
	потребуется различать его и любое другое программное обеспечение
	PPP, такое как <application>pppd</application>.  Если не указано
	иначе, все команды, приведенные в этой главе, должны выполняться
	под <username>root</username>.</para>
    </note>
  </sect1>

  <sect1 id="userppp">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Обновил и расширил </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Brian</firstname>
	  <surname>Somers</surname>
	  <contrib>Первоначально предоставил </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Nik</firstname>
	  <surname>Clayton</surname>
	  <contrib>Дополнительную информацию предоставили </contrib>
	</author>
	<author>
	  <firstname>Dirk</firstname>
	  <surname>Fr&ouml;mberg</surname>
	</author>
	<author>
	  <firstname>Peter</firstname>
	  <surname>Childs</surname>
	</author>
      </authorgroup>
    </sect1info>

    <title>PPP уровня пользователя</title>

    <sect2>
      <title>Настройка PPP уровня пользователя</title>

      <sect3>
	<title>Предположения</title>

	<para>В этом документе предполагается, что у вас есть следующее:</para>

	<itemizedlist>
	  <indexterm id="ppp-isp">
	    <primary>ISP</primary>
	  </indexterm>
	  <indexterm id="ppp-ppp2">
	    <primary>PPP</primary>
	  </indexterm>
	  <listitem>
	    <para>Учетная запись у провайдера интернет (Internet Service
	      Provider, ISP), к которому вы подсоединяетесь, используя
	      PPP.</para>
	  </listitem>

	  <listitem>
	    <para>Модем или другое  подключенное к системе и правильно
	      настроенное устройство, позволяющее подключиться к
	      провайдеру.</para>
	  </listitem>

	  <listitem>
	    <para>Номер модемного пула провайдера.</para>
	  </listitem>

	  <indexterm id="ppp-pap">
	    <primary>PAP</primary>
	  </indexterm>
	  <indexterm id="ppp-chap">
	    <primary>CHAP</primary>
	  </indexterm>
	  <indexterm id="ppp-unix">
	    <primary>UNIX</primary>
	  </indexterm>
	  <indexterm id="ppp-login">
	    <primary>логин</primary>
	  </indexterm>
	  <indexterm id="ppp-password">
	    <primary>пароль</primary>
	  </indexterm>
	  <listitem>
	    <para>Имя пользователя (логин) и пароль (обычная &unix; пара
	      логин/пароль, или PAP/CHAP пара логин/пароль).</para>
	  </listitem>

	  <indexterm id="ppp-nameserver">
	    <primary>сервер имен</primary>
	  </indexterm>
	  <listitem>
	    <para>IP адреса одного или нескольких серверов имен.  Обычно
	      провайдер дает для этих целей два IP адреса.  Если нет
	      ни одного, вы можете использовать команду <command>enable
	      dns</command> в <filename>ppp.conf</filename> и
	      <application>ppp</application> настроит список серверов имен.
	      Эта возможность зависит от наличия поддержки согласования
	      DNS в реализации PPP провайдера.</para>
	  </listitem>
	</itemizedlist>

	<para>Следующая информация может поставляться провайдером, но не
	  является совершенно необходимой:</para>

	<itemizedlist>
	  <listitem>
	    <para>IP адрес шлюза провайдера.  Шлюз это компьютер, к которому
	      вы подключитесь и который будет настроен в качестве
	      <emphasis>маршрута по умолчанию</emphasis> (<emphasis>default
	      route</emphasis>).  Если у вас нет этой информации, она
	      может быть получена от PPP сервера после подключения.</para>

	    <para>Программой <application>ppp</application> этот IP адрес
	      обозначается как <literal>HISADDR</literal>.</para>
	  </listitem>

	  <listitem>
	    <para>Сетевая маска, которую вы должны использовать.
	      Если провайдер не предоставил ее значение, вы можете
	      использовать <hostid
	      role="netmask">255.255.255.255</hostid>.</para>
	  </listitem>

	  <indexterm id="ppp-static-ip">
	    <primary>статический IP адрес</primary>
	  </indexterm>
	  <listitem>
	    <para>Если провайдер предоставил статический IP и имя хоста,
	      используйте их.  Иначе позвольте удаленной стороне
	      назначить свободный IP адрес.</para>
	  </listitem>
	</itemizedlist>

	<para>Если у вас нет всей необходимой информации, свяжитесь с
	  провайдером.</para>

	<note>
	  <para>В этом разделе строки файлов настройки из многих примеров
	    пронумерованы.  Эти номера приведены только для обсуждения
	    настроек, они не должны помещаться в действующую настройку.
	    Правильные отступы с табуляцией и пробелами также важны.</para>
	</note>

      </sect3>

      <sect3>
	<title>Создание файлов устройств PPP</title>
	<indexterm><primary>PPP</primary><secondary>создание файлов устройств</secondary></indexterm>

	<para>В обычной ситуации, большинству пользователей нужно только
	  одно устройство <devicename>tun</devicename>
	  (<filename>/dev/tun0</filename>).  Ссылки на
	  <devicename>tun0</devicename> ниже могут быть заменены на
	  <devicename>tun<replaceable>N</replaceable></devicename>,
	  где <replaceable>N</replaceable> это любой номер устройства,
	  соответствующий вашей системе.</para>

	<para>Для систем FreeBSD без &man.devfs.5; (FreeBSD&nbsp;4.X более
	  ранние), необходимо проверить устройство
	  <devicename>tun0</devicename> (это не требуется, если включена
	  &man.devfs.5;, поскольку файлы устройств будут создаваться
	  автоматически).</para>

	<para>Простейший способ убедиться, что устройство
	  <devicename>tun0</devicename> настроено правильно, это пересоздать
	  устройство.  Для пересоздания устройства выполните следующее:</para>

	<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV tun0</userinput></screen>

	<para>Если вам необходимы 16 туннельных устройств, потребуется их
	  создать.  Это можно сделать, выполнив следующие команды:</para>

	<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>sh MAKEDEV tun15</userinput></screen>
      </sect3>

      <sect3>
	<title>Автоматическая настройка <application>PPP</application></title>

	<indexterm><primary>PPP</primary><secondary>настройка</secondary></indexterm>

	<para>И <command>ppp</command> и <command>pppd</command>
	  (реализация PPP уровня ядра) используют файлы настройки,
	  расположенные в каталоге <filename>/etc/ppp</filename>.
	  Примеры для ppp уровня пользователя можно найти в
	  <filename>/usr/share/examples/ppp/</filename>.</para>

	<para>Настройка <command>ppp</command> требует редактирования
	  нескольких файлов, в зависимости от ваших потребностей.  То,
	  что вы поместите в эти файлы, зависит в некоторой степени
	  от того, предоставит ли провайдер статический IP адрес
	  (т.е. вы получите один определенный IP адрес и будете использовать
	  его постоянно) или динамический (т.е. ваш IP адрес будет изменяться
	  при каждом подключении к провайдеру).</para>

	<sect4 id="userppp-staticIP">
	  <title>PPP и статические IP адреса</title>

	  <indexterm><primary>PPP</primary><secondary>со статическими IP адресами</secondary></indexterm>
	  <para>Вам потребуется отредактировать файл настройки
	    <filename>/etc/ppp/ppp.conf</filename>.  Он похож на приведенный
	    ниже пример.</para>

	  <note>
	    <para>Строки, оканчивающиеся на <literal>:</literal>,
	      вводятся без отступа в начале строки, остальные строки
	      должны быть введены с отступом, как показано в примере.</para>
	  </note>

	  <programlisting>1     default:
2       set log Phase Chat LCP IPCP CCP tun command
3       ident user-ppp VERSION (built COMPILATIONDATE)
4       set device /dev/cuaa0
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 login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16      set timeout 300
17      set ifaddr <replaceable>x.x.x.x</replaceable> <replaceable>y.y.y.y</replaceable> 255.255.255.255 0.0.0.0
18      add default HISADDR</programlisting>

	  <variablelist>
	    <varlistentry>
	      <term>Строка 1:</term>

	      <listitem>
		<para>Начинает настройку по умолчанию (default).  Команды
		  этой настройки выполняются автоматически при запуске
		  ppp.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 2:</term>

	      <listitem>
		<para>Включает параметры протоколирования.  Когда настройка
		  работает удовлетворительно, эта строка должна быть
		  сокращена до следующей формы

		  <programlisting>set log phase tun</programlisting>

		  для предотвращения появления слишком больших лог
		  файлов.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 3:</term>

	      <listitem>
		<para>Указывает PPP как идентифицировать себя на удаленной
		  стороне.  PPP идентифицирует себя на удаленной стороне если
		  возникают проблемы согласования и установки соединения,
		  предоставляя информацию, по которой администратор на
		  удаленной стороне может воспользоваться для решения
		  таких проблем.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 4:</term>

	      <listitem>
		<para>Указывает устройство, к которому подключен модем.
		  <devicename>COM1</devicename> это
		  <filename>/dev/cuaa0</filename>, а
		  <devicename>COM2</devicename> это
		  <filename>/dev/cuaa1</filename>.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 5:</term>

	      <listitem>
		<para>Устанавливает желаемую скорость подключения к модему.
		  Если 115200 не работает (хотя должна работать для
		  любого относительно нового модема) попробуйте
		  38400.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строки 6 и 7:</term>

	      <indexterm><primary>PPP</primary><secondary>PPP уровня пользователя</secondary></indexterm>
	      <listitem>
		<para>Строка дозвона.  PPP уровня пользователя применяет
		  expect-send синтаксис, похожий на синтаксис &man.chat.8;.
		  Обратитесь к странице справочника за информацией о
		  возможностях этого языка.</para>

		<para>Обратите внимание, что эта команда продолжается на
		  следующей строке для улучшения читаемости.  Любая команда
		  в <filename>ppp.conf</filename> может быть продолжена
		  на следующей строке, если последний символ предыдущей
		  строки <quote><literal>\</literal></quote>.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 8:</term>

	      <listitem>
		<para>Устанавливает предельное время ожидания для соединения.
		  Значение 180 секунд используется по умолчанию, так что
		  строка с этим значением чисто косметическая.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 9:</term>

	      <listitem>
		<para>Указывает PPP запросить у удаленной стороны
		  сервера имен.  Если вы работаете с локальным сервером имен,
		  эта строка должна быть закомментирована или удалена.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 10:</term>

	      <listitem>
		<para>Пустая строка для улучшения читаемости.  Пустые строки
		  игнорируются PPP.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 11:</term>

	      <listitem>
		<para>Определяет настройки для провайдера, называемого
		  <quote>provider</quote>.  Это имя может быть изменено
		  на имя вашего провайдера, чтобы в дальнейшем вы могли
		  использовать <option>load
		  <replaceable>provider</replaceable></option> для
		  начала соединения.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 12:</term>

	      <listitem>
		<para>Определяет телефонный номер для этого провайдера.
		  Несколько телефонных номеров могут быть указаны с
		  помощью двоеточия (<literal>:</literal>) или
		  символа канала (<literal>|</literal>) в качестве
		  разделителя.  Различия между двумя разделителями описаны
		  в &man.ppp.8;.  Главным образом они заключаются в том, что
		  если вы хотите перебирать номера, используйте двоеточие.
		  Если вы хотите дозваниваться по первому номеру в первую
		  очередь, и использовать другие номера только если
		  дозвон по первому завершится неудачно, используйте символ
		  канала.  Всегда заключайте список номеров в кавычки, как
		  показано в примере.</para>

		<para>Вы должны включить телефонный номер в кавычки
		  (<literal>"</literal>) если в нем используются пробелы.
		  Отсутствие кавычек может вызвать простую, но трудно
		  обнаруживаемую ошибку.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строки 13 и 14:</term>

	      <listitem>
		<para>Задают имя пользователя и пароль.  При использовании
		  приглашения login в стиле &unix;, эти значения
		  используются командой <command>set login</command>
		  через переменные \U и \P.  При соединении с использованием
		  PAP или CHAP, эти значения используются во время
		  аутентификации.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 15:</term>

	      <listitem>
		<indexterm><primary>PAP</primary></indexterm>
		<indexterm><primary>CHAP</primary></indexterm>
		<para>Если вы используете PAP или CHAP, приглашение
		  на вход не появится, и эта строка должна быть
		  закомментирована или удалена.  Обратитесь к
		  странице <link linkend="userppp-PAPnCHAP">аутентификация
		  PAP и CHAP</link> за дальнейшей информацией.</para>

		<para>Строка для входа записана в том же chat-подобном
		  синтаксисе, что и строка для дозвона.  В этом примере
		  строка работает для сервиса, сессия входа которого выглядит
		  примерно так:</para>

		<screen>J. Random Provider
login: <replaceable>foo</replaceable>
password: <replaceable>bar</replaceable>
protocol: ppp</screen>

		<para>Вам потребуется изменить эту строку для использования
		  с другим сервисом.  При первом составлении скрипта
		  убедитесь, что вы включили <quote>chat</quote>
		  протоколирование, чтобы убедиться, что
		  соединение происходит как ожидалось.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 16:</term>

	      <indexterm><primary>время ожидания</primary></indexterm>
	      <listitem>
		<para>Установка максимального времени ожидания по умолчанию
		  для соединения.  В данном случае соединение будет разорвано
		  автоматически после 300 секунд неактивности.  Если вы не
		  хотите, чтобы соединение разрывалось, установите эту
		  переменную в нуль, или используйте параметр командной
		  строки<option>-ddial</option>.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 17:</term>
	      <indexterm><primary>ISP</primary></indexterm>
	      <listitem>
		<para>Устанавливает адрес интерфейса.  Строка
		  <replaceable>x.x.x.x</replaceable> должна быть
		  заменена на IP адрес, который выделил вам провайдер.
		  Строка <replaceable>y.y.y.y</replaceable> должна быть
		  заменена на IP адрес шлюза провайдера (компьютер, к
		  которому вы подключаетесь).  Если провайдер не сообщил
		  адрес шлюза, используйте <hostid
		  role="netmask">10.0.0.2/0</hostid>.
		  Если вам требуется использовать <quote>вычисленные</quote>
		  адреса, убедитесь, что создана запись в
		  <filename>/etc/ppp/ppp.linkup</filename> в соответствии
		  с инструкциями для <link linkend="userppp-dynamicIP">PPP
		  и динамических IP адресов</link>.  Если эта строка
		  опущена, <command>ppp</command> не может быть запущен в
		  режиме <option>-auto</option>.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 18:</term>

	      <listitem>
		<para>Добавляет маршрут по умолчанию к шлюзу провайдера.
		  Специальное слово <literal>HISADDR</literal> заменяется
		  адресом шлюза, указанном в строке 17.  Важно, чтобы
		  эта строка появилась после строки 17, до нее
		  переменная <literal>HISADDR</literal> еще не
		  инициализирована.</para>

		<para>Если вы не будете запускать ppp с параметром
		  <option>-auto</option>, эта строка должна быть перемещена
		  в файл <filename>ppp.linkup</filename>.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <para>Нет необходимости добавлять запись в
	    <filename>ppp.linkup</filename>, если у вас статический IP
	    адрес и ppp работает в режиме <option>-auto</option>,
	    поскольку таблица маршрутизации настроена правильно еще
	    до подключения.  Однако, вы возможно захотите создать запись
	    для запуска программ после соединения.  Эта ситуация описана
	    далее в примере по sendmail.</para>

	  <para>Примерные файлы настройки находятся в каталоге
	    <filename>/usr/share/examples/ppp/</filename>.</para>
	</sect4>

	<sect4 id="userppp-dynamicIP">
	  <title>PPP и динамические IP адреса</title>
	  <indexterm><primary>PPP</primary><secondary>с динамическими IP адресами</secondary></indexterm>
	  <indexterm><primary>IPCP</primary></indexterm>
	  <para>Если провайдер не выделил статический IP адрес,
	    <command>ppp</command> может быть настроен для определения
	    локального и удаленного адреса.  Это делается путем
	    <quote>вычисления</quote> IP адреса и настройки его программой
	    <command>ppp</command> с использованием IP
	    Configuration Protocol (IPCP) после установления соединения.
	    Файл настройки <filename>ppp.conf</filename> тот же, что и
	    в примере <link linkend="userppp-staticIP">PPP и статические
	    IP адреса</link>, со следующим изменением:</para>

	  <programlisting>17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255</programlisting>

	  <para>Как и раньше, не включайте номер строки, он используется
	    только для ссылки на строку в этом примере.  Требуется отступ хотя
	    бы в один пробел.</para>

	  <variablelist>
	    <varlistentry>
	      <term>Строка 17:</term>

	      <listitem>
		<para>Номер после символа <literal>/</literal> это число
		  бит в адресе, которые будут запрошены ppp.  Вы можете
		  использовать более подходящие вам IP адреса, но пример
		  выше всегда будет работать.</para>

<!-- в последнем примере 0.0.0.0 отсутствует (ошибка описания ниже?):
		<para>The last argument (<literal>0.0.0.0</literal>) tells
		  PPP to start negotiations using address <hostid
		  role="ipaddr">0.0.0.0</hostid> rather than <hostid
		  role="ipaddr">10.0.0.1</hostid> and is necessary for some
		  ISPs.  Do not use <literal>0.0.0.0</literal> as the first
		  argument to <command>set ifaddr</command> as it prevents
		  PPP from setting up an initial route in
		  <option>-auto</option> mode.</para>
-->
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <para>Если вы не используете режим <option>-auto</option>,
	    потребуется создать запись в
	    <filename>/etc/ppp/ppp.linkup</filename>.
	    Этот файл используется после установки соединения.  На этот момент
	    <command>ppp</command> уже настроит адреса интерфейсов и
	    станет возможным добавление записей в таблицу
	    маршрутизации:</para>

	  <programlisting>1     provider:
2      add default HISADDR</programlisting>

	  <variablelist>
	    <varlistentry>
	      <term>Строка 1:</term>

	      <listitem>
		<para>При установке соединения, <command>ppp</command>
		  ищет запись в <filename>ppp.linkup</filename>
		  по следующим правилам: сначала в соответствии с
		  меткой, используемой в <filename>ppp.conf</filename>.
		  Если это не сработает, ведется поиск записи для
		  IP адреса шлюза.  Это метка в IP записывается в
		  виде IP адреса.  Если запись все еще не найдена,
		  используется запись <literal>MYADDR</literal>.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 2:</term>

	      <listitem>
		<para>Эта строка сообщает <command>ppp</command> добавить
		  маршрут по умолчанию, указывающий на
		  <literal>HISADDR</literal>.  <literal>HISADDR</literal>
		  будет заменен на IP адрес шлюза, определенного
		  IPCP.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>

	  <para>Детальный пример находится в записи
	    <literal>pmdemand</literal> файлов
	    <filename>/usr/share/examples/ppp/ppp.conf.sample</filename>
	    и
	    <filename>/usr/share/examples/ppp/ppp.linkup.sample</filename>.</para>
	</sect4>

	<sect4>
	  <title>Прием входящих звонков</title>
	  <indexterm><primary>PPP</primary><secondary>прием
	  входящих соединений</secondary></indexterm>
	  <para>При настройке <application>ppp</application> для приема
	    входящих звонков на компьютере, подключенном к локальной сети,
	    вам необходимо решить, перенаправлять ли пакеты в локальную сеть.
	    Если вы будете делать это, выделите удаленной стороне IP адрес
	    из диапазона адресов локальной сети, и используйте команду
	    <command>enable proxy</command> в файле
	    <filename>/etc/ppp/ppp.conf</filename>.  Вам потребуется также
	    убедиться, что в файле <filename>/etc/rc.conf</filename>
	    присутствует строка:</para>

	  <programlisting>gateway_enable="YES"</programlisting>
	</sect4>

	  <sect4>
	    <title>Какой getty?</title>

	    <para>Раздел <link linkend="dialup">Настройка FreeBSD для
	      входящих соединений</link> дает хорошее описание включения
	      входящих соединений с использованием &man.getty.8;.</para>

	    <para>Альтернатива <command>getty</command> это <ulink
	      url="http://www.leo.org/~doering/mgetty/index.html">mgetty</ulink>,
	      более интеллектуальная версия <command>getty</command>,
	      разработанная специально для приема входящих звонков..</para>

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

	    <para>Последние версии <command>mgetty</command> (от
	      0.99beta и выше) поддерживают также автоматическое определение
	      потоков PPP, позволяя клиентам безскриптовое подключение
	      к серверу.</para>

	    <para>Обратитесь к разделу <link linkend="userppp-mgetty">Mgetty и
	      AutoPPP</link> за дальнейшей информацией по
	      <command>mgetty</command>.</para>
	  </sect4>

	  <sect4>
	    <title>Права <application>PPP</application></title>

	    <para>Программа <command>ppp</command> обычно запускается с
	      правами пользователя <username>root</username>.
	      Если вы хотите разрешить запуск <command>ppp</command>
	      в режиме сервера с правами обычного пользователя
	      путем запуска <command>ppp</command> как описано ниже,
	      этого пользователя необходимо добавить в группу
	      <username>network</username> в файле
	      <filename>/etc/group</filename>.</para>

	    <para>Вам также потребуется дать ему доступ к одному или более
	      разделов конфигурации, используя команду
	      <command>allow</command>:</para>

	    <programlisting>allow users fred mary</programlisting>

	    <para>Если эта команда используется в разделе
	      <literal>default</literal>, она дает пользователю полный
	      доступ.</para>
	  </sect4>

	  <sect4>
	    <title>Оболочки PPP для пользователей с динамическими IP</title>
	    <indexterm><primary>оболочки PPP</primary></indexterm>

	    <para>Создайте файл, называющийся
	      <filename>/etc/ppp/ppp-shell</filename> и содержащий
	      следующее:</para>

	    <programlisting>#!/bin/sh
IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
CALLEDAS="$IDENT"
TTY=`tty`

if [ x$IDENT = xdialup ]; then
        IDENT=`basename $TTY`
fi

echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"

exec /usr/sbin/ppp -direct $IDENT</programlisting>

	    <para>Этот скрипт должен быть исполняемым.  Теперь создайте
	      на этот скрипт символическую ссылку с именем
	      <filename>ppp-dialup</filename> с помощью следующей
	      команды:</para>

	    <screen>&prompt.root; <userinput>ln -s ppp-shell /etc/ppp/ppp-dialup</userinput></screen>

	    <para>Используйте этот скрипт в качестве
	      <emphasis>оболочки</emphasis> для удаленных пользователей.
	      Ниже приведен пример записи в <filename>/etc/password</filename>
	      для удаленных пользователей PPP с именем пользователя
	      <username>pchilds</username> (не забывайте использовать
	      <command>vipw</command> для редактирования файла паролей).</para>

	    <programlisting>pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup</programlisting>

	    <para>Создайте каталог <filename>/home/ppp</filename>,
	      который доступен для чтения и содержит следующие файлы
	      нулевой длины:</para>

	    <screen>-r--r--r--   1 root     wheel	   0 May 27 02:23 .hushlogin
-r--r--r--   1 root     wheel           0 May 27 02:22 .rhosts</screen>

	    <para>Это предотвратит отображение
	      <filename>/etc/motd</filename>.</para>
	  </sect4>

	  <sect4>
	    <title>Оболочки PPP для пользователей со статическими IP</title>
	    <indexterm><primary>оболочки PPP</primary></indexterm>

	    <para>Создайте файл <filename>ppp-shell</filename> как в примере
	      выше, и для каждой учетной записи со статически назначаемым
	      IP создайте символическую ссылку на
	      <filename>ppp-shell</filename>.</para>

	    <para>Например, если у вас три пользователя удаленного доступа,
	      <username>fred</username>, <username>sam</username> и
	      <username>mary</username>, которые подключаются к вашей
	      сети класса C, выполните следующее:</para>

	    <screen>&prompt.root; <userinput>ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred</userinput>
&prompt.root; <userinput>ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam</userinput>
&prompt.root; <userinput>ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary</userinput></screen>

	    <para>Оболочка каждого из этих пользователей удаленного доступа
	      должна быть символической ссылкой, созданной выше
	      (например, оболочка пользователя <username>mary</username>
	      должна быть <filename>/etc/ppp/ppp-mary</filename>).</para>
	  </sect4>

	  <sect4>
	    <title>Настройка <filename>ppp.conf</filename> для пользователей
	      с динамическими IP</title>

	    <para>Файл <filename>/etc/ppp/ppp.conf</filename> должен
	      содержать примерно такие строки:</para>

	    <programlisting>default:
  set debug phase lcp chat
  set timeout 0

ttyd0:
  set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
  enable proxy

ttyd1:
  set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
  enable proxy</programlisting>

	    <note>
	      <para>Необходимо соблюдать отступы.</para>
	    </note>

	    <para>Раздел <literal>default:</literal> загружается для
	      каждого соединения.  Для каждой строки, включенной в
	      <filename>/etc/ttys</filename>, создайте запись,
	      подобную <literal>ttyd0:</literal> выше.  Каждая строка
	      должна содержать уникальные IP адреса из вашего пула
	      IP адресов, выделенных пользователям с динамическими
	      IP.</para>
	  </sect4>

	  <sect4>
	    <title>Настройка <filename>ppp.conf</filename> для пользователей
	      со статическими IP</title>

	    <para>Помимо содержимого, описанного в примере файла
	      <filename>/usr/share/examples/ppp/ppp.conf</filename>
	      выше, вам потребуется добавить раздел для каждого из
	      пользователей со статическими IP.  Мы продолжим использовать
	      имена <username>fred</username>, <username>sam</username>
	      и <username>mary</username> в качестве примера.</para>

	    <programlisting>fred:
  set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

sam:
  set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

mary:
  set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255</programlisting>

	    <para>Если требуется, файл <filename>/etc/ppp/ppp.linkup</filename>
	      должен также содержать информацию о маршрутизации для
	      каждого пользователя со статическим IP.  В строке ниже
	      через клиентское соединение добавляется маршрут к сети класса
	      C<hostid role="ipaddr">203.14.101.0</hostid>.</para>

	    <programlisting>fred:
  add 203.14.101.0 netmask 255.255.255.0 HISADDR

sam:
  add 203.14.102.0 netmask 255.255.255.0 HISADDR

mary:
  add 203.14.103.0 netmask 255.255.255.0 HISADDR</programlisting>
	</sect4>

	  <sect4 id="userppp-mgetty">
	    <title><command>mgetty</command> и AutoPPP</title>
	    <indexterm>
	<primary><command>mgetty</command></primary>
      </indexterm>
	    <indexterm><primary>AutoPPP</primary></indexterm>
	    <indexterm><primary>LCP</primary></indexterm>

	    <para>Настройка и компиляция <command>mgetty</command> с
	      параметром <literal>AUTO_PPP</literal> позволяет
	      <command>mgetty</command> определять LCP фазу
	      PPP соединений и автоматически порождать оболочку ppp.
	      Однако, поскольку стандартный метод логин/пароль не
	      используется, необходима аутентификация пользователей
	      через PAP или CHAP.</para>

	    <para>В этом разделе предполагается, что пользователь
	      успешно настроил, скомпилировал и установил версию
	      <command>mgetty</command> с параметром
	      <literal>AUTO_PPP</literal> (v0.99beta или
	      более поздняя).</para>

	    <para>Убедитесь, что в файле
	      <filename>/usr/local/etc/mgetty+sendfax/login.config</filename>
	      имеется следующая строка:</para>

	    <programlisting>/AutoPPP/ -     -		      /etc/ppp/ppp-pap-dialup</programlisting>

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

	    <para>Создайте файл
	      <filename>/etc/ppp/ppp-pap-dialup</filename>, содержащий
	      следующее (этот файл должен быть выполняемым):</para>

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

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

	    <programlisting>pap:
  enable pap
  set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
  enable proxy</programlisting>

	    <para>Для каждого пользователя, входящего по этому
	      методу, в файле <filename>/etc/ppp/ppp.secret</filename>
	      должна присутствовать запись с логином/паролем,
	      или, в качестве альтернативы, для аутентификации пользователей
	      по PAP через <filename>/etc/password</filename>, необходимо
	      использовать следующий параметр.</para>

	    <programlisting>enable passwdauth</programlisting>

	    <para>Если вы хотите присвоить некоторым пользователям статический
	      IP, задайте его в качестве третьего аргумента в
	      <filename>/etc/ppp/ppp.secret</filename>.  Обратитесь к
	      к <filename>/usr/share/examples/ppp/ppp.secret.sample</filename>
	      за примерами.</para>
	  </sect4>

	  <sect4>
	    <title>MS расширения</title>
	    <indexterm><primary>DNS</primary></indexterm>
	    <indexterm><primary>NetBIOS</primary></indexterm>
	    <indexterm><primary>PPP</primary><secondary>Расширения Microsoft</secondary></indexterm>
	    <para>Возможна настройка PPP для выдачи адресов DNS и
	      NetBIOS по запросу.</para>

	    <para>Для включения этих расширений с PPP версии 1.x, необходимо
	      добавить к соответствующему разделу
	      <filename>/etc/ppp/ppp.conf</filename>следующие строки.</para>

	    <programlisting>enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5</programlisting>

	    <para>Для PPP версии 2 и выше:</para>

	    <programlisting>accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5</programlisting>

	    <para>Клиентам будут выдаваться адреса первичного и вторичного
	      серверов имен, и адрес хоста NetBIOS.</para>

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

	<sect4 id="userppp-PAPnCHAP">
	  <title>Аутентификация PAP и CHAP</title>
	  <indexterm><primary>PAP</primary></indexterm>
	  <indexterm><primary>CHAP</primary></indexterm>
	  <para>Некоторые провайдеры настраивают систему так, что
	    аутентификация производится с использованием либо PAP либо
	    CHAP.  В этом случае, приглашение <prompt>login:</prompt>
	    при соединении не выдается и соединение PPP
	    начинается сразу.</para>

	  <para>PAP менее безопасен, чем CHAP, но безопасность в данном
	    случае не страдает, поскольку хотя пароли и передаются открытым
	    текстом, они передаются только по модемной линии.  У кракеров
	    не так много возможностей для кражи паролей.</para>

	  <para>В примерах выше <link linkend="userppp-staticIP">PPP
	    и статические IP адреса</link> или <link
	    linkend="userppp-dynamicIP">PPP и динамические IP адреса</link>
	    должны быть сделаны следующие изменения:</para>

	  <programlisting>13      set authname <replaceable>MyUserName</replaceable>
14      set authkey <replaceable>MyPassword</replaceable>
15      set login</programlisting>

	  <variablelist>

	    <varlistentry>
	      <term>Строка 13:</term>

	      <listitem>
		<para>Эта строка указывает имя пользователя PAP/CHAP.  Вам
		  потребуется заменить <replaceable>MyUserName</replaceable>
		  на правильное значение.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 14:</term>
	      <indexterm><primary>password</primary></indexterm>
	      <listitem>
		<para>Эта строка указывает пароль PAP/CHAP.  Вам потребуется
		  заменить <replaceable>MyPassword</replaceable> на
		  правильное значение.  Вы можете также добавить
		  дополнительную строку, такую как:</para>

		<programlisting>16      accept PAP</programlisting>

		<para>или</para>

		<programlisting>16      accept CHAP</programlisting>

		<para>для явного указания протокола, но и PAP и CHAP
		  поддерживаются по умолчанию.</para>
	      </listitem>
	    </varlistentry>

	    <varlistentry>
	      <term>Строка 15:</term>

	      <listitem>
		<para>Ваш провайдер обычно не потребует входа на сервер
		  при использовании PAP или CHAP.  Следовательно, вы
		  должны отключить строку <quote>set login</quote>.</para>
	      </listitem>
	    </varlistentry>
	  </variablelist>
	</sect4>

	<sect4>
	  <title>Изменение настроек <command>ppp</command> <quote>на
	    лету</quote></title>

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

	  <programlisting>set server /var/run/ppp-tun<replaceable>%d</replaceable> DiagnosticPassword 0177</programlisting>

	  <para>С этой директивой ppp будет прослушивать заданный &unix;
	    сокет, запрашивая у клиентов пароль перед выдачей доступа.
	    Символы<literal>%d</literal> заменяются на номер используемого
	    устройства <devicename>tun</devicename>.</para>

	  <para>Как только сокет открыт, в скриптах, выполняющих настройку
	    работающей программы, можно использовать &man.pppctl.8;.</para>
	</sect4>
      </sect3>

      <sect3 id="userppp-nat">
	<title>Использование NAT</title>
	<indexterm><primary>PPP</primary><secondary>NAT</secondary></indexterm>

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

	<programlisting>nat enable yes</programlisting>

	<para>Альтернативно, PPP NAT может быть включен параметром командной
	  строки <literal>-nat</literal>.  Существует также переменная
	  <filename>/etc/rc.conf</filename> <literal>ppp_nat</literal>,
	  которая включена по умолчанию.</para>

	<para>Если вы используете эту возможность, вы также можете
	  найти полезными параметры <filename>/etc/ppp/ppp.conf</filename>
	  для включения пересылки входящих соединений:</para>

	<programlisting>nat port tcp 10.0.0.2:ftp ftp
nat port tcp 10.0.0.2:http http</programlisting>

	<para>или отключить все входящие соединения</para>

	<programlisting>nat deny_incoming yes</programlisting>
      </sect3>

      <sect3 id="userppp-final">
	<title>Завершающая настройка системы</title>
	<indexterm><primary>PPP</primary><secondary>configuration</secondary></indexterm>

	<para>Теперь, когда программа <command>ppp</command> настроена,
	  осталось выполнить еще несколько действий прежде, чем все это
	  заработает.  Они выполняются путем редактирования файла
	  <filename>/etc/rc.conf</filename>.</para>

	<para>Просматривая этот файл, убедитесь, что добавлена строка
	  <literal>hostname=</literal>, например:</para>

	<programlisting>hostname="foo.example.com"</programlisting>

	<para>Если провайдер предоставил вам статический IP адрес и имя,
	  возможно лучше всего использовать это имя в качестве имени
	  хоста.</para>

	<para>Проверьте переменную <literal>network_interfaces</literal>.
	  Если вы хотите настроить систему для дозвона по требованию,
	  убедитесь, что устройство <devicename>tun0</devicename> добавлено
	  в список, иначе удалите его.</para>

	<programlisting>network_interfaces="lo0 tun0"
ifconfig_tun0=</programlisting>

	<note>
	  <para>Переменная <literal>ifconfig_tun0</literal> должна быть пуста,
	    необходимо также создать файл
	    <filename>/etc/start_if.tun0</filename>.  В этом файле должна
	    находиться строка:</para>

	  <programlisting>ppp -auto mysystem</programlisting>

	  <para>Этот скрипт выполняется во время настройки сети, запуская
	    даемона ppp в автоматическом режиме.  Если эта машина является
	    шлюзом для локальной сети, вы можете также использовать
	    переключатель <option>-alias</option>.  Обратитесь к странице
	    справочника за дальнейшей информацией.</para>
	</note>

	<para>Убедитесь, что программа маршрутизации отключена переменной
	  в файле <filename>/etc/rc.conf</filename>:</para>

	<programlisting>router_enable="NO"</programlisting>

	<indexterm>
	  <primary><application>routed</application></primary>
	</indexterm>
	<para>Важно, чтобы даемон <command>routed</command> не был запущен,
	  поскольку он может удалить запись маршрута по умолчанию, создаваемую
	  <command>ppp</command>.</para>

	<para>Возможно, стоит обратить внимание на переменную
	  <literal>sendmail_flags</literal> и убедиться, что она не включает
	  параметр <option>-q</option>, иначе <command>sendmail</command>
	  попытается сразу же обратиться к сети, и компьютер может начать
	  дозвон.  Вы можете попробовать:</para>

	<programlisting>sendmail_flags="-bd"</programlisting>

	<indexterm>
	  <primary><application>sendmail</application></primary>
	</indexterm>
	<para>Обратная сторона этого решения в том, что необходим
	  запуск очереди <command>sendmail</command> после поднятия
	  соединения ppp:</para>

	<screen>&prompt.root; <userinput>/usr/sbin/sendmail -q</userinput></screen>

	<para>Вы можете использовать команду <command>!bg</command> в файле
	  <filename>ppp.linkup</filename> для автоматического выполнения
	  этой задачи:</para>

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

	<indexterm><primary>SMTP</primary></indexterm>
	<para>Если вам это не нужно, возможна настройка
	  <quote>dfilter</quote> для блокирования SMTP трафика.  Обратитесь
	  файлам примеров за дальнейшей информацией.</para>

	<para>Все, что осталось, это перегрузить компьютер.  После
	  перезагрузки вы можете либо выполнить:</para>

	<screen>&prompt.root; <userinput>ppp</userinput></screen>

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

	<screen>&prompt.root; <userinput>ppp -auto provider</userinput></screen>
      </sect3>

      <sect3>
	<title>Итоги</title>

	<para>Для первоначальной настройки ppp необходимо пройти следующие
	  шаги:</para>

	<para>Сторона клиента:</para>

	<procedure>
	  <step>
	    <para>Убедитесь, что устройство <devicename>tun</devicename>
	      встроено в ядро.</para>
	  </step>

	  <step>
	    <para>Убедитесь, что устройства
	      <filename>tun<replaceable>N</replaceable></filename>
	      находятся в каталоге <filename>/dev</filename>.</para>
	  </step>

	  <step>
	    <para>Создайте запись в
	      <filename>/etc/ppp/ppp.conf</filename>.  Пример
	      <filename>pmdemand</filename> должен подойти для большинства
	      провайдеров.</para>
	  </step>

	  <step>
	    <para>Если у вас динамический IP адрес, создайте запись в
	      <filename>/etc/ppp/ppp.linkup</filename>.</para>
	  </step>

	  <step>
	    <para>Обновите файл <filename>/etc/rc.conf</filename>.</para>
	  </step>

	  <step>
	    <para>Создайте скрипт <filename>start_if.tun0</filename>,
	      если необходим дозвон по требованию.</para>
	  </step>
	</procedure>

	<para>Сторона сервера:</para>

	<procedure>
	  <step>
	    <para>Убедитесь, что устройство <devicename>tun</devicename>
	      встроено в ядро.</para>
	  </step>

	  <step>
	    <para>Убедитесь, что устройства
	      <filename>tun<replaceable>N</replaceable></filename>
	      находятся в каталоге <filename>/dev</filename>.</para>
	  </step>

	  <step>
	    <para>Создайте запись в <filename>/etc/passwd</filename>
	      (используя программу &man.vipw.8;).</para>
	  </step>

	  <step>
	    <para>Создайте профиль в домашнем каталоге пользователя,
	      запускающий <command>ppp -direct direct-server</command>
	      или подобную команду.</para>
	  </step>

	  <step>
	    <para>Создайте запись в
	      <filename>/etc/ppp/ppp.conf</filename>.  Пример
	      <filename>direct-server</filename> должен подойти.</para>
	  </step>

	  <step>
	    <para>Создайте запись в
	      <filename>/etc/ppp/ppp.linkup</filename>.</para>
	  </step>

	  <step>
	    <para>Обновите файл <filename>/etc/rc.conf</filename>.</para>
	  </step>
	</procedure>
      </sect3>
    </sect2>
  </sect1>

  <sect1 id="ppp">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Gennady B.</firstname>
	  <surname>Sorokopud</surname>
	  <contrib>Части документа первоначально предоставили </contrib>
	</author>
	<author>
	  <firstname>Robert</firstname>
	  <surname>Huff</surname>
	</author>
      </authorgroup>
    </sect1info>

    <title>PPP уровня ядра</title>

    <sect2>
      <title>Настройка PPP уровня ядра</title>
      <indexterm><primary>PPP</primary><secondary>kernel PPP</secondary></indexterm>

     <para>Перед началом настройки PPP на вашем компьютере, убедитесь, что
	<command>pppd</command> находится в <filename>/usr/sbin</filename>
	и каталог <filename>/etc/ppp</filename> существует.</para>

      <para><command>pppd</command> может работать в двух режимах:</para>

      <orderedlist>
	<listitem>
	  <para>В качестве <quote>клиента</quote> &mdash; когда вы хотите
	    подключить компьютер к внешнему миру через последовательное
	    соединение PPP или модемную линию.</para>
	</listitem>

	<indexterm><primary>PPP</primary><secondary>сервер</secondary></indexterm>
	<listitem>
	  <para>В качестве <quote>сервера</quote> &mdash; когда компьютер
	    подключен к сети и используется для подключения других
	    компьютеров через PPP.</para>
	</listitem>
      </orderedlist>

      <para>В обеих случаях вам потребуется настроить файл параметров
	(<filename>/etc/ppp/options</filename> или
	<filename>~/.ppprc</filename> если на вашем компьютере
	более одного пользователя работают с PPP).</para>

      <para>Вам потребуется также программа для модемных/последовательных
	линий (предпочтительно <filename
	role="package">comms/kermit</filename>) для дозвона и установки
	соединения с удаленным хостом.</para>
    </sect2>

    <sect2>
      <sect2info>
	<authorgroup>
	  <author>
	    <firstname>Trev</firstname>
	    <surname>Roydhouse</surname>
	    <contrib>Основано на информации, предоставленной </contrib>
	    <!-- Trev.Roydhouse@f401.n711.z3.fidonet.org -->
	  </author>
	</authorgroup>
      </sect2info>

      <title>Использование <command>pppd</command> в качестве клиента</title>
      <indexterm><primary>PPP</primary><secondary>клиент</secondary></indexterm>
      <indexterm><primary>Cisco</primary></indexterm>
      <para>Для подключения к линии PPP терминального сервера Cisco
	может использоваться следующий файл
	<filename>/etc/ppp/options</filename>.</para>

      <programlisting>crtscts	 # enable hardware flow control
modem           # modem control line
noipdefault     # remote PPP server must supply your IP address
                # if the remote host does not send your IP during IPCP
                # negotiation, remove this option
passive         # wait for LCP packets
domain ppp.foo.com      # put your domain name here

:&lt;remote_ip&gt;    # put the IP of remote PPP host here
                # it will be used to route packets via PPP link
                # if you didn't specified the noipdefault option
                # change this line to &lt;local_ip&gt;:&lt;remote_ip&gt;

defaultroute    # put this if you want that PPP server will be your
                # default router</programlisting>

      <para>Для подключения:</para>

      <indexterm><primary>kermit</primary></indexterm>
      <indexterm><primary>модем</primary></indexterm>
      <procedure>
	<step>
	  <para>Дозвонитесь на удаленный хост, используя
	    <application>kermit</application> (или любую другую модемную
	    программу), и введите ваше имя пользователя и пароль (или
	    те данные, которые требуются для установления PPP соединения
	    с удаленным хостом).</para>
	</step>

	<step>
	  <para>Выйдите из <application>kermit</application> (без
	    обрыва соединения).</para>
	</step>

	<step>
	  <para>Введите следующее:</para>

	  <screen>&prompt.root; <userinput>/usr/src/usr.sbin/pppd.new/pppd <replaceable>/dev/tty01</replaceable> <replaceable>19200</replaceable></userinput></screen>

	  <para>Убедитесь, что выбраны подходящая скорость и правильное имя
	    устройства.</para>
	</step>
      </procedure>

      <para>Теперь ваш компьютер подключен по PPP.  Если соединение не
	состоялось, вы можете добавить параметр <option>debug</option>
	к файлу <filename>/etc/ppp/options</filename>, и отследить
	проблему по сообщениям на консоли.</para>

      <para>Следующий скрипт <filename>/etc/ppp/pppup</filename> проведет все
	3 стадии в автоматическом режиме:</para>

      <programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing pppd, PID=' ${pid}
        kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing kermit, PID=' ${pid}
        kill -9 ${pid}
fi

ifconfig ppp0 down
ifconfig ppp0 delete

kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200</programlisting>

      <indexterm><primary>kermit</primary></indexterm>
      <para><filename>/etc/ppp/kermit.dial</filename> это скрипт
	<application>kermit</application>, который дозванивается до
	удаленного хоста и проходит необходимую авторизацию (пример
	такого скрипта находится в конце этого раздела).</para>

      <para>Используйте следующий скрипт <filename>/etc/ppp/pppdown</filename>
	для отключения от PPP линии:</para>

      <programlisting>#!/bin/sh
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
        echo 'killing pppd, PID=' ${pid}
        kill -TERM ${pid}
fi

ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing kermit, PID=' ${pid}
        kill -9 ${pid}
fi

/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptest</programlisting>

      <para>Проверьте, запущен ли еще <command>pppd</command>,
	выполнив <filename>/usr/etc/ppp/ppptest</filename>, который выглядит
	примерно так:</para>

      <programlisting>#!/bin/sh
pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
if [ X${pid} != "X" ] ; then
        echo 'pppd running: PID=' ${pid-NONE}
else
        echo 'No pppd running.'
fi
set -x
netstat -n -I ppp0
ifconfig ppp0</programlisting>

      <para>Для обрыва соединения, выполните
	<filename>/etc/ppp/kermit.hup</filename>, который должен
	содержать:</para>

      <programlisting>set line /dev/tty01	; put your modem device here
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none

pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit</programlisting>

      <para>Существует альтернативный метод, использующий
	<command>chat</command> вместо <command>kermit</command>:</para>

      <para>Для установления соединения <command>pppd</command>достаточно
	двух файлов.</para>

      <para><filename>/etc/ppp/options</filename>:</para>

      <programlisting>/dev/cuaa1 115200

crtscts		# enable hardware flow control
modem		# modem control line
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault	# remote PPP serve must supply your IP address
	        # if the remote host doesn't send your IP during
                # IPCP negotiation, remove this option
passive         # wait for LCP packets
domain &lt;your.domain&gt;	# put your domain name here

:		# put the IP of remote PPP host here
	        # it will be used to route packets via PPP link
                # if you didn't specified the noipdefault option
                # change this line to &lt;local_ip&gt;:&lt;remote_ip&gt;

defaultroute	# put this if you want that PPP server will be
	        # your default router</programlisting>

      <para><filename>/etc/ppp/login.chat.script</filename>:</para>

      <note>
	<para>Все это может быть расположено на одной строке.</para>
      </note>

      <programlisting>ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT&lt;phone.number&gt;
  CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: &lt;login-id&gt;
  TIMEOUT 5 sword: &lt;password&gt;</programlisting>

      <para>Как только эти файлы будут созданы и отредактированы, необходимо
	только запустить <command>pppd</command>, вот так:</para>

      <screen>&prompt.root; <userinput>pppd</userinput></screen>
    </sect2>

    <sect2>
      <title>Использование <command>pppd</command> в качестве сервера</title>

      <para><filename>/etc/ppp/options</filename> должен содержать примерно
	следующее:</para>

      <programlisting>crtscts                         # Hardware flow control
netmask 255.255.255.0           # netmask (not required)
192.114.208.20:192.114.208.165  # IP's of local and remote hosts
                                # local ip must be different from one
                                # you assigned to the Ethernet (or other)
                                # interface on your machine.
                                # remote IP is IP address that will be
                                # assigned to the remote machine
domain ppp.foo.com              # your domain
passive                         # wait for LCP
modem                           # modem line</programlisting>

      <para>Следующий скрипт <filename>/etc/ppp/pppserv</filename>
	укажет <application>pppd</application> работать в качестве
	сервера:</para>

      <programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing pppd, PID=' ${pid}
        kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing kermit, PID=' ${pid}
        kill -9 ${pid}
fi

# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete

# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans

# run ppp
pppd /dev/tty01 19200</programlisting>

      <para>Используйте этот скрипт <filename>/etc/ppp/pppservdown</filename>
	для остановки сервера:</para>

      <programlisting>#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing pppd, PID=' ${pid}
        kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
if [ "X${pid}" != "X" ] ; then
        echo 'killing kermit, PID=' ${pid}
        kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete

kermit -y /etc/ppp/kermit.noans</programlisting>

      <para>Следующий <application>kermit</application> скрипт
	(<filename>/etc/ppp/kermit.ans</filename>) включит/отключит
	режим ответа модема на входящие звонки.  Он должен выглядеть
	примерно так:</para>

      <programlisting>set line /dev/tty01
set speed 19200
set file type binary
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none

pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13   ; change this to out ATS0=0\13 if you want to disable
                ; autoanswer mode
inp 5 OK
echo \13
exit</programlisting>

      <para>Скрипт, называющийся <filename>/etc/ppp/kermit.dial</filename>,
	используется для дозвона и аутентификации на удаленном хосте.
	Вам потребуется приспособить его под собственные нужды.  Поместите
	ваш логин и пароль в этот скрипт; вам также потребуется изменить
	операторы input в зависимости от ответов от модема и удаленного
	хоста.</para>

      <programlisting>;
; put the com line attached to the modem here:
;
set line /dev/tty01
;
; put the modem speed here:
;
set speed 19200
set file type binary            ; full 8 bit file xfer
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto                ; Then SET CARRIER if necessary,
set dial display on             ; Then SET DIAL if necessary,
set input echo on
set input timeout proceed
set input case ignore
def \%x 0                       ; login prompt counter
goto slhup

:slcmd                          ; put the modem in command mode
echo Put the modem in command mode.
clear                           ; Clear unread characters from input buffer
pause 1
output +++                      ; hayes escape sequence
input 1 OK\13\10                ; wait for OK
if success goto slhup
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd              ; if modem doesn't answer OK, try again

:slhup                          ; hang up the phone
clear                           ; Clear unread characters from input buffer
pause 1
echo Hanging up the phone.
output ath0\13                  ; hayes command for on hook
input 2 OK\13\10
if fail goto slcmd              ; if no OK answer, put modem in command mode

:sldial                         ; dial the number
pause 1
echo Dialing.
output atdt9,550311\13\10               ; put phone number here
assign \%x 0                    ; zero the time counter

:look
clear                           ; Clear unread characters from input buffer
increment \%x                   ; Count the seconds
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup

:sllogin                        ; login
assign \%x 0                    ; zero the time counter
pause 1
echo Looking for login prompt.

:slloop
increment \%x                   ; Count the seconds
clear                           ; Clear unread characters from input buffer
output \13
;
; put your expected login prompt here:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 10 goto slloop         ; try 10 times to get a login prompt
else goto slhup                 ; hang up and start again if 10 failures

:sluid
;
; put your userid here:
;
output ppp-login\13
input 1 {Password: }
;
; put your password here:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit

:slnodial
echo \7No dialtone.  Check the telephone line!\7
exit 1

; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:</programlisting>
    </sect2>
  </sect1>

  <sect1 id="ppp-troubleshoot">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Tom</firstname>
	  <surname>Rhodes</surname>
	  <contrib>Предоставил </contrib>
	</author>
      </authorgroup>
      <!-- 13 June 2003 -->
    </sect1info>
    <title>Решение проблем с соединениями <acronym>PPP</acronym></title>

    <indexterm><primary>PPP</primary><secondary>решение проблем</secondary></indexterm>

      <para>Этот раздел охватывает несколько вопросов, которые могут
	возникнуть при использовании PPP через модемные соединения.
	Например, предположим, что вам потребовалось узнать, какое
	именно приглашение отображает система, до которой вы дозваниваетесь.
	Некоторые провайдеры выдают приглашение <literal>ssword</literal>,
	другие <literal>password</literal>; если <command>ppp</command>
	скрипт не обрабатывает такие приглашения, попытка входа
	завершится неудачно.  Наиболее общий способ отладки
	соединений <command>ppp</command> это подключение вручную.
	Ниже дана пошаговая информация по подключению вручную.</para>

    <sect2>
      <title>Проверьте файлы устройств</title>

	<para>Если вы пересобирали ядро, проверьте устройство
	  <devicename>sio</devicename>.  Если вы не перенастраивали ядро,
	  нет причин для беспокойства.  Просто проверьте вывод
	  <command>dmesg</command> для модемного устройства следующей
	  командой:</para>

	<screen>&prompt.root;<userinput>dmesg | grep sio</userinput></screen>

	<para>Вы должны получить информацию о устройствах
	  <devicename>sio</devicename>.  Это COM порты, которые нам
	  необходимы.  Если ваш модем работает как стандартный
	  последовательный порт, вы увидите его на
	  <devicename>sio1</devicename>, или <devicename>COM2</devicename>.
	  Если это так,
	  вам не требуется пересобирать ядро, необходимо лишь создать
	  последовательное устройство.  Вы можете сделать это, зайдя в
	  <filename>/dev</filename> и запустив скрипт
	  <filename>MAKEDEV</filename>.  Создайте последовательные
	  устройства:</para>

	<screen>&prompt.root; <userinput>sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3</userinput></screen>

	<para>Если модем находится на <devicename>sio1</devicename>,
	  или <devicename>COM2</devicename> в DOS, модемным устройством
	  будет <filename>/dev/cuaa1</filename>.</para>
    </sect2>

    <sect2>
      <title>Подключение вручную</title>

      <para>Подключение к интернет с контролированием <command>ppp</command>
	вручную это быстрый, легкий и действенный способ отладки
	соединения или получения информации о обслуживании
	провайдером клиентского соединения <command>ppp</command>.
	Запустите <application>PPP</application> из командной строки.
	В примерах в качестве имени хоста мы будем использовать
	<emphasis>example</emphasis>.  Запустите <command>ppp</command>,
	введя команду <command>ppp</command>:</para>

      <screen>&prompt.root; <userinput>ppp</userinput></screen>

      <para>Теперь программа <command>ppp</command> запущена.</para>

      <screen>ppp ON example&gt; <userinput>set device <filename>/dev/cuaa1</filename></userinput></screen>

      <para>Мы указали модемное устройство, в данном случае
	<devicename>cuaa1</devicename>.</para>

      <screen>ppp ON example&gt; <userinput>set speed 115200</userinput></screen>

      <para>Мы установили скорость подключения к модему, в данном случае
	115,200 <acronym>кбит/с</acronym>.</para>

      <screen>ppp ON example&gt; <userinput>enable dns</userinput></screen>

      <para>Сообщает <command>ppp</command> настроить разрешение имен,
	добавив строки в <filename>/etc/resolv.conf</filename>.
	Если <command>ppp</command> не может определить имя хоста,
	его можно настроить позже вручную.</para>

      <screen>ppp ON example&gt; <userinput>term</userinput></screen>

      <para>Переключение в <quote>терминальный</quote> режим для контроля
	модема вручную.</para>

      <programlisting>deflink: Entering terminal mode on <filename>/dev/cuaa1</filename>
type '~h' for help</programlisting>

      <screen><userinput>at</userinput>
OK
<userinput>atdt<replaceable>123456789</replaceable></userinput></screen>

      <para>Использование команды <command>at</command> для инициализации
	модема, а затем <command>atdt</command> и номера провайдера
	для начала дозвона.</para>

      <screen>CONNECT</screen>

      <para>Подтверждение соединения, если есть проблемы с соединением,
	не вызванные проблемами в оборудовании, здесь мы попытаемся решить
	их.</para>

      <screen>ISP Login:<userinput>myusername</userinput></screen>

      <para>Здесь вам предлагается ввести имя пользователя в приглашение,
	выводимое сервером провайдера.</para>

      <screen>ISP Pass:<userinput>mypassword</userinput></screen>

      <para>Здесь предлагается ввести пароль, предоставленный провайдером.
	Как и при входе в &os;, пароль не отображается.</para>

      <screen>Shell or PPP:<userinput>ppp</userinput></screen>

      <para>В зависимости от вашего провайдера, это приглашение может не
	появиться.  Здесь задается вопрос, хотите ли вы использовать
	оболочку на компьютере провайдера или запустить
	<command>ppp</command>.  В этом примере мы выбрали
	<command>ppp</command>, поскольку хотим соединиться с
	интернет.</para>

      <screen>Ppp ON example&gt;</screen>

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

      <screen>PPp ON example&gt;</screen>

      <para>Мы успешно аутентифицировались у провайдера и ожидаем
	присвоения <acronym>IP</acronym> адреса.</para>

      <screen>PPP ON example&gt;</screen>

      <para>Мы завершили согласование <acronym>IP</acronym> адресов,
	соединение успешно установлено.</para>

      <screen>PPP ON example&gt;<userinput>add default HISADDR</userinput></screen>

      <para>Это маршрут по умолчанию, его необходимо настроить, чтобы
	сделать возможной связь с внешним миром, поскольку на этот
	момент установлена связь только с удаленной стороной.
	Если маршрут не устанавливается из-за уже существующего маршрута,
	добавьте символ <literal>!</literal> перед <option>add</option>.
	Альтернативно вы можете сделать настройку перед установкой
	соединения.</para>

      <para>Если все прошло удачно, на данный момент должно работать
	соединение с интернет, которое можно поместить в фоновый режим
	клавишами <keycombo action="simul"><keycap>CTRL</keycap>
	<keycap>z</keycap></keycombo>.  Переход строки
	<command>PPP</command> в приглашении в нижний регистр
	(<command>ppp</command>) означает, что соединение было разорвано.
	Таким образом, символы P в верхнем регистре означают наличие
	соединения, а в нижнем &mdash; потерю соединения.</para>

      <sect3>
	<title>Отладка</title>

	<para>Если у вас выделенная линия и нет необходимости устанавливать
	  соединение, выключите контроль передачи данных
	  <acronym>CTS/RTS</acronym> командой <option>set
	  ctsrts off</option>.  Это обычно необходимо при подключении к
	  поддерживающим <application>PPP</application> терминальным
	  серверам, когда <application>PPP</application> прерывается
	  при попытке записать данные в ваше соединение, и ожидает сигнала
	  <acronym>CTS</acronym>, или Clear To Send, который не появляется.
	  Если вы используете этот параметр, используйте также параметр
	  <option>set accmap</option>, который может быть необходим для
	  устранения зависимости от оборудования путем пропускания
	  определенных символов через соединение, обычно XON/XOFF.
	  Обратитесь к странице справочника &man.ppp.8; за более подробной
	  информацией по этому параметру и его использованию.</para>

	<para>Если у вас старый модем, может потребоваться использование
	  <option>set parity even</option>.  Проверка четности по умолчанию
	  отключена, но она используется для для устранения ошибок
	  (с серьезным увеличением объема трафика) на старых модемах
	  и у некоторых провайдеров.</para>

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

	<para>Если вы не получаете приглашения на вход, скорее всего
	  вам требуется использование аутентификации
	  <acronym>PAP</acronym> или <acronym>CHAP</acronym> вместо
	  &unix; стиля как в примерах выше.  Для использования
	  <acronym>PAP</acronym> или <acronym>CHAP</acronym> просто добавьте
	  следующие параметры <application>PPP</application> перед
	  переходом в терминальный режим:</para>

	<screen>ppp ON example&gt; <userinput>set authname <replaceable>myusername</replaceable></userinput></screen>

	<para>Необходимо заменить <replaceable>myusername</replaceable>
	  на имя пользователя, выданное провайдером.</para>

	<screen>ppp ON example&gt; <userinput>set authkey <replaceable>mypassword</replaceable></userinput></screen>

	<para>Где <replaceable>mypassword</replaceable> должен быть
	  заменен на пароль, выданный провайдером.</para>

	<para>Если вы подключаетесь, не можете определить ни одно доменное
	  имя, попробуйте использовать &man.ping.8; с каким-либо
	  <acronym>IP</acronym> адресом и просмотрите выводимую информацию.
	  Если 100 процентов (100%) пакетов теряются, скорее всего не
	  назначен маршрут по умолчанию.  Дважды проверьте, что параметр
	  <option>add default HISADDR</option> установлен во время
	  соединения.  Если вы можете подключиться к удаленному
	  <acronym>IP</acronym> адресу, возможно, что адрес сервера имен не
	  был добавлен в <filename>/etc/resolv.conf</filename>.
	  Этот файл должен выглядеть примерно так:</para>

	<programlisting>domain <replaceable>example.com</replaceable>
nameserver <replaceable>x.x.x.x</replaceable>
nameserver <replaceable>y.y.y.y</replaceable></programlisting>

	<para>Где <replaceable>x.x.x.x</replaceable> и
	  <replaceable>y.y.y.y</replaceable> должны быть заменены на
	  <acronym>IP</acronym> адреса DNS серверов провайдера.
	  Эта информация может предоставляться провайдером,
	  вы можете выяснить это в службе поддержки.</para>

	<para>Вы можете также настроить &man.syslog.3; для протоколирования
	  <application>PPP</application> соединения.  Просто добавьте:</para>

	<programlisting>!ppp
*.*     /var/log/ppp.log</programlisting>

	<para>в файл <filename>/etc/syslog.conf</filename>.  В большинстве
	  случаев эти строки уже присутствуют.</para>

      </sect3>
    </sect2>
  </sect1>

  <sect1 id="pppoe">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Jim</firstname>
	  <surname>Mock</surname>
	  <contrib>Предоставил (с http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) </contrib>
	</author>
      </authorgroup>
      <!-- 10 Jan 2000 -->
    </sect1info>

    <title>Использование PPP через Ethernet (PPPoE)</title>
    <indexterm><primary>PPP</primary><secondary>через Ethernet</secondary></indexterm>
    <indexterm>
      <primary>PPPoE</primary>
      <see>PPP, через Ethernet</see>
    </indexterm>

    <para>Этот раздел описывает настройку PPP через Ethernet (PPP over
      Ethernet, <acronym>PPPoE</acronym>).</para>

    <sect2>
      <title>Настройка ядра</title>

      <para>Для PPPoE более не требуется настройка ядра.  Если необходимая
	поддержка netgraph не встроена в ядро, она будет динамически загружена
	<application>ppp</application>.</para>
    </sect2>

    <sect2>
      <title>Настройка <filename>ppp.conf</filename></title>

      <para>Вот пример работающего
	<filename>ppp.conf</filename>:</para>

      <programlisting>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:<replaceable>xl1</replaceable> # replace xl1 with your Ethernet device
  set authname YOURLOGINNAME
  set authkey YOURPASSWORD
  set dial
  set login
  add default HISADDR</programlisting>

    </sect2>

    <sect2>
      <title>Запуск <application>ppp</application></title>

      <para>Под пользователем <username>root</username> вы можете
	запустить:</para>

      <screen>&prompt.root; <userinput>ppp -ddial name_of_service_provider</userinput></screen>

    </sect2>

    <sect2>
      <title>Запуск <application>ppp</application> при загрузке</title>

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

      <programlisting>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"</programlisting>
    </sect2>

    <sect2>
      <title>Использование тега сервиса PPPoE</title>

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

      <para>В документации, предоставляемой провайдером, должна находиться
	необходимая информация о теге сервиса.  Если вы не можете
	ее обнаружить, обратитесь в службу поддержки.</para>

      <para>В крайнем случае, вы можете попробовать метод, предложенный в
	программе <ulink url="http://www.roaringpenguin.com/pppoe/">Roaring
	Penguin PPPoE</ulink>, которая находится в <link
	linkend="ports">коллекции портов</link>.  Учтите, что этот
	метод может сделать ваш модем неработоспособным, так что дважды
	подумайте перед тем, как воспользоваться им.  Просто установите
	программу, поставляемую с модемом вашим провайдером.  Затем,
	войдите в меню <guimenu>System</guimenu> программы.  Имя вашего
	профиля должно находиться здесь.  Обычно это
	<emphasis>ISP</emphasis>.</para>

      <para>Имя профиля (тег сервиса) будет использоваться в записи
	настройки PPPoE в файле <filename>ppp.conf</filename>
	(часть команды <command>set device</command>, относящаяся к
	провайдеру).  Обратитесь к странице справочника &man.ppp.8;
	за более подробной информацией.  Эта команда должна выглядеть
	примерно так:</para>

      <programlisting>set device PPPoE:<replaceable>xl1</replaceable>:<replaceable>ISP</replaceable></programlisting>

      <para>Не забудьте изменить <replaceable>xl1</replaceable> на имя
	устройства вашей Ethernet карты.</para>
      <para>Не забудьте изменить <replaceable>ISP</replaceable> на
	профиль, определенный вами ранее.</para>

      <para>Дополнительная информация:</para>

      <itemizedlist>
	<listitem>
	  <para><ulink
	    url="http://renaud.waldura.com/doc/freebsd/pppoe/">Cheaper
	    Broadband with FreeBSD on DSL</ulink>, опубликовал Renaud
	    Waldura.</para>
	</listitem>

	<listitem>
	  <para><ulink
	      url="http://www.ruhr.de/home/nathan/FreeBSD/tdsl-freebsd.html">
	      Nutzung von T-DSL und T-Online mit FreeBSD</ulink>
	    by Udo Erdelhoff (на немецком).</para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2 id="ppp-3com">

      <title>PPPoE c &tm.3com; <trademark class="registered">HomeConnect</trademark> ADSL Modem Dual Link</title>

      <para>Этот модем не поддерживает <ulink
	url="http://www.faqs.org/rfcs/rfc2516.html">RFC 2516</ulink>
	(<emphasis>Метод соединения PPP через Ethernet
	(PPPoE)</emphasis>, написанный L. Mamakos, K. Lidl, J. Evarts,
	D. Carrel, D. Simone, и R. Wheeler).  Вместо этого, для
	фреймов Ethernet используются различные коды типов пакетов.
	Сообщите <ulink url="http://www.3com.com/">3Com</ulink> если
	считаете, что они должны соблюдать спецификации PPPoE.</para>

      <para>Для включения поддержки этого нестандартного устройства, в FreeBSD
	необходимо установить переменную sysctl.  Это может быть сделано
	автоматически, поместите в
	<filename>/etc/sysctl.conf</filename> следующую переменную:</para>

	<programlisting>net.graph.nonstandard_pppoe=1</programlisting>

      <para>или, для непосредственного включения, выполните команду
	<command>sysctl net.graph.nonstandard_pppoe=1</command>.</para>

      <para>К сожалению, поскольку эта настройка влияет на всю систему,
	невозможно одновременно взаимодействовать с нормальным PPPoE
	клиентом или сервером и &tm.3com; <trademark
	class="registered">HomeConnect</trademark> ADSL Modem.</para>
    </sect2>
  </sect1>

  <sect1 id="pppoa">
    <title>Использование <application>PPP</application> через ATM
      (PPPoA)</title>
    <indexterm><primary>PPP</primary><secondary>через ATM</secondary></indexterm>
    <indexterm>
      <primary>PPPoA</primary>
      <see>PPP, через ATM</see>
    </indexterm>

    <para>Далее описано как настроить PPP через ATM (PPP over ATM, PPPoA).
      PPPoA популярен у европейских провайдеров DSL.</para>

    <sect2>
      <title>Использование PPPoA с Alcatel &speedtouch; USB</title>

      <para>Поддержка PPPoA для этого устройства в FreeBSD поставляется в
	виде порта, поскольку встроенное программное обеспечение поставляется
	под <ulink
	url="http://www.speedtouchdsl.com/disclaimer_lx.htm">лицензионным
	соглашением Alcatel</ulink> и не может свободно распространяться с
	основной системой FreeBSD.</para>

      <para>Для установки этой программы, просто используйте
	<link linkend="ports">коллекцию портов</link>.  Установите
	порт <filename role="package">net/pppoa</filename> и следуйте
	инструкциям.</para>

      <para>Как и многие устройства USB, Alcatel &speedtouch; USB должен
	загрузить встроенное программное обеспечение с компьютера.
	Возможна автоматизация этого процесса в &os;, чтобы эта
	передача происходила при подключении устройства к порту USB.
	Для включения этой автоматической передачи необходимо добавить
	в <filename>/etc/usbd.conf</filename> нижеприведенную информацию.
	Этот файл необходимо отредактировать под пользователем
	<username>root</username>.</para>

      <programlisting>device "Alcatel SpeedTouch USB"
    devname "ugen[0-9]+"
    vendor 0x06b9
    product 0x4061
    attach "/usr/local/sbin/modem_run -f /usr/local/libdata/mgmt.o"</programlisting>

      <para>Для включения даемона USB, <application>usbd</application>,
	поместите в <filename>/etc/rc.conf</filename> следующую строку:</para>

      <programlisting>usbd_enable="YES"</programlisting>

      <para>Возможна также настройка
	<application>ppp</application> для дозвона при запуске.  Для этого
	добавьте в <filename>/etc/rc.conf</filename> нижеприведенные строки.
	Опять же, для этого вам необходимо войти под пользователем
	<username>root</username>.</para>

      <programlisting>ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="adsl"</programlisting>

      <para>Необходимо также использовать пример файла
	<filename>ppp.conf</filename>, поставляемый с портом
	<filename role="package">net/pppoa</filename>.</para>

    </sect2>

    <sect2>
      <title>Использование mpd</title>

      <para>Вы можете использовать <application>mpd</application> для
	подключения к различным сервисам, в частности к сервисам PPTP.
	Вы можете найти <application>mpd</application> в коллекции
	портов, <filename role="package">net/mpd</filename>.
	Многие ADSL модемы требуют, чтобы PPTP туннель был создан между
	модемом и компьютером, один из таких модемов это Alcatel
	&speedtouch; Home.</para>

      <para>Сначала установите порт, затем настройте
	<application>mpd</application> под собственные нужды и настройки
	провайдера.  Порт помещает набор примеров настройки в каталог
	<filename><replaceable>PREFIX</replaceable>/etc/mpd/</filename>.
	<replaceable>PREFIX</replaceable> означает каталог, в который
	устанавливаются порты, по умолчанию это
	<filename>/usr/local/</filename>.  Полное руководство по настройке
	<application>mpd</application> доступно в HTML формате после
	установки порта.  Оно находится в
	<filename><replaceable>PREFIX</replaceable>/share/doc/mpd/</filename>.
	Ниже находится пример настройки <application>mpd</application>
	для соединения с ADSL сервисом.  Настройка разделена на два
	файла, первый это <filename>mpd.conf</filename>:</para>

      <programlisting>default:
    load adsl

adsl:
    new -i ng0 adsl adsl
    set bundle authname <replaceable>username</replaceable> <co
    id="co-mpd-ex-user">
    set bundle password <replaceable>password</replaceable> <co
    id="co-mpd-ex-pass">
    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</programlisting>

    <calloutlist>
      <callout arearefs="co-mpd-ex-user">
	<para>Имя пользователя, используемое для аутентификации у
	  провайдера.</para>
      </callout>
      <callout arearefs="co-mpd-ex-pass">
	<para>Пароль, используемый для аутентификации у
	  провайдера.</para>
      </callout>
    </calloutlist>

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

    <programlisting>adsl:
    set link type pptp
    set pptp mode active
    set pptp enable originate outcall
    set pptp self <replaceable>10.0.0.1</replaceable> <co
    id="co-mpd-ex-self">
    set pptp peer <replaceable>10.0.0.138</replaceable> <co
    id="co-mpd-ex-peer"></programlisting>

    <calloutlist>
      <callout arearefs="co-mpd-ex-self">
	<para>IP адрес компьютера &os;, с которого вы будете использовать
	  <application>mpd</application>.</para>
      </callout>
      <callout arearefs="co-mpd-ex-peer">
	<para>IP адрес модема ADSL.  Для Alcatel
	  &speedtouch; Home этот адрес по умолчанию <hostid
	  role="ipaddr">10.0.0.138</hostid>.</para>
      </callout>
    </calloutlist>

    <para>Инициализация соединения возможно простым выполнением следующей
      команды под <username>root</username>:</para>

    <screen>&prompt.root; <userinput>mpd -b <replaceable>adsl</replaceable></userinput></screen>

    <para>Вы можете просмотреть статус соединения с помощью следующей
      команды:</para>

    <screen>&prompt.user; <userinput>ifconfig <replaceable>ng0</replaceable></userinput>
ng0: flags=88d1&lt;UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST&gt; mtu 1500
     inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff</screen>

    <para>Использование <application>mpd</application> это рекомендуемый
      способ подключения к сервису ADSL из &os;.</para>

    </sect2>

    <sect2>
      <title>Использование pptpclient</title>

      <para>Возможно также использование FreeBSD для подключения к сервисам
	PPPoA с помощью
	<filename role="package">net/pptpclient</filename>.</para>

      <para>Для подключения к сервису DSL с использованием <filename
	role="package">net/pptpclient</filename>, установите порт или
	пакет и отредактируйте <filename>/etc/ppp/ppp.conf</filename>.
	Вам потребуется работать под <username>root</username>.
	Пример настройки <filename>ppp.conf</filename> дан ниже.
	За дальнейшей информацией по параметрам <filename>ppp.conf</filename>
	обратитесь к странице справочника <application>ppp</application>,
	&man.ppp.8;.</para>

      <programlisting>adsl:
 set log phase chat lcp ipcp ccp tun command
 set timeout 0
 enable dns
 set authname <replaceable>username</replaceable> <co id="co-pptp-ex-user">
 set authkey <replaceable>password</replaceable> <co id="co-pptp-ex-pass">
 set ifaddr 0 0
 add default HISADDR</programlisting>

   <calloutlist>
     <callout arearefs="co-pptp-ex-user">
	   <para>Имя пользователя вашей учетной записи у провайдера DSL.</para>
	 </callout>
	 <callout arearefs="co-pptp-ex-pass">
	   <para>Пароль для вашей учетной записи.</para>
	 </callout>
   </calloutlist>

    <warning>
      <para>Поскольку вам необходимо поместить пароль в незашифрованном виде в
	файл <filename>ppp.conf</filename>, убедитесь что никто другой не
	сможет прочесть содержимое этого файла.  Следующая последовательность
	команд сделает этот файл доступным для чтения только пользователю
	<username>root</username>.  Обратитесь к страницам справочника
	&man.chmod.1; и &man.chown.8; за дальнейшей информацией.</para>

	<screen>&prompt.root; <userinput>chown root:wheel /etc/ppp/ppp.conf</userinput>
&prompt.root; <userinput>chmod 600 /etc/ppp/ppp.conf</userinput></screen>
    </warning>

      <para>Следующая команда откроет туннель для PPP сессии к вашему
	DSL маршрутизатору.  Модемы Ethernet DSL поставляются с настроенным
	IP адресом локальной сети, к которому вы подключаетесь. У
	Alcatel &speedtouch; Home этот адрес <hostid
	role="ipaddr">10.0.0.138</hostid>.  В документации на ваш
	маршрутизатор должно быть указано, какой адрес используется.
	Для открытия туннеля и начала PPP сессии выполните:</para>

      <screen>&prompt.root; <userinput>pptp <replaceable>address</replaceable> <replaceable>adsl</replaceable></userinput></screen>

      <tip>
	<para>Чтобы вернуться в приглашение командной строки после выполнения
	  этой команды, добавьте символ <quote>&amp;</quote> в конец
	  строки.</para>
      </tip>

      <para>Устройство виртуального туннеля <devicename>tun</devicename>
	будет создано для взаимодействия между процессами
	<application>pptp</application> и <application>ppp</application>.
	Как только вы вернетесь в приглашение, или процесс
	<application>pptp</application> выполнит соединение, вы можете
	проверить туннель примерно такой командой:</para>

      <screen>&prompt.user; <userinput>ifconfig <replaceable>tun0</replaceable></userinput>
tun0: flags=8051&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; mtu 1500
        inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
        Opened by PID 918</screen>

      <para>Если вы не сможете соединиться, проверьте настройку
	маршрутизатора, которая обычно доступна через
	<application>telnet</application> или через веб браузер.
	Если вы все еще не можете подключиться, проверьте вывод команды
	<command>pptp</command> и содержимое лог файла
	<application>ppp</application>,
	<filename>/var/log/ppp.log</filename>.</para>
    </sect2>
  </sect1>

  <sect1 id="slip">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Satoshi</firstname>
	  <surname>Asami</surname>
	  <contrib>Первоначально предоставил </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Guy</firstname>
	  <surname>Helmer</surname>
	  <contrib>Дополнительный материал предоставили </contrib>
	</author>
	<author>
	  <firstname>Piero</firstname>
	  <surname>Serini</surname>
	</author>
      </authorgroup>
    </sect1info>

    <title>Использование SLIP</title>
    <indexterm><primary>SLIP</primary></indexterm>

    <sect2 id="slipc">
      <title>Настройка SLIP клиента</title>
      <indexterm><primary>SLIP</primary><secondary>клиент</secondary></indexterm>
      <para>Ниже дан один из способов настройки FreeBSD для подключения к
	SLIP сети со статическим адресом.  Для динамического подключения
	(адрес изменяется при каждом дозвоне) возможно потребуется более
	сложная настройка.</para>

      <para>Сначала определите, к какому последовательному порту подключен
	модем.  Многие создают символическую ссылку, такую как
	<filename>/dev/modem</filename>, на настоящий файл устройства,
	<filename>/dev/cuaaN</filename>.  Это позволяет абстрагироваться
	от имени файла устройства, например если вы переносите модем
	на другой порт.  Довольно сложно править множество файлов в
	<filename>/etc</filename> и <filename>.kermrc</filename> во
	всей системе!</para>

      <note>
	<para><filename>/dev/cuaa0</filename> это
	  <devicename>COM1</devicename>, <filename>cuaa1</filename> это
	  <devicename>COM2</devicename>, и т.д.</para>
      </note>

      <para>Убедитесь, что в вашем файле настройки ядра присутствует
	строка:</para>

      <programlisting>pseudo-device   sl      1</programlisting>

      <para>В &os;&nbsp;5.X, используйте вместо этой строки
	следующую:</para>

      <programlisting>device   sl</programlisting>

      <para>Эта строка включена в ядро <filename>GENERIC</filename>, так что
	если вы ее не удаляли, проблем быть не должно.</para>

      <sect3>
	<title>То, что необходимо сделать только один раз</title>

	<procedure>
	  <step>
	    <para>Добавьте ваш компьютер, шлюз и сервера имен в файл
	      <filename>/etc/hosts</filename>.  Вот пример такого
	      файла:</para>

	    <programlisting>127.0.0.1	       localhost loghost
136.152.64.181          water.CS.Example.EDU water.CS water
136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9            ns1.Example.EDU ns1
128.32.136.12           ns2.Example.EDU ns2</programlisting>
	  </step>

	  <step>
	    <para>Убедитесь, что в файле <filename>/etc/host.conf</filename>
	      <option>hosts</option> находится перед <option>bind</option>
	      (для FreeBSD версий до 5.0).  Начиная с FreeBSD&nbsp;5.0,
	      система использует файл <filename>/etc/nsswitch.conf</filename>,
	      убедитесь, что параметр <option>files</option> находится перед
	      <option>dns</option> в строке <option>hosts</option> этого
	      файла.  Без этого параметра могут происходить странные
	      вещи.</para>
	  </step>

	  <step>
	    <para>Отредактируйте файл <filename>/etc/rc.conf</filename>.</para>

	    <orderedlist>
	      <listitem>
		<para>Установите имя хоста, настроив переменную
		  hostname:</para>

		<programlisting>hostname="myname.my.domain"</programlisting>

		<para>Здесь необходимо использовать полное доменное имя
		  вашего компьютера в интернет.</para>
	      </listitem>

	      <listitem>
		<para>Добавьте <devicename>sl0</devicename> к списку
		  сетевых интерфейсов, изменив переменную:</para>

		<programlisting>network_interfaces="lo0"</programlisting>

		<para>на:</para>

		<programlisting>network_interfaces="lo0 sl0"</programlisting>
	      </listitem>

	      <listitem>
		<para>Измените параметры <devicename>sl0</devicename>,
		  добавив строку:</para>

		<programlisting>ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"</programlisting>
	      </listitem>

	      <indexterm><primary>маршрут по умолчанию</primary></indexterm>
	      <listitem>
		<para>Назначьте маршрутизатор по умолчанию, изменив
		  строку:</para>

		<programlisting>defaultrouter="NO"</programlisting>

		<para>на:</para>

		<programlisting>defaultrouter="slip-gateway"</programlisting>
	      </listitem>
	    </orderedlist>
	  </step>

	  <step>
	    <para>Создайте файл <filename>/etc/resolv.conf</filename>,
	      содержащий:</para>

	    <programlisting>domain CS.Example.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12</programlisting>

	    <indexterm><primary>сервер имен</primary></indexterm>
	    <indexterm><primary>имя домена</primary></indexterm>
	    <para>Как вы видите, здесь указаны адреса серверов имен.
	      Конечно, реальные имена доменов и адреса для вас будут
	      другими.</para>
	  </step>
<!-- проблема с переводом???
	  <step>
	    <para>Установите пароль для <username>root</username> и
	      <username>toor</username> (и любой другой учетной записи,
	      не имеющей пароля).</para>
	  </step>
-->
	  <step>
	    <para>Перегрузите компьютер и убедитесь, что его имя хоста
	      настроено правильно.</para>
	  </step>
	</procedure>
      </sect3>

      <sect3>
	<title>Создание SLIP соединения</title>
	<indexterm><primary>SLIP</primary><secondary>соединение</secondary></indexterm>
	<procedure>
	  <step>
	    <para>Дозвонитесь на удаленный сервер, введите
	      <command>slip</command> в приглашение, имя своего компьютера
	      и пароль.  Все, что требуется ввести в вашем случае.
	      Если вы используете kermit, попробуйте такой скрипт:</para>

	    <programlisting># kermit setup
set modem hayes
set line /dev/modem
set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =&gt;, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0a</programlisting>

	    <para>Конечно, вам потребуется заменить имя хоста и пароль на ваши
	      собственные.  После этого, для подключения просто введите
	      <command>slip</command> из приглашения kermit.</para>

	    <note>
	      <para>Хранение пароля в любом месте файловой системы в
		незашифрованном виде это обычно плохая идея.  Вы делаете
		это на свой риск.</para>
	    </note>
	  </step>

	  <step>
	    <para>Выйдите из kermit (вы можете приостановить его, нажав
	      <keycombo>
		<keycap>Ctrl</keycap>
		<keycap>z</keycap>
	      </keycombo>) и введите под <username>root</username>:</para>

	    <screen>&prompt.root; <userinput>slattach -h -c -s 115200 /dev/modem</userinput></screen>

	    <para>Если вы сможете выполнить <command>ping</command>
	      для хостов по другую сторону маршрутизатора, вы подключились!
	      Если это не работает, попробуйте параметр
	      <command>slattach</command> <option>-a</option> вместо
	      <option>-c</option>.</para>
	  </step>
	</procedure>
      </sect3>

      <sect3>
	<title>Как прервать соединение:</title>

	<para>Сделайте следующее:</para>

	<screen>&prompt.root; <userinput>kill -INT `cat /var/run/slattach.modem.pid`</userinput></screen>

	<para>для остановки <command>slattach</command>.  Помните, что вы
	  должны работать под <username>root</username> для выполнения этой
	  команды.  Затем вернитесь в kermit (запустив <command>fg</command>,
	  если он приостановлен) и выйдите из него
	  (<command>q</command>).</para>

	<para>Страница справочника <command>slattach</command> сообщает,
	  что для отключения интерфейса необходимо использовать
	  <command>ifconfig sl0 down</command>, но это похоже не
	  играет никакой роли.  (<command>ifconfig sl0</command> сообщает
	  о том же.)</para>

	<para>Иногда модем может не сбросить соединение (это бывает
	  довольно часто).  В этом случае просто запустите kermit
	  и выйдите из него еще раз.  При второй попытке соединение обычно
	  разрывается.</para>
      </sect3>

      <sect3>
	<title>Решение проблем</title>

	<para>Вот наиболее часто встречающиеся ситуации:</para>

	<itemizedlist>
	  <listitem>
	    <para>Не используются параметры <command>slattach</command>
	      <option>-c</option> или <option>-a</option> (это может
	      быть не фатально, но иногда вызывает проблемы.)</para>
	  </listitem>

	  <listitem>
	    <para>Используется <option>s10</option> вместо
	      <option>sl0</option> (с некоторыми шрифтами сложно увидеть
	      разницу).</para>
	  </listitem>

	  <listitem>
	    <para>Попробуйте использовать <command>ifconfig sl0</command>
	      для просмотра статуса интерфейса.  Например, вы можете
	      получить такую информацию:</para>

	    <screen>&prompt.root; <userinput>ifconfig sl0</userinput>
sl0: flags=10&lt;POINTOPOINT&gt;
        inet 136.152.64.181 --&gt; 136.152.64.1 netmask ffffff00</screen>
	  </listitem>

	  <listitem>
	    <para>Если вы получите сообщение
	      <errorname>no route to host</errorname> от команды
	      ping, возможно это проблема с таблицей маршрутизации.
	      Используйте команду <command>netstat -r</command> для
	      отображения существующих маршрутов:</para>

	    <screen>&prompt.root; <userinput>netstat -r</userinput>
Routing tables
Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:

(root node)
(root node)

Route Tree for Protocol Family inet:
(root node) =&gt;
default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
(root node)</screen>

	    <para>Предыдущий пример получен на относительно загруженной
	      системе.  Числа в вашей системе будут сильно зависеть от
	      загрузки сети.</para>

	  </listitem>
	</itemizedlist>
      </sect3>
    </sect2>

    <sect2 id="slips">
      <title>Настройка SLIP сервера</title>
      <indexterm><primary>SLIP</primary><secondary>сервер</secondary></indexterm>

      <para>Этот документ предоставляет решение для настройки SLIP сервера
	в системе FreeBSD, что обычно означает настройку системы для
	автоматического запуска соединений при удаленном входе SLIP
	клиентов.</para>

      <!-- Disclaimer is not necessarily relevant
      <para> The author has written this document based
	on his experience; however, as your system and needs may be
	different, this document may not answer all of your questions, and
	the author cannot be responsible if you damage your system or lose
	data due to attempting to follow the suggestions here.</para>
      -->

      <sect3 id="slips-prereqs">
	<title>Предварительные требования</title>
	<indexterm><primary>сеть TCP/IP</primary></indexterm>
	<para>Информация в этом разделе чисто техническая, поэтому требуются
	  некоторые предварительные знания.  Предполагается, что вы знакомы
	  с сетевым протоколом TCP/IP, и в частности, с адресацией
	  сетей и хостов, сетевыми масками, делением на подсети,
	  маршрутизацией и протоколами маршрутизации, такими как RIP.
	  Настройка SLIP сервисов на сервере удаленного доступа требует
	  знания этих концепций, и если вы не знакомы с ними,
	  прочтите или книгу <emphasis>TCP/IP Network Administration</emphasis>
	  от Craig Hunt, опубликованную O'Reilly &amp; Associates, Inc.
	  (ISBN Number 0-937175-82-X), или книги Douglas Comer по
	  протоколу TCP/IP.</para>

	<indexterm><primary>модем</primary></indexterm>
	<para>В дальнейшем предполагается, что вы уже настроили ваш модем
	  (модемы) и настроили соответствующие системные файлы для
	  разрешения входа через них.  Если вы еще не подготовили систему
	  соответствующим образом, обратитесь к руководству по настройке
	  сервисов удаленного входа; просмотрите список руководств
	  на <ulink
	  url="&url.base;/ru/docs.html">http://www.FreeBSD.org/ru/docs.html</ulink>.
	  Вы можете также обратиться к странице справочника &man.sio.4;
	  за информацией о драйвере последовательного порта и к
	  страницам &man.gettytab.5;, &man.getty.8; и &man.init.8;
	  за информацией по настройке системы для удаленного входа в систему
	  через модемы, и возможно &man.stty.1; за информацией о настройке
	  параметров последовательных портов (таких как
	  <literal>clocal</literal> для подключаемых непосредственно
	  последовательных интерфейсов).</para>
      </sect3>

      <sect3>
	<title>Краткий обзор</title>

	<para>В типичной конфигурации FreeBSD работает в качестве SLIP сервера
	  так: пользователь SLIP дозванивается на FreeBSD SLIP сервер и
	  входит в систему со специальным SLIP логином, использующим
	  <filename>/usr/sbin/sliplogin</filename> в качестве оболочки.
	  Программа <command>sliplogin</command> просматривает файл
	  <filename>/etc/sliphome/slip.hosts</filename> на предмет строки,
	  соответствующей специальному пользователю, и если находит совпадение,
	  подключает последовательную линию к доступному SLIP интерфейсу,
	  а затем запускает shell скрипт
	  <filename>/etc/sliphome/slip.login</filename> для настройки
	  SLIP интерфейса.</para>

	<sect4>
	  <title>Пример входа на SLIP сервер</title>

	  <para>Например, идентификатор пользователя на SLIP сервере
	    <username>Shelmerg</username>.  Соответствующая запись
	    в <filename>/etc/master.passwd</filename> будет выглядеть
	    примерно так:</para>

	  <programlisting>Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin</programlisting>

	  <para>Когда <username>Shelmerg</username> входит в систему,
	    <command>sliplogin</command> ищет строку в
	    <filename>/etc/sliphome/slip.hosts</filename>, в которой
	    находится соответствующий идентификатор пользователя;
	    например, строка может быть такой:</para>

	  <programlisting>Shelmerg	dc-slip sl-helmer       0xfffffc00		  autocomp</programlisting>

	  <para>После обнаружения этой строки <command>sliplogin</command>
	    подключает последовательную линию к следующему доступному
	    SLIP интерфейсу, а затем выполняет
	    <filename>/etc/sliphome/slip.login</filename> примерно так:</para>

	  <programlisting>/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp</programlisting>

	  <para>Если все проходит нормально,
	    <filename>/etc/sliphome/slip.login</filename> вызовет
	    <command>ifconfig</command> для SLIP интерфейса, к которому
	    подключилась программа <command>sliplogin</command> (slip
	    интерфейс 0 в примере выше, первый параметр в списке,
	    задаваемом <filename>slip.login</filename>) для установки
	    локального IP адреса ((<hostid>dc-slip</hostid>), удаленного
	    IP адреса (<hostid>sl-helmer</hostid>), сетевой маски для
	    SLIP интерфейса (<hostid role="netmask">0xfffffc00</hostid>),
	    и любых дополнительных флагов (<literal>autocomp</literal>).
	    Если что-то идет не так, <command>sliplogin</command>
	    обычно протоколирует соответствующие сообщения в через
	    уровень <literal>daemon</literal> syslog; эти сообщения
	    как правило попадают в <filename>/var/log/messages</filename>
	    (обратитесь к страницам справочника &man.syslogd.8; и
	    &man.syslog.conf.5;, а также проверьте файл
	    <filename>/etc/syslog.conf</filename>, чтобы выяснить, что
	    протоколирует <command>syslogd</command> и куда помещается
	    информация).</para>

	  <para>Достаточно примеров &mdash; давайте начнем настройку
	    системы.</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Настройка ядра</title>
	<indexterm><primary>ядро</primary><secondary>настройка</secondary></indexterm>
	<para>Стандартное ядро FreeBSD обычно поставляется с двумя
	  SLIP интерфейсами ((<devicename>sl0</devicename> и
	  <devicename>sl1</devicename>); вы можете использовать команду
	  <command>netstat -i</command>, чтобы выяснить, определены ли
	  эти интерфейсы в вашем ядре.</para>

	<para>Пример вывода <command>netstat -i</command>:</para>

	<screen>Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
ed0   1500  &lt;Link&gt;0.0.c0.2c.5f.4a         291311     0   174209     0   133
ed0   1500  138.247.224 ivory             291311     0   174209     0   133
lo0   65535 &lt;Link&gt;                            79     0       79     0     0
lo0   65535 loop        localhost             79     0       79     0     0
sl0*  296   &lt;Link&gt;                             0     0        0     0     0
sl1*  296   &lt;Link&gt;                             0     0        0     0     0</screen>

	<para>Наличие в выводе <command>netstat -i</command>
	  интерфейсов <devicename>sl0</devicename> и
	  <devicename>sl1</devicename> означает, что SLIP интерфейсы встроены
	  в ядро (символ <literal>*</literal> показывает неактивность
	  интерфейсов).</para>

	<para>Ядро FreeBSD по умолчанию не пересылает пакеты между
	  интерфейсами (компьютер FreeBSD не работает как маршрутизатор),
	  вследствие требований RFC (см.
	  RFCs 1009 [Requirements for Internet Gateways], 1122
	  [Requirements for Internet Hosts &mdash; Communication Layers],
	  и возможно 1127 [A Perspective on the Host Requirements RFCs]).
	  Если вы хотите, чтобы FreeBSD SLIP работал в качестве
	  маршрутизатора, отредактируйте файл
	  <filename>/etc/rc.conf</filename> и присвойте переменной
	  <literal>gateway_enable</literal> значение
	  <option>YES</option>.</para>

	<para>Для вступления изменений в силу потребуется перезагрузка.</para>

	<para>В файле настройки стандартного ядра
	  (<filename>/sys/i386/conf/GENERIC</filename>)
	  находится строка:</para>

	<programlisting>pseudo-device sl 2</programlisting>

	<indexterm><primary>SLIP</primary></indexterm>
	<para>Она определяет число доступных устройств SLIP в ядре;
	  Число в конце строки определяет максимально возможное количество
	  одновременных SLIP соединений.</para>

	<para>Обратитесь к <xref linkend="kernelconfig"> за информацией
	  по настройке ядра FreeBSD.</para>
      </sect3>

      <sect3>
	<title>Настройка sliplogin</title>

	<para>Как упоминалось ранее, в каталоге
	  <filename>/etc/sliphome</filename> находятся три файла,
	  являющиеся частью настройки для
	  <filename>/usr/sbin/sliplogin</filename> (для
	  <command>sliplogin</command> существует страница справочника,
	  &man.sliplogin.8;): <filename>slip.hosts</filename>,
	  определяющий список пользователей SLIP и связанные с ними
	  IP адреса; <filename>slip.login</filename>, который обычно
	  всего лишь настраивает SLIP интерфейс;
	  <filename>slip.logout</filename>, который восстанавливает
	  состояние системы до запуска <filename>slip.login</filename>
	  после завершения последовательного соединения.</para>

	<sect4>
	  <title>Настройка <filename>slip.hosts</filename></title>

	  <para><filename>/etc/sliphome/slip.hosts</filename> содержит
	    строки, в которых находится как минимум четыре параметра,
	    разделенных пробелами:</para>

	  <itemizedlist>
	    <listitem>
	      <para>ID пользователя SLIP</para>
	    </listitem>

	    <listitem>
	      <para>Локальный адрес (локальный для SLIP сервера) SLIP
		соединения</para>
	    </listitem>

	    <listitem>
	      <para>Удаленный адрес SLIP соединения</para>
	    </listitem>

	    <listitem>
	      <para>Сетевая маска</para>
	    </listitem>
	  </itemizedlist>

	  <para>Локальные и удаленные адреса могут быть именами хостов
	    (разрешаемыми в IP адреса через файл
	    <filename>/etc/hosts</filename> или через службу доменных
	    имен, в зависимости от настроек в файле
	    <filename>/etc/nsswitch.conf</filename> для FreeBSD&nbsp;5.X,
	    или <filename>/etc/host.conf</filename> для FreeBSD&nbsp;4.X),
	    а сетевая маска может быть именем, разрешаемым через
	    файл <filename>/etc/networks</filename>.  В системе,
	    используемой в качестве примера, файл
	    <filename>/etc/sliphome/slip.hosts</filename> выглядит
	    так:</para>

	  <programlisting>#
# login local-addr      remote-addr     mask            opt1    opt2
#                                               (normal,compress,noicmp)
#
Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp</programlisting>

	  <para>В конце строки находятся один или более параметров.</para>

	  <itemizedlist>
	    <listitem>
	      <para><option>normal</option> &mdash; нет сжатия
		заголовков</para>
	    </listitem>

	    <listitem>
	      <para><option>compress</option> &mdash; сжимать
		заголовки</para>
	    </listitem>

	    <listitem>
	      <para><option>autocomp</option> &mdash; сжимать заголовки,
		если удаленная сторона это позволяет</para>
	    </listitem>

	    <listitem>
	      <para><option>noicmp</option> &mdash; запретить ICMP пакеты
		(любые <quote>ping</quote> пакеты будут отброшены и не
		станут помехой для другого трафика)</para>
	    </listitem>
	  </itemizedlist>

  	  <indexterm><primary>SLIP</primary></indexterm>
  	  <indexterm><primary>сеть TCP/IP</primary></indexterm>
	  <para>Выбор локального и удаленного адреса для SLIP соединений
	    зависит от того, используете ли вы выделенную TCP/IP сеть,
	    или используете на SLIP сервере <quote>ARP прокси</quote>.
	    (это не <quote>настоящий</quote> ARP прокси, но данная
	    терминология используется в этом разделе).  Если вы не уверены,
	    какой метод выбрать, или как присвоить IP адреса, обратитесь к
	    книгам по TCP/IP, упомянутым выше (<xref
	    linkend="slips-prereqs">).

	  <para>Если вы собираетесь использовать отдельную подсеть для SLIP
	    клиентов, потребуется выделить адреса за пределом адресов
	    вашей сети и присвоить каждому SLIP клиенту IP адрес из данной
	    подсети.  Затем вам возможно потребуется настроить статический
	    маршрут в используемую для SLIP подсеть через SLIP сервер
	    на ближайшем IP маршрутизаторе.</para>

  	  <indexterm><primary>Ethernet</primary></indexterm>
	  <para>Иначе, если вы будете использовать метод
	    <quote>proxy ARP</quote>, потребуется присвоить SLIP
	    клиентам IP адреса, не входящие в Ethernet подсеть сервера
	    SLIP, а также настроить скрипты
	    <filename>/etc/sliphome/slip.login</filename> и
	    <filename>/etc/sliphome/slip.logout</filename>, чтобы использовать
	    &man.arp.8; для управления записями ARP прокси в таблице
	    ARP сервера SLIP.</para>
	</sect4>

	<sect4>
	  <title>Настройка <filename>slip.login</filename></title>

	  <para>Типичный файл <filename>/etc/sliphome/slip.login</filename>
	    выглядит примерно так:</para>

	  <programlisting>#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6</programlisting>

	  <para>Этот файл <filename>slip.login</filename> всего лишь
	    запускает <command>ifconfig</command> для соответствующего
	    SLIP интерфейса с заданными локальным и удаленным адресом и сетевой
	    маской.</para>

	  <para>Если вы решили использовать метод <quote>ARP прокси</quote>
	    (вместо использования отдельной подсети для SLIP клиентов),
	    ваш файл <filename>/etc/sliphome/slip.login</filename>
	    должен выглядеть примерно так:</para>

	  <programlisting>#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub</programlisting>

	  <para>Дополнительная строка в этом
	    <filename>slip.login</filename>, <command>arp -s
	    &#36;5 00:11:22:33:44:55 pub</command>, создает ARP запись
	    в ARP таблице SLIP сервера.  При соединении другого узла
	    в Ethernet с IP адресом SLIP клиента, SLIP сервер выдает
	    ответ с собственным Ethernet MAC адресом.</para>

  	  <indexterm><primary>Ethernet</primary><secondary>MAC адрес</secondary></indexterm>
	  <para>При использовании примера выше убедитесь, что заменили
	    Ethernet MAC адрес (<hostid
	    role="mac">00:11:22:33:44:55</hostid>) на MAC адрес
	    Ethernet карты вашей системы, или ваш <quote>ARP прокси</quote>
	    точно не будет работать!  Вы можете определить Ethernet MAC
	    адрес SLIP сервера, просмотрев вывод команды <command>netstat
	    -i</command> выше; информация об адресе находится второй
	    строке:</para>

	  <screen>ed0   1500  &lt;Link&gt;0.2.c1.28.5f.4a         191923	0   129457     0   116</screen>

	  <para>Это означает, что в данной системе Ethernet MAC адрес
	    <hostid role="mac">00:02:c1:28:5f:4a</hostid> &mdash;
	    точки в MAC адресе, выдаваемые <command>netstat -i</command>,
	    должны быть заменены на двоеточия, необходимо также добавить
	    нуль в начало каждого односимвольного шестнадцатеричного номера
	    для преобразования этого адреса в форму, пригодную для
	    &man.arp.8;; обратитесь к странице справочника &man.arp.8;
	    за полной информацией по использованию.</para>

	  <note>
	    <para>При создании
	      <filename>/etc/sliphome/slip.login</filename> и
	      <filename>/etc/sliphome/slip.logout</filename>, должен быть
	      установлен бит <quote>выполнения</quote> (<command>chmod 755
	      /etc/sliphome/slip.login /etc/sliphome/slip.logout</command>),
	      или <command>sliplogin</command> не сможет их выполнить.</para>
	  </note>
	</sect4>

	<sect4>
	  <title>Настройка <filename>slip.logout</filename></title>

	  <para><filename>/etc/sliphome/slip.logout</filename> не является
	    совершенно необходимым (если только вы не реализуете
	    <quote>ARP прокси</quote>), но если вы решили создать его,
	    воспользуйтесь следующим примером:</para>

	  <programlisting>#!/bin/sh -
#
#       slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down</programlisting>

	  <para>Если вы используете <quote>ARP прокси</quote>, потребуется
	    удаление записи ARP для SLIP клиента через
	    <filename>/etc/sliphome/slip.logout</filename>:</para>

	  <programlisting>#!/bin/sh -
#
#       @(#)slip.logout

#
# logout file for a slip line.  sliplogin invokes this with
# the parameters:
#      1        2         3        4          5         6     7-n
#   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5</programlisting>

	  <para>Команда <command>arp -d &#36;5</command> удаляет запись ARP,
	    добавленную <filename>slip.login</filename> при входе
	    SLIP клиента.</para>

	  <para>Повторяем: убедитесь, что на файл
	    <filename>/etc/sliphome/slip.logout</filename> установлен
	    бит выполнения (<command>chmod 755
	    /etc/sliphome/slip.logout</command>).</para>
	</sect4>
      </sect3>

      <sect3>
	<title>Соглашения о маршрутизации</title>
	<indexterm>
    <primary>SLIP</primary>
    <secondary>маршрутизация</secondary>
  </indexterm>
	<para>Если вы не используете <quote>ARP прокси</quote> метод для
	  маршрутизации пакетов между SLIP клиентами и остальной сетью
	  (и возможно интернет), вам возможно потребуется статический
	  маршрут (маршруты) до ближайшего шлюза (шлюзов) для
	  маршрутизации подсети SLIP клиентов через SLIP сервер.</para>

	<sect4>
	  <title>Статические маршруты</title>
	  <indexterm><primary>статические маршруты</primary></indexterm>

	  <para>Добавление статических маршрутов может стать для кого-то
	    проблемой (это даже невозможно, если у вас нет соответствующих
	    прав).  Если в вашей организации сеть с несколькими
	    маршрутизаторами, некоторые маршрутизаторы, например
	    Cisco и Proteon, требуют не только настройки статического маршрута
	    в подсеть SLIP, но и указания, о каких статических маршрутах
	    сообщать другим маршрутизаторам, так что для наладки
	    работоспособности статической маршрутизации может
	    потребоваться некоторое исследование и отладка.</para>
	</sect4>

	<sect4>
	  <title>Запуск <application>&gated;</application></title>
	  <indexterm>
      <primary><application>gated</application></primary>
    </indexterm>

	<note>
	  <para><application>&gated;</application> это закрытое программно
	    обеспечение, более недоступное в исходных текстах
	    (дополнительная информация находится на вебсайте <ulink
	    url="http://www.gated.org/">&gated;</ulink>).  Этот раздел
	    существует лишь в целях обратной совместимости для тех,
	    кто все еще использует старую версию.</para>
	</note>

	  <para>Альтернатива головной боли со статическими маршрутами это
	    установка <application>&gated;</application> на FreeBSD SLIP
	    сервере и настройка его для использования соответствующих
	    протоколов маршрутизации (RIP/OSPF/BGP/EGP) для сообщения
	    другим маршрутизаторам о вашей SLIP подсети.
	    Вам потребуется создать <filename>/etc/gated.conf</filename>
	    для настройки gated.  Ниже дан пример:</para>

	  <programlisting>#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;

rip yes {
  interface sl noripout noripin ;
  interface ed ripin ripout version 1 ;
  traceoptions route ;
} ;

#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
  traceoptions remnants request routes info interface ;
} ;

#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#

export proto rip interface ed {
  proto direct {
      <replaceable>xxx.xxx.yy</replaceable> mask 255.255.252.0 metric 1; # SLIP connections
  } ;
} ;

#
# Accept routes from RIP via ed Ethernet interfaces

import proto rip interface ed {
  all ;
} ;</programlisting>

	  <indexterm><primary>RIP</primary></indexterm>
	  <para>В примере выше используется широковещательная рассылка
	    информации о маршрутизации для подсети SLIP
	    <replaceable>xxx.xxx.yy</replaceable> протоколом RIP
	    на сеть Ethernet; если вы используете другой драйвер
	    Ethernet вместо <devicename>ed</devicename>, потребуется
	    соответственно изменить запись для <devicename>ed</devicename>.
	    В этом примере отладочная информация переправляется в
	    <filename>/var/tmp/gated.output</filename>;
	    вы можете выключить отладку, если
	    <application>&gated;</application> работает.  Вам потребуется
	    заменить <replaceable>xxx.xxx.yy</replaceable> в сетевом адресе
	    на вашу подсеть SLIP (убедитесь, что изменение сетевой
	    маски в <literal>proto direct</literal> работает
	    нормально).</para>

	  <para>Как только вы установили и настроили
	    <application>&gated;</application>, потребуется сообщить
	    стартовым скриптам FreeBSD запускать его вместо
	    <application>routed</application>.  Простейший способ сделать
	    это &mdash; установить переменные <varname>router</varname> и
	    <varname>router_flags</varname> в
	    <filename>/etc/rc.conf</filename>.  Обратитесь к странице
	    справочника <application>&gated;</application> за информацией
	    о параметрах командной строки.</para>
	</sect4>
      </sect3>
    </sect2>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
