Документация по ОС FreeBSD Четверг, 02.05.2024, 05:55
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » РРР

Настройка dial-up соединения во FreeBSD
PPP (Point to Point Protocol) - протокол двухточечной связи, как правило используется для подключения к Интернет с помощью модема.

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

Чем различаются пользовательский РРР и pppd?
Считается что PPP легче настроить, но при работе он использует туннельное устройство что снижает
скорость работы, pppd - эффективней, т.к. работает в качестве демона, но тут могут возникнуть
проблемы при организации доступа в Интернет для большого количества пользователей. Рассмотрим
подключение к Интернет обоими способами.

Использование Kernel PPP.

Файлы конфигурации находятся в директории /etc/ppp. но кроме конфигурационных файлов может
возникнуть необходимость в редактировании файла /etc/resolv.conf

/etc/resolv.conf
в этом файле определяется способ преобразования системой имен хостов в ip-адреса. Используется
ключевое слово domain для указания доменного имени по умолчанию, т.е. считается что имена хостов, которые представлены в виде неполного доменного имени, автоматически принадлежат к домену по умолчанию. Последующие строки содержат ключевое слово nameserver, за которым следует
ip-адрес DNS-сервера. /etc/resolv.conf должен выглядеть примерно так:

domen bsddoc.ru
nameserver 111.111.11.1
nameserver 222.222.22.2

Но скорее всего ничего изменять в нем вам не придется. Точно на это вам ответить может только провайдер.

Теперь перейдем к файлу содержащему опции с которыми выполняется демон pppd. Некоторые опции у
вас могут быть другими, это зависит от того, какой тип аутентификации использует провайдер.
Рассмотрим хрестоматийный пример:
/etc/ppp/options

/dev/cuaa0 115200
crtcts
modem
connect "/usr/bin/chat -f /etc/ppp/chat.script"
noipdefault
silent
defaultroute

Теперь пояснения:
/dev/cuaa0 115200 - определяет порт к которому подключен модем. Повторю, что во FreeBSD нумерация устройств начинается с 0, следовательно, cuaa0 = com1, cuaa1 = com2, и т.д.
crtcts - установка аппаратного контроля за приемом/передачей данных.
modem - заставляет pppd проверять наличие сигнала CD (Carrier Detect) от модема перед открытием порта.
connect "/usr/bin/chat -f /etc/ppp/chat.script" - в pppd нет функции дозвона, поэтому для дозвона к провайдеру приходиться использовать дополнительную программу. Как правило, это chat, включенная в стандартную поставку FreeBSD. Сценарий файла /etc/ppp/chat.script будет рассмотрен ниже.
noipdefault - указывает на динамическое назначение ip-адресса.
silent - заставляет pppd ожидать LCP (Line Control Protocol) пакеты.
defaultroute - на время работы ppp-соединения добавляется запись в таблицу маршрутизации о данном маршруте. При закрытии соединения запись удаляется.

Если необходимо установить соединение с выделением вам статического ip-адреса, то вместо noipdefault нужно указать через двоеточие выделенный вам ip-адресс и адрес шлюза провайдера, например: 123.123.12.1:321.312.32.3

Сценарпий программы chat.
/etc/ppp/chat.script

ABORT "BUSY"
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "NO CARRIER"
""
AT OK
ATDT505999 CONNECT
""
TIMEOUT 10
ogin: skif
TIMEOUT 5
sword: my_password

Символы перехода на другую строку и лишние пробелы программа игнорирует, так что скрипт может быть записан и в одну строку, но для удобства восприятия я записал его в виде двух колонок - ответ модема и реакция на это.
Теперь расшифровка: ABORT - указание прервать связь, если от модема будет получен сигнал BUSY или NO CARRIER. Делее команда AT (Atention), на что модем должен ответить ОК. Затем модему посылается ATDT (Atention Dial Tone) или ATDP для импульсных АТС, и номер телефона модемного пула. Модем должен ответить CONNECT, при получении ответа устанавливается тайм-аут в 10 секунд, в течении которых модем должен передать строку ogin на что chat отвечает skif (т.е. передает логин), и в течении 5 секунд ожидает пароль. Кавычки на самом деле не обязательны, их используют в том случае если в строка пустая, в ней используется пробел или такие символы как "&", "*" и др. Пустая строка означает то, что от модема ждать ничего не нужно.

После этих настроек можно запускать демон. Для этого в консоли набирается pppd. Для того что бы разорвать соединение: killall pppd.

Но если необходимо предоставить обычным пользователям возможность
дозвона к провайдеру придется дать возможность запускать файл
chat.script - а каждый, кто может запускать скрипт,
может прочесть его и узнать пароль дозвона к провайдеру,
а потом использовать этот пароль с любой другой машины.
В этом случае придется использовать pap и chap аутентификацию.
В файл /etc/ppp/options необходимо добавить как минимум одну строку пользователя (user line) которая задаст используемый для аутентификации профиль.
user skif

Так же есть еще несколько опций:
refuse-chap - если нужно что бы хост отказал клиенту в CHAP-аутентификации, даже если удаленный компьютер делает запрос именно на этот метод аутентификации.
refuse-chap - тоже самое для PAP-аутентификации.
require-chap - требование использовать CHAP-аутентификацию.
require-chap - тоже самое для PAP.

Информация для CHAP и PAP аутентификации содержится в файлах /etc/ppp/chap-secrets и /etc/ppp/pap-secrets, соответственно. Они имеют один и тоже формат:
username hostname password
В поле hostname, которе определяет имя хоста к которому разрешено подключение. Можно указать *, т.е. разрешить устанавливать соединение с любым компьютером.
/etc/ppp/chap-secrets
skif * my_password

/etc/ppp/pap-secrets
skif * my_password

Необходимо помнить о том что право доступа к файлам /etc/ppp/chap-secrets и /etc/ppp/pap-secrets должен иметь только root (root системы, а не root из bsddoc.ru :)), в противном случает использование CHAP и PAP аутентификации лишено смысла.

Демон pppd может поддерживать соединение двух видов:
- постоянное соединение (persistent connection), поддерживаемое демоном круглосуточно. Для его установки в файл /etc/ppp/options необходимо добавить опцию persist;
- соединение по требованию (dial-on-demand), устанавливаемое демоном автоматически при возникновении исходящего трафика, если же линия простаивает, то происходит разрыв соединения.
В /etc/ppp/options придется добавить еще несколько строк:
demand - включение режима соединения по требованию,
idle n - разрыв соединение, если в течении n секунд не было ни входящего, ни исходящего трафика.

Для запуска демона pppd при загрузке системы можно добавить строку pppd в файл /etc/rc.conf, но я бы рекомендовал создать сценарий включающий только одну строку pppd и поместить его в /usr/local/etc/rc.d


Использование User PPP.
теперь я рассмотрю настройку Интернет соединения с использованием PPP User Level. Я рекомендую
прочитать все ниже написанное исключительно в познавательных целях, т.к. использование user PPP я назвал бы как минимум нежелательным.

Для начала в вашем ядре должна быть включена поддержка туннельного устройства:
pseudo-device tun 1

Настройки user PPP находятся в файле /etc/ppp/ppp.conf. система создает образец и вам нужно
будет только немного изменить его. Если вы внимательно прочитали часть, посвященную настройке kernel ppp то проблем с ppp.conf возникнуть не должно. Я опишу только еще не знакомые вам опции.
set log - строка настройки модема, полностью аналогична сценарию программы chat.
set ifaddr - если провайдер выделил вам статический адрес, то на него нужно заменить первое число, в противном случае ничего менять не нужно; второе числе - адрес шлюза провайдер, если он вам неизвестен, то ничего менять не нужно; третье число - маска сети, и опять никакие изменения не требуются.
set timeout - аналог опции idle n.
enable dns - проверка валидности DNS-серверов указанных в файле /etc/resolv.conf, если указанные
там серверы недоступны РРР обновляет этот файл.
set phone - телефон модемного пула провайдера.
set authname - ваш логин.
set autkey - ваш пароль.
Если необходимо что бы запускать user PPP могли все пользователи необходимо добавить строку:
allow users


В том случае если вам необходимо использовать стандартную аутентификацию, то удалите строку papchap и все нижеследующие опции и добавьте после set dial:
Provider:
set phone "505999"
set login "TIMEOUT" 10 " " " " ogin: skif sword: my_password "

Если вы работаете с CHAP или PAP аутентификацией для user PPP нужно набрать в консоли:
ppp -background papchap
А при работе с аутентификацией в командной оболочке:
ppp -background provider
Для разрыва соединения:
killall ppp

Как и kernel PPP user PPP может работать в режимах "Соединение по требованию" и "Постоянное
соединение".
Соединение по требованию:
PPP необходимо запускать командой ppp -auto papchap, или ppp -auto provider, в зависимости от используемого типа аутентификации.
Для установки соединения при загрузке нужно добавить в файл /etc/rc.conf строку
ppp_enadle="YES"

Постоянное соединение:
Для установки постоянного соединения из файла /etc/ppp/ppp.conf необходимо удалить строку set timeout, запус PPP будет осуществляться командой
ppp -ddial papchap (или ppp -ddial provider)
Для установки постоянного соединения при загрузке в файл /etc/rc.conf нужно дописать:
ppp_enable="YES"
ppp_mode="ddial"

Если вы не используете PAP-аутентификацию, то в обоих случаях в файл /etc/rc.conf так же необходимо добавить строку ppp_profile="provider"
Не стоит также забывать что строка ppp_enadle="YES" приведет к активации NAT (Network Adress Translation), открывающего доступ к Интернет для компьютеров локальной сети, если это нежелательно, то в файл /etc/rc.conf нужно добавить строку ppp_nat="NO".

Так же следует добавить, что использовать pppd иногда невозможно.
Например при настройке isdn, можно установить ppp-сессию только с помощью user ppp, либо использовать встроенные в isdn4bsd средства.

И еще одно примечание. Во всех своих примерах я использовал ATDT, но если ваша АТС не поддерживает тональный набор, то вместо ATDT должно быть ATDP.

При устновке и разрыве соединения так же можно автоматически выполнять команды, они записываются в таком же виде как и в командном интерпритаторе. Их список указывается в файлах /etc/ppp/ppp.linkup и /etc/ppp/ppp.linkdown, соответственно. Например:
papchap:
xchat


Выражаю благодарность Дмитрию Карпову за ценные замечания.
Категория: РРР | Добавил: oleg (29.10.2007)
Просмотров: 15116 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024