# Подробное руководство по PPP

### Стив Симс

`<SimsS@IBM.net>`

Это подробное руководство по конфигурированию FreeBSD-систем, функционирующих как маршрутизаторы/шлюзы коммутируемого доступа в локальных сетях (LAN). Подразумевается, что все, что описано в данном руководстве относится к версии FreeBSD 2.2+, кроме случаев, специально оговоренных.

[ По разделам / Одним файлом ]

# Краткий обзор:

На данный момент настраиваемый пользователем PPP-коммутатор версии FreeBSD 2.2 (также известный как "IIJ-PPP") поддерживает совмещение пакетов для коммутируемых соединений с Интернет. Эта особенность, известная также как "Маскарад", "IP-совмещение" или "Трансляция Сетевых Адресов (NAТ)", позволяет FreeBSD-системе функционировать как коммутирующий маршрутизатор между локальной сетью на базе Ethernet и Интернет-провайдером (ISP). Системы в локальной сети могут использовать FreeBSD-систему для отправки информации в Интернет, используя одно единственное коммутируемое соединение.

Это руководство объясняет как:

- конфигурировать FreeBSD-систему для установки исходящих соединений,

- использовать это соединение совместно с другими системами локальной сети,

- конфигурировать Windows-системы для использования FreeBSD-системы как шлюза в Интернет.

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

# Глава 1. Построение локальной сети

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

## 1.1. Типичная топология сети

В качестве примера, который мы будем использовать в этом руководстве, рассмотрим типичную локальную сеть, представленную на рисунке:

    +---------+       ----> Коммутируемое соединение с Интернет
    | FreeBSD |       \       (т.е.: NetCom, AOL, AT&T, EarthLink и т.д.)
    |         |--------
    | "Curly" |
    |         |
    +----+----+
         |
    |----+-------------+-------------+----|  <-- Сеть Ethernet
         |             |             |
         |             |             |
    +----+----+   +----+----+   +----+----+
    |         |   |         |   |         |
    |  Win95  |   |   WFW   |   |  WinNT  |
    | "Larry" |   |  "Moe"  |   | "Shemp" |
    |         |   |         |   |         |
    +---------+   +---------+   +---------+

## 1.2. Параметры локальной сети, принятые в данном руководстве

Ниже приведены принятые в этом руководстве параметры нашей локальной сети:

Имеются в наличии три рабочие станции и сервер, соединенные сетевым Ethernet-кабелем:

- Сервер под управлением FreeBSD ("Curly") с сетевым адаптером NE-2000, сконфигурированным как 'ed0'

- Рабочая станция под управлением Windows '95 ("Larry") с "родными" 32-битными драйверами протоколов Microsoft TCP/IP

- Рабочая станция под управлением Windows for Workgroups ("Moe") с 16-битными Microsoft TCP/IP-расширениями

- Рабочая станция под управлением Windows NT ("Shemp") с "родными" 32-битными драйверами протоколов Microsoft TCP/IP

IP-адреса сетевых Ethernet-интерфейсов этой локальной сети взяты из пула адресов, зарезервированных (по RFC 1918) для использования в закрытых локальных сетях. Таким образом Вы смело можете использовать эти же самые адреса в своей локальной сети в любое время, когда пожелаете. IP-адреса распределены так:

Имя | IP-адрес | Описание
--- | --- | ---
`Curly` | `192.168.1.1` | Система FreeBSD
`Larry` | `192.168.1.2` | Система Windows '95
`Moe` | `192.168.1.3` | Система Windows for Workgroups
`Shemp` | `192.168.1.4` | Система Windows NT box

В данном руководстве считается, что модем на FreeBSD-системе подключен к первому последовательному устройству ('`/dev/cuaa0`' или 'COM1:' как принято в DOS-терминологии).

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

# Глава 2. Конфигурирование FreeBSD-системы

Перед тем как Вы начнете настраивать локальную сеть, Вашей FreeBSD-системе должны быть известны три основные части информации:

- имя узла FreeBSD-системы; в нашем примере - это "Curly",

- конфигурация сети,

- файл `/etc/hosts`, который описывает соответствия имен и IP-адресов других машин в Вашей локальной сети.

Если Вы выполняли установку FreeBSD, используя сетевое соединение, то некоторые параметры возможно уже сконфигурированы для Вашей FreeBSD-системы.

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

## 2.1. Проверка имени узла FreeBSD-системы

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

    # hostname

Появится имя узла FreeBSD-системы. Если имя выглядит корректным (а это очень субъективно :-) переходите к Разд. 2.2.

Например, для нашей локальной сети, в результате работы команды `hostname`, мы бы увидели 'curly.my.domain', если бы имя узла было установлено правильно в процессе или после установки. (На данном этапе не сильно обращайте внимание на часть ".my.domain", мы рассмотрим это позже. Самая важная часть - это имя, которое находится перед первой точкой.)

Если же имя узла не было определено в процессе установки FreeBSD возможно Вы увидите такой ответ 'myname.my.domain`. Тогда Вам необходимо отредактировать файл `/etc/rc.conf` для установки имени машины.

### 2.1.1. Конфигурирование имени узла FreeBSD-системы

Памятка: Вы должны быть зарегистрированы в системе как пользователь 'root' для редактирования системных конфигурационных файлов!

ПРЕДУПРЕЖДЕНИЕ: Если Вы допустите ошибку при редактировании системных конфигурационных файлов, может случиться так, что система НЕ СМОЖЕТ ЗАГРУЗИТЬСЯ правильно! Будьте предельно осторожны!

Конфигурационный файл, в котором определяется имя узла FreeBSD-системы при загрузке называется `/etc/rc.conf`. Используйте обычный текстовый редактор ('ee') для редактирования этого файла.

После того, как вы зарегистрируетесь в системе как пользователь 'root' загрузите файл `/etc/rc.conf` в редактор, используя следующую команду:

    # ee /etc/rc.conf

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

    ---
    ### Basic network options: ###
    hostname="myname.my.domain" # Set this!
    ---

Внести в эту секцию такие изменения (в нашем примере):

    ---
    ### Basic network options: ###
    hostname="curly.my.domain"  # Set this!
    ---

Изменив имя узла, нажмите клавишу 'Esc' для выхода в командное меню. Выберите пункт "покинуть редактор" и ответьте утвердительно на запрос "сохранить изменения?".

## 2.2. Проверка конфигурации Ethernet-интерфейса

Напомню Вам, что в данном руководстве подразумевается, что Ethernet-интерфейс в системе FreeBSD называется 'ed0'. Это стандартное название для интерфейсов NE-1000, NE-2000, WD/SMC (моделей 8003, 8013) и сетевых адаптеров Elite Ultra (8216).

Другие модели сетевых адаптеров могут иметь различные имена в системе FreeBSD. Обратитесь к сборнику часто задаваемых вопросов (FAQ) по спецификации Вашего сетевого адаптера. Если у Вас возникли сложности при определении имени устройства для Вашего сетевого адаптера, обратитесь к FAQ по FreeBSD, найдите правильного имя устройства и замените его в случае необходимости (т.e. на: 'de0', 'zp0' и т.д.).

Как и в случае с именем узла, Ethernet-интерфейс FreeBSD-системы уже может быть сконфигурирован в процессе установки системы.

Для вывода конфигурации интерфейсов Вашей FreeBSD-системы (Ethernet и других), введите следующую команду:

    # ifconfig -a

(Или простым человеческим языком: "Покажи мне И нтерФейс КОНФИГурацию для моих сетевых устройств.")

Пример:

    # ifconfig -a
     ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
          inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
          ether 01:02:03:04:05:06
     lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
     tun0: flags=8050<POINTOPOINT,RUNNING, MULTICAST> mtu 1500
     sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 552
     ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
     lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
          inet 127.0.0.1 netmask 0xff000000
    # _

В этом примере, показаны следующие устройства:

ed0: Интерфейс Ethernet

lp0: Интерфейс параллельного порта (в данном руководстве не рассматривается)

tun0: "Туннельное" устройство; Это один из режимов использования ppp!

sl0: SL/IP устройство (в данном руководстве не рассматривается)

ppp0: Еще одно устройство PPP (для ядра ppp; в данном руководстве не рассматривается)

lo0: Устройство "локальной петли" (в данном руководстве не рассматривается)

Как видно из примера, устройство 'ed0' в активном состоянии и запущено. Параметры устройства:

1. Его состояние "АКТИВНО",

2. Имеет Интернет- ("inet") адрес, (в данном случае 192.168.1.1)

3. Указана допустимая маска подсети ("маска сети"; 0xffffff00 то же самое, что и 255.255.255.0), and

4. Указан допустимый широковещательный адрес (в данном случае 192.168.1.255).

Если же информация для Ethernet-карты выглядит как показано ниже:

    ed0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
            ether 01:02:03:04:05:06

то она (карта) еще не была сконфигурировна.

Если конфигурация Ethernet-интерфейса верна, то Вы можете перейти к Разд. 2.4.

### 2.2.1. Конфигурирование Ethernet-интерфейса

Памятка: Вы должны быть зарегистрированы в системе как пользователь 'root' для редактирования системных конфигурационных файлов!

ПРЕДУПРЕЖДЕНИЕ: Если Вы допустите ошибку при редактировании системных конфигурационных файлов, может так случиться, что система НЕ СМОЖЕТ ЗАГРУЗИТЬСЯ правильно! Будьте осторожны!

Параметры для настройки сетевого интерфейса при загрузке системы находятся в файле `/etc/rc.conf`. Для редактирования этого файла Вы можете использовать обычный текстовый редактор ('ee') .

После того, как вы зарегистрируетесь в системе как пользователь 'root', загрузите файл `/etc/rc.conf` в редактор, используя следующую команду:

`# ee /etc/rc.conf`

Примерно в районе 20-й строки сверху в файле `/etc/rc.conf` Вы заметите секцию, которая описывает те сетевые интерфейсы, которые будут задействованы при загрузке системы. В стандартном конфигурационном файле эта строка выглядит так, как показано ниже:

    network_interfaces="lo0"       # List of network interfaces (lo0 is loopback).

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

    network_interfaces="lo0 ed0"   # List of network interfaces (lo0 is loopback).

(Обратите внимание на пробел между определениями устройства локальной петли ("lo0") и устройством Ethernet ("ed0")!

Памятка: Если Ваша Ethernet-карта имеет имя, отличное от 'ed0', то вместо него укажите имя, которое соответствует Вашему устройству.

Если Вы устанавливали FreeBSD, используя сетевое соединение, то строка '`network_interfaces=`' уже должна включать информацию о Вашем сетевом адаптере. И если это так, то еще раз проверьте правильность установки имени устройства.

Установите настройки для Ethernet-устройства ('ed0'):

Под строкой, определяющей активные интерфейсы, находятся строки, которые определяют текущие настройки для каждого интерфейса. В стандартном файле `/etc/rc.conf` есть строка, в которой указано:

    ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.

Вам необходимо добавить другую строку, после нее, чтобы определить настройки для устройства 'ed0'.

Если Вы устанавливали FreeBSD, используя сетевое соединение, то строка '`ifconfig_ed0=`' уже должна присутствовать после определения локальной петли. Если это так, то проверьте правильность указанных параметров.

В нашем примере мы добавим строку сразу после определения устройства локальной петли, которая будет выглядеть так:

    ifconfig_ed0="inet 192.168.1.1 netmask 255.255.255.0"

После окончания редактирование файла `/etc/rc.conf` секция определения и настройки сетевых интерфейсов будет выглядеть примерно так:

    ---
    network_interfaces="ed1 lo0"    # List of network interfaces (lo0 is loopback).
    ifconfig_lo0="inet 127.0.0.1"   # default loopback device configuration.
    ifconfig_ed1="inet 192.168.1.1  netmask 255.255.255.0"
    ---

Как только все необходимые изменения в файл `/etc/rc.conf` будут внесены, нажмите клавишу 'Esc' для вызова меню. Выберите "покинуть редактор" и подтвердите запрос "сохранить изменения?".

## 2.3. Включение режима отправки пакетов

По умолчанию FreeBSD-система не отправляет IP-пакеты между различными сетевыми интерфейсами. Другими словами, функции маршрутизации (также известные как функции шлюза) отключены.

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

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

Для включения режима отправки IP-пакетов Вам необходимо отредактировать файл `/etc/rc.conf`.

Этот файл содержит переопределения параметров, указанных в стандартном файле `/etc/defaults/rc.conf`. За установку шлюза по умолчанию отвечает строка

    gateway_enable="NO"

в этом файле. Чтобы включить режим отправки IP-пакетов исправьте строку как показано

    gateway_enable="YES"

`/etc/rc.conf`.

ПРИМЕЧАНИЕ: Строка может уже выглядеть как '`gateway_enable="YES"`', если режим отправки IP-пакетов был включен при установке FreeBSD-системы.

## 2.4. Создание списка всех узлов локальной сети (`/etc/hosts`)

Заключительным этапом при конфигурировании локальной сети является создание списка имен и IP-адресов всех систем, которые подключены к Вашей локальной сети. Этот список содержится в файле '`/etc/hosts`'.

Стандартная версия этого файла содержит только одну строку и одно имя. Это имя и адрес устройства локальной петли ('lo0'). По сетевым соглашениям принято, что это устройство имеет имя "localhost" и всегда имеет IP-адрес 127.0.0.1. Разд. 2.2.

Чтобы отредактировать файл `/etc/hosts` введите следующую команду:

     # ee /etc/hosts

Опустите курсор в конец файла (обращайте внимание на комментарии; они содержат много полезной информации!) и введите, используя пример нашей локальной сети, следующие IP-адреса и имена:

    192.168.1.1    curly  curly.my.domain  # Система FreeBSD
    192.168.1.2    larry  larry.my.domain  # Система Windows '95
    192.168.1.3    moe    moe.my.domain    # Система Windows for Workgroups
    192.168.1.4    shemp  shemp.my.domain  # Система Windows NT

(Строка '127.0.0.1 localhost' не нуждается в изменениях.)

Как только все необходимые изменения в файл `/etc/hosts` будут внесены, нажмите клавишу 'Esc' для вызова меню. Выберите "покинуть редактор" и подтвердите запрос "сохранить изменения?".

## 2.5. Тестирование FreeBSD-системы

Поздравляем! FreeBSD-система сконфигурирована как присоединенная к сети Unix-система! Если Вы вносили изменения в файл `/etc/rc.conf`, то Вам возможно понадобиться перезагрузить Вашу FreeBSD-систему. Этим вы "убьете двух зайцев":

- вступят в силу изменения, внесенные в конфигурацию интерфейсов, и

- вы проверите, что система перезапускается без всяких явных ошибок в конфигурации.

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

### 2.5.1. Проверка функционирования устройства локальной петли

Для проверки правильности конфигурации устройства локальной петли, зарегистрируйтесь в системе как пользователь 'root' и введите:

    # ping localhost

Вы должны увидеть следующие

    # ping localhost
    PING localhost.my.domain. (127.0.0.1): 56 data bytes
    64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=0.219 ms
    64 bytes from 127.0.0.1: icmp_seq=1 ttl=255 time=0.287 ms
    64 bytes from 127.0.0.1: icmp_seq=2 ttl=255 time=0.214 m
    [...]

сообщения, которые будут появляться до тех пор, пока Вы не нажмете комбинацию клавиш Ctrl-C.

### 2.5.2. Проверка функционирования Ethernet-устройства

Для проверки правильности конфигурации Ethernet-устройства, введите:

    # ping curly

Вы должны увидеть следующие

    # ping curly
    PING curly.my.domain. (192.168.1.1): 56 data bytes
    64 bytes from 192.168.1.1: icmp_seq=0 ttl=255 time=0.219 ms
    64 bytes from 192.168.1.1: icmp_seq=1 ttl=255 time=0.200 ms
    64 bytes from 192.168.1.1: icmp_seq=2 ttl=255 time=0.187 ms
    [...]

сообщения.

Самое главное, на что Вы должны обратить внимание в этих двух примерах, это то, что имена (loopback и curly) должны корректно коррелировать с присвоенными им IP-адресами (127.0.0.1 и 192.168.1.1). Это будет гарантом того, что файл `/etc/hosts` не содержит ошибок.

Если же IP-адрес узла "curly" не соответствует значению 192.168.1.1 или IP-адрес узла "localhost" не соответствует значению 127.0.0.1, вернитесь к Разд. 2.4 и проверьте записи в файле '`/etc/hosts`'.

Если имена и адреса, выдаваемые в результате выполнения команды PING, соответствуют действительности, но выдаются какие-то ошибки из-за того, что что-то упущено в конфигурации интерфейса, то вернитесь к Гл. 2 и проверьте все с самого начала.

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

# Глава 3. Конфигурирование PPP-соединения

PPP-драйвер поддерживает два основных режима функционирования: "Интерактивный" (или "Диалоговый") и "Автоматический".

В интерактивном режиме Вы:

- вручную устанавливаете соединение с Вашим Интернет-провайдером,

- просматриваете сайты, перемещаетесь по Интернет, передаете файлы, почту и т.д., и т.п...,

- вручную "разрываете" соединение с Вашим Интернет-провайдером.

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

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

## 3.1. Создание копий оригинальных конфигурационных файлов PPP

> Замечание: В большинстве последних версий FreeBSD в каталоге `/usr/share/examples/ppp` присутствуют примеры конфигурационных файлов, так что этот процесс необязателен.

Однако, перед внесением любых изменений в файлы, которые будут использоваться программой PPP, рекомендуется сделать копии стандартных файлов, которые были созданы в процессе установки FreeBSD-системы.

Зарегистрируйтесь в системе как пользователь 'root' и выполните следующие действия:

войдите в каталог '`/etc`:

# cd /etc

сделайте копии оригинальных файлов в каталоге 'ppp':

# cp -R ppp ppp.ORIGINAL

После чего в каталоге '`/etc`' Вы должны увидеть два подкаталога 'ppp' и '`ppp.ORIGINAL`' .

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

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

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

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

    # man ppp

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

    # man chat

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

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

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

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

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

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

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

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

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

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

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

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

    set device /dev/cuaa0

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

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

    set speed 57600

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

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

    disable pred1
    deny pred1

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

    disable lqr
    deny lqr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    set redial 3 10

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

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

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

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

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

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

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

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

- Various Shiva LanRovers

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

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

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

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

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

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

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

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

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

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

    set timeout 300

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

    set openmode active

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

    accept chap

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

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

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

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

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

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

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

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

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

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

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

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

    set timeout 300

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

    set openmode active

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

    accept chap

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

    set ifaddr 127.1.1.1/0 127.2.2.2/0 255.255.255.0

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

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

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

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

    add 0 0 127.2.2.2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

## 3.3. IP-совмещение

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

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

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

Несмотря на терминологию, этот режим, однако, не является автоматическим. Если программа PPP запущена нормально, то она не будет отправлять пакеты между интерфейсами локальной сети и коммутируемым соединением. Фактически, только FreeBSD-система имеет связь с Интернет-провайдером; другие же рабочие станции не могут "совместно использовать" это же самое соединение.

Например, если программа запускается одной из указанных ниже команд:

# ppp interactive (Интерактивный режим)

или

# ppp -auto demand (Режим дозвона при необходимости),

то система будет функционировать как рабочая станция Internet только на FreeBSD-системе.

Для запуска программы PPP как шлюза между ресурсами локальной сети и Интернет, должна быть использована одна из ниже приведенных команд:

# ppp -alias interactive (Интерактивный режим)

или

# ppp -auto -alias demand (Режим дозвона при необходимости)

Или же Вы можете использовать команду ``alias enable yes'' в конфигурационном файле программы PPP. (За более подробной информацией обратитесь к man-странице справочного руководства).

Имейте это в виду, если Вы собираетесь перейти к Гл. 4.

# Глава 4. Конфигурирование Windows-систем

Как было сказано в разделе 1, наша локальная сеть состоит из одной FreeBSD-системы ("Curly"), которая функционирует как шлюз (или маршрутизатор) между локальной сетью, содержащей два различных типа рабочих Windows-станций. Для того, чтобы узлы локальной сети могли использовать "Curly" в качестве маршрутизатора, они должны быть правильно сконфигурированы. Обратите внимание, что этот раздел не объясняет как конфигурировать рабочие станции Windows для коммутируемого сетевого взаимодействия. Если Вам необходимо более подробное объяснение этой процедуры, я рекомендую Вам обратиться к http://www.aladdin.co.uk/techweb.

## 4.1. Конфигурирование Windows '95

Процесс конфигурирования Windows '95 для функционирования в качестве присоединенного к локальной сети ресурса относительно прост. Конфигурация сети Windows '95 должна быть немного изменена для использования системы FreeBSD в качестве шлюза по умолчанию к Вашему Интернет-провайдеру. Для этого выполните следующие действия:

Создайте файл "hosts" под Windows '95:

Для того, чтобы была возможность соединяться с другими системами по протоколу TCP/IP внутри Вашей локальной сети, необходимо создать идентичную копию файла "hosts", который был установлен на FreeBSD-системе в Разд. 2.4.

- Нажмите кнопку "Старт", выберите пункт "Выполнить...", затем введите строку "notepad \WINDOWS\HOSTS" (без кавычек) и нажмите кнопку "OK"

- В редакторе введите адреса и имена систем из файла "hosts", созданного в Разд. 2.4.

- Когда закончите редактирование, закройте редактор, предварительно сохранив файл!

Конфигурирование сетевых настроек TCP/IP Windows '95:

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

- Дважды нажмите на иконке "Сеть", чтобы открыть соответствующее окно.

  Появится окно с настройками сетевых параметров.

- На закладке "Конфигурация", выберите в списке установленных компонентов строку "TCP/IP->тип_Вашего_сетевого_интерфейса", где "тип_Вашего_сетевого_интерфейса" - имя или тип Ethernet-адаптера Вашей системы).

  Если компонент TCP/IP отсутствует в списке установленных, нажмите кнопку "Добавить" и установите его перед тем как продолжать настройку.

  (Подсказка: "Добавить | Протокол | Microsoft | TCP/IP | OK")

- Нажмите кнопку "Свойства", чтобы открыть окно настроек параметров компонента TCP/IP.

Конфигурация IP-адреса:

- Выберите закладку "IP-адрес"

- Выберите радио-кнопку "Указать IP-адрес явным образом".

  (В нашей локальной сети система Windows '95 имеет имя "Larry".)

- В поле "IP-адрес" введите значение "192.168.1.2".

- В поле "Маска подсети" введите значение 255.255.255.0 .

Конфигурирование шлюза:

- Выберите закладку "Шлюз"

  В нашей локальной сети FreeBSD-система будет функционировать как шлюз в Интернет, который будет маршрутизировать пакеты между локальной сетью Ethernet и коммутируемым PPP-соединением. Введите IP-адрес для Ethernet-интерфейса FreeBSD-системы, 192.168.1.1, в поле "Новый шлюз" и нажмите кнопку "Добавить". Если в списке определены другие шлюзы, Вы можете удалить их по Вашему усмотрению.

Конфигурирование DNS:

В данном руководстве подразумевается, что Ваш Интернет-провайдер предоставил Вам список серверов доменных имен (или DNS-серверов), который Вы должны использовать. Если же Вы желаете запустить DNS-сервер на Вашей локальной FreeBSD-системе, обратитесь к разделу 6, "Упражнения для интересующихся студентов". Этот раздел поможет Вам сделать это.

- Выберите закладку "Конфигурация DNS"

- Убедитесь, что радио-кнопка "Включить DNS" выбрана.

  (Если эта кнопка не выбрана, то будут доступны только те узлы, которые Вы ввели в файле "hosts" и сетевой серфинг будет работать не так как Вы бы того хотели!)

- В поле "Имя компьютера" введите имя системы Windows '95, в нашем случае: "Larry".

- В поле "Домен" введите имя Вашей локальной сети, т.е.: "my.domain"

- В секции "Порядок просмотра серверов DNS", введите IP-адрес DNS-сервера, которым(и) обеспечил Вас Ваш Интернет-провайдер и нажмите кнопку "Добавить". Повторите эту процедуру столько раз, сколько необходимо для ввода всех адресов DNS-серверов Вашего провайдера.

Другие параметры TCP/IP в Windows '95:

В нашем случае параметры на закладках "Дополнительно", "Конфигурация WINS" и "Привязка" не используются.

Если Вы пожелаете использовать службу WINS, обратитесь к http://www.localnet.org для получения более подробной информации о настройке этой службы, особенно в отношении к разделению файлов прозрачно через Интернет.

Завершение процесса конфигурирования:

- Нажмите кнопку "OK", чтобы закрыть окно свойств TCP/IP.

- Нажмите кнопку "OK", чтобы закрыть окно с настройками сети.

- Перезагрузите Ваш компьютер, если это необходимо.

Это все!

## 4.2. Конфигурирование Windows NT

Конфигурирование Windows NT для функционирования в качестве ресурса локальной сети относительно прямолинейно. Процедура конфигурирования Windows NT также проста как и для Windows 95. Незначительные отличия наблюдаются лишь в пользовательском интерфейсе.

Действия, описанные в этой секции, применимы к Windows NT 4.0 Workstation, но принципы те же самые, как и в NT 3.5x. Вы можете обратиться к разделу "Конфигурирование Windows for Workgroups", если Вы конфигурируете Windows NT 3.5x, так как пользовательский интерфейс NT 3.5 и Windows for Workgroups один и тот же.

Выполните следующие действия:

Создайте файл "hosts" под Windows NT:

Для того, чтобы была возможность соединяться с другими системами TCP/IP внутри Вашей локальной сети, необходимо создать идентичную копию файла "hosts", который был установлен на FreeBSD-системе в разделе 3.4.

- Нажмите кнопку "Старт" на панели задач, выберите пункт "Выполнить...", затем введите строку "notepad \WINNT\SYSTEM32\DRIVERS\ETC\HOSTS" (без кавычек) и нажмите кнопку "OK"

- В редакторе введите адреса и имена систем из файла, созданного в разделе 3.4.

- Когда закончите редактирование, закройте редактор, предварительно сохранив файл!

Конфигурирование сетевых настроек TCP/IP под Windows NT:

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

- Дважды нажмите на иконку "Сеть", чтобы открыть соответствующее окно.

- На закладке "Идентификация" проверьте поля "Имя компьютера" и "Рабочая группа". В этом примере мы будем использовать "Shemp" в качестве имени компьютера и "Stooges" в качестве имени рабочей группы. Нажмите кнопку "Изменить" и измените эти поля на указанные.

- Выберите закладку "Протоколы".

  Вы увидите список установленных сетевых протоколов. В этом списке могут присутствовать несколько протоколов, но с точки зрения этого руководства, нас будет интересовать только один - "Протокол TCP/IP". Если "Протокол TCP/IP" отсутствует в списке, то нажмите кнопку "Добавить" для его установки.

  (Подсказка: "Добавить | TCP/IP протокол | OK")

- Выберите "Протокол TCP/IP" и нажмите кнопку "Свойства".

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

Конфигурирование IP-адреса:

Убедитесь, что Ethernet-интерфейс выбран в списке "Адаптер". Если это не так, то "прокрутив" список, найдите необходимую запись информации об адаптере.

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

  В нашей локальной сети система Windows NT имеет имя "Shemp".

- В поле "IP-адрес" введите значение "192.168.1.4".

- В поле "Маска подсети" введите значение 255.255.255.0.

Конфигурирование шлюза:

В нашей локальной сети FreeBSD-система будет функционировать как шлюз в Интернет, который будет маршрутизировать пакеты между локальной сетью Ethernet и коммутируемым PPP-соединением.

- Введите IP-адрес для Ethernet-интерфейса FreeBSD-системы, 192.168.1.1, в поле "Новый шлюз" и нажмите кнопку "Добавить".

  Если в списке "Установленные шлюзы" находятся другие шлюзы, Вы можете удалить их по Вашему усмотрению.

Конфигурирование DNS:

В данном руководстве подразумевается, что Ваш Интернет-провайдер предоставил Вам список серверов доменных имен (или DNS-серверов), который Вы должны использовать.

Если же Вы желаете запустить DNS-сервер на Вашей локальной FreeBSD-системе, обратитесь к разделу 6, "Упражнения для интересующихся студентов". Этот раздел поможет Вам сделать это.

- Выберите закладку "DNS"

- В поле "Имя компьютера" введите имя системы Windows NT, в нашем случае: "Shemp".

- В поле "Домен" введите имя Вашей локальной сети, т.е.: "my.domain"

- В секции "Порядок просмотра серверов DNS", введите IP-адрес DNS-сервера, которым(и) обеспечил Вас Ваш Интернет-провайдер и нажмите кнопку "Добавить". Повторите эту процедуру столько раз, сколько необходимо для ввода всех адресов DNS-серверов Вашего провайдера.

Другие параметры TCP/IP в Windows NT:

В нашем примере использование параметров "Адрес WINS" и "Маршрутизация" не предусматривается.

Если Вы желаете использовать Службу WINS, обратитесь по адресу http://www.localnet.org для более подробной информации о настройке этой службы, особенно в отношении разделения файлов прозрачно через Интернет.

Завершение процесса конфигурирования:

- Нажмите кнопку "OK", чтобы закрыть окно свойств TCP/IP.

- Нажмите кнопку "Закрыть", чтобы закрыть окно с настройками сети.

- Перезагрузите Ваш компьютер, если это необходимо.

Это все!

## 4.3. Конфигурирование системы Windows for Workgroups

Конфигурирование системы Windows for Workgroups для функционирования в качестве сетевого клиента требует наличия дискеты с драйвером Microsoft TCP/IP-32, установленной на рабочей станции. Драйвера TCP/IP для Windows for Workgroups не поставляются на установочных компакт-дисков или на дискетах. Поэтому, если они Вам необходимы, скопировать их Вы можете по адресу ftp://ftp.microsoft.com:/peropsys/windows/public/tcpip.

Как только драйверы TCP/IP будут загружены, выполните следующие действия:

Создайте файл "hosts" под Windows for Workgroups:

Для того, чтобы была возможность соединяться с другими системами TCP/IP внутри Вашей локальной сети, необходимо создать идентичную копию файла "hosts", который был установлен на FreeBSD-системе в разделе 3.4.

- В Менеджере Программ выберите меню "Файл", затем выберите пункт "Выполнить...", введите строку "notepad \WINDOWS\HOSTS" (без кавычек) и нажмите кнопку "OK".

- В редакторе введите адреса и имена систем из файла, созданного в разделе 3.4.

- Когда закончите редактирование, закройте редактор, предварительно сохранив файл!

Конфигурирование сети TCP/IP под Windows for Workgroups

- В главном окне Менеджера Программ откройте группу "Сеть" двойным нажатием кнопки мыши на иконке.

- Нажмите два раза на иконке "Настройка сети".

- В списке "Сетевые устройства" нажмите два раза на записи "Microsoft TCP/IP-32".

Конфигурирование IP-адреса системы Windows for Workgroups:

Убедитесь, что в списке "Адаптер" выбран правильный Ethernet-интерфейс, в противном случае выберите его из списка доступных.

- Убедитесь, что флажок "Включить автоматическую настройку DHCP" выключен.

- В нашей локальной сети для системы Windows for Workgroups, которую мы назвали "Moe" в поле "IP-адрес" введите значение "192.168.1.3".

- В поле "Маска подсети" введите значение 255.255.255.0.

Конфигурирование шлюза:

В нашей локальной сети FreeBSD-система будет функционировать как шлюз в Интернет, который будет маршрутизировать пакеты между локальной сетью Ethernet и коммутируемым PPP-соединением.

- Введите IP-адрес FreeBSD-системы, 192.168.1.1, в поле "Шлюз по умолчанию".

Конфигурирование DNS:

В данном руководстве подразумевается, что Ваш Интернет-провайдер предоставил Вам список серверов доменных имен (или DNS-серверов), который Вы должны использовать. Если же Вы желаете запустить DNS-сервер на Вашей локальной FreeBSD-системе, обратитесь к разделу 6, "Упражнения для интересующихся студентов". Этот раздел поможет Вам сделать это.

- Нажмите кнопку "DNS".

- В поле "Имя компьютера" введите имя системы Windows for Workgropus. В нашем примере: "Moe".

- В поле "Домен" введите имя Вашей локальной сети. В нашем примере: "my.domain"

- В секции "Порядок просмотра серверов DNS", введите IP-адрес DNS-сервера, которым(и) обеспечил Вас Ваш Интернет-провайдер и нажмите кнопку "Добавить". Повторите эту процедуру столько раз, сколько необходимо для ввода всех адресов DNS-серверов Вашего провайдера.

- Нажмите кнопку "OK", чтобы закрыть окно с настройками DNS.

Завершение процесса конфигурирования:

- Нажмите кнопку "OK", чтобы закрыть окно свойств TCP/IP.

- Нажмите кнопку "OK", чтобы закрыть окно настройки сети.

- Перезагрузите компьютер, если это будет необходимо.

Это все!

# Глава 5. Тестирование сети

Как только Вы завершите все описанные выше этапы конфигурирования, Вы получите нормально функционирующий PPP-шлюз в Интернет.

## 5.1. Тестирование возможности установки соединения:

Первое, что необходимо протестировать, - соединение, осуществляемое Вашим модемом с Интернет-провайдером.

## 5.2. Тестирование локальной Ethernet-сети

*** TBD ***

# Глава 6. Упражнения для интересующихся студентов

## 6.1. Создание простого DNS-сервера

В то время как управление иерархией DNS может быть довольно сложным процессом, все же существует возможность настроить мини-DNS-сервер на нашей FreeBSD-системе, которая к тому же функционирует в качестве шлюза к Вашему Интернет-провайдеру.

Основываясь на файлах каталога `/etc/namedb`, который был установлен процессе установки системы FreeBSD, стало возможным создать сервер имен, который будет одновременно и авторитетным для нашей локальной сети, используемой в этом руководстве, и "парадной дверью" в архитектуре DNS сети Интернет.

Для этой минимальной конфигурации DNS, необходимы только три файла:

    /etc/namedb/named.boot
    /etc/namedb/named.root
    /etc/namedb/mydomain.db

Файл `/etc/namedb/named.root` автоматически устанавливается как часть базовой установки системы FreeBSD. Остальные два файла должны быть созданы вручную.

### 6.1.1. Файл `/etc/namedb/named.boot`

Файл `/etc/namedb/named.boot` управляет параметрами запуска DNS-сервера и содержит информацию, которую необходимо знать этому серверу имен, а именно:

1. где искать конфигурационные файлы,

2. за какие "доменные имена" он отвечает и

3. где искать другие DNS-сервера.

Используя редактор 'ee', создайте файл `/etc/namedb/named.boot` содержащий следующее:

    ; загрузочный файл для мини-сервера имен

    directory   /etc/namedb

    ; type    domain        source host/file        backup file

    cache     .         named.root
    primary   my.domain.        mydomain.db

Строки, начинающиеся с символа ";" являются комментарием. Строки, которые несут самую существенную информацию в этом файле приведены ниже:

- `directory /etc/namedb`

  Сообщает серверу имен о том, где находятся конфигурационные файлы, на которые имеются ссылки в последних секциях файла '`/etc/namedb/named.boot`'.

- cache . named.root

  Сообщает серверу имен о том, что список корневых DNS-серверов Интернет находится в файле '`named.root`'. (Этот файл включен в базовую установку FreeBSD и его содержимое не описывается в этом руководстве.)

- primary my.domain. mydomain.db

  Сообщает серверу имен о том, что он является "авторитетным" для домена "my.domain" и что список имен и IP-адресов систем домена "my.domain" (локальная сеть) находится в файле '`mydomain.db`'.

После того, как файл `/etc/namedb/named.boot` будет создан и сохранен, переходите к следующему разделу для создания файла `/etc/namedb/mydomain.db`.

### 6.1.2. Файл `/etc/namedb/mydomain.db`

Файл `/etc/namedb/mydomain.db` содержит имена и IP-адреса каждой системы в Вашей локальной сети.

За более подробной информацией по операторам, используемым в этом файле обращайтесь к man-странице справочного руководства по named.

Файл `/etc/namedb/mydomain.db` для нашего небольшого DNS-сервера содержит следующее:

    @  IN SOA  my.domain. root.my.domain.  (
                    961230  ; Serial
                    3600    ; Refresh
                    300 ; Retry
                    3600000 ; Expire
                    3600 )  ; Minimum
        IN NS   curly.my.domain.

    curly.my.domain.    IN A    192.168.1.1 # The FreeBSD box
    larry.my.domain.    IN A    192.168.1.2 # The Win'95 box
    moe.my.domain.      IN A    192.168.1.3 # The WfW box
    shemp.my.domain.    IN A    192.168.1.4 # The Windows NT box

    $ORIGIN 1.168.192.IN-ADDR.ARPA
            IN NS   curly.my.domain.
    1       IN PTR  curly.my.domain.
    2       IN PTR  larry.my.domain.
    3       IN PTR  moe.my.domain.
    4       IN PTR  shemp.my.domain.

    $ORIGIN 0.0.127.IN-ADDR.ARPA
            IN NS   curly.my.domain.
    1       IN PTR  localhost.my.domain.

Простыми словами, этот файл объявляет, что локальный DNS-сервер:

- имеет полномочия ("SOA") на домен с именем 'my.domain',

- является сервером имен ("NS") для домена 'my.domain',

- является ответственным за обратное преобразование для всех IP-адресов, которые начинаются с '192.168.1.' и '127.0.0.' ("$ORIGIN ...")

Добавляя информацию о новой рабочей станции в этот файл, Вы должны добавлять две строки для этой системы: одну, в верхнюю секцию, которая отвечает за преобразование имени системы в Интернет-адрес ("IN A"), а другую, которая, наоборот, преобразует адрес в имя узла, в секцию `$ORIGIN 1.168.192.IN-ADDR.ARPA`.

### 6.1.3. Запуск DNS-сервера

По умолчанию DNS-сервер ('`/usr/sbin/named`') не запускается при загрузке системы. Однако, вы можете дать указание системе запустить DNS-сервер, изменив одну единственную строку в файле '`/etc/rc.conf`':

Используя редактор 'ee', загрузите файл `/etc/rc.conf`. Опустите курсор примерно на 40 строк вниз и Вы заметите секцию, которая выглядит как показано ниже:

    ---
    named_enable="NO"                       # Run named, the DNS server (or NO).
    named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
    ---

Измените эту секцию как показано ниже:

    ---
    named_enable="YES"                      # Run named, the DNS server (or NO).
    named_flags="-b /etc/namedb/named.boot" # Flags to named (if enabled).
    ---

Сохраните файл и перезагрузите систему.

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

    # named -b /etc/namedb/named.boot

Какие бы изменения Вы не производили в любом из файлов каталога `/etc/namedb`, Вам необходимо прервать выполнение сервера имен, для того, чтобы изменения вступили в силу. Это выполняется с помощью следующей системной команды:

    # kill -HUP `cat /var/run/named.pid`

## 6.2. Использование PPP-фильтров

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

(Используйте 'man ipfw' для получения более подробной информации по настройке системы безопасности для FreeBSD-систем.)

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

Существуют 4 отличных класса правил, которые могут использоваться программой PPP:

- alive-фильтры - Фильтры "счетчик доступа" (или "поддержка подключения")

  Эти правила фильтрации управляют событиями, которые будут игнорироваться выражением `set timeout=` в конфигурационном файле.

- dial-фильтры - Фильтры дозвона

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

- in-фильтры - Входные фильтры

  Контролируют входящие пакеты: будут ли они пропущены в систему или отброшены системой.

- out-фильтры - Выходные фильтры

  Контролируют исходящие пакеты: будут ли они пропущены или отброшены системой.

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

    #
    # Фильтры, поддерживающие соединение
    # Не поддерживать соединения пакетами ICMP,DNS и RIP
    #
     set filter alive 0 deny icmp
     set filter alive 1 deny udp src eq 53
     set filter alive 2 deny udp dst eq 53
     set filter alive 3 deny udp src eq 520
     set filter alive 4 deny udp dst eq 520
     set filter alive 5 permit 0/0 0/0
    #
    # Фильтры дозвона:
    # Примечание:  ICMP будет производить дозвон в этой конфигурации!
    #
     set filter dial 0 permit 0/0 0/0
    #
    # Разрешить опознанные пакеты
    #
     set filter in 0 permit tcp dst eq 113
     set filter out 0 permit tcp src eq 113
    #
    # Разрешить telnet-подключения к Интернет
    #
     set filter in 1 permit tcp src eq 23 estab
     set filter out 1 permit tcp dst eq 23
    #
    # Разрешить доступ в Интернет по ftp
    #
     set filter in 2 permit tcp src eq 21 estab
     set filter out 2 permit tcp dst eq 21
     set filter in 3 permit tcp src eq 20 dst gt 1023
     set filter out 3 permit tcp dst eq 20
    #
    # Разрешить доступ к поиску в DNS
    #
     set filter in 4 permit udp src eq 53
     set filter out 4 permit udp dst eq 53
    #
    # Разрешить передачу зоны DNS
    #
     set filter in 5 permit tcp src eq 53
     set filter out 5 permit tcp dst eq 53
    #
    # Разрешить доступ внутри локальной сети
    #
     set filter in 6 permit 0/0 192.168.1.0/24
     set filter out 6 permit 192.168.1.0/24 0/0
    #
    # Разрешить ответы ping и traceroute
    #
     set filter in 7 permit icmp
     set filter out 7 permit icmp
     set filter in 8 permit udp dst gt 33433
     set filter out 9 permit udp dst gt 33433
    #
    # Разрешить cvsup
    #
     set filter in 9 permit tcp src eq 5998
     set filter out 9 permit tcp dst eq 5998
     set filter in 10 permit tcp src eq 5999
     set filter out 10 permit tcp dst eq 5999
    #
    # Разрешить протокол NTP для синхронизации времени
    #
     set filter in 11 permit tcp src eq 123 dst eq 123
     set filter out 11 permit tcp src eq 123 dst eq 123
     set filter in 12 permit udp src eq 123 dst eq 123
     set filter out 12 permit udp src eq 123 dst eq 123
    #
    # SMTP - будет неплохо!
    #
     set filter in 13 permit tcp src eq 25
     set filter out 13 permit tcp dst eq 25
    #
    #
    # Мы часто используем `whois`, поэтому разрешим это
    #
     set filter in 14 permit tcp src eq 43
     set filter out 14 permit tcp dst eq 43
     set filter in 15 permit udp src eq 43
     set filter out 15 permit udp dst eq 43
    #
    # Если пакет не удовлетворяет ни одному указанному выше условию, то он будет
    # блокирован.
    #-------

В каждом классе правил фильтрации пакетов можно применить до 20 явных фильтров. Правила в каждом классе представляют собой последовательные номера от 0 до 20, но ни одно из правил для конкретного класса фильтров не возымеет действия до тех пор, пока будет определено правило с номером '0'!

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

Если Вы решите, что Вам необходимо использовать правила фильтрации пакетов, добавьте строки, описанные выше в Ваш файл `/etc/ppp/ppp.conf` в одну из секций "стандартную:", "demand:" или "интерактивную:" (или же во все, по Вашему усмотрению).

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

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