Ключевые слова:dialup, freebsd, ppp, (найти похожие документы)
From: skif <skif@bsddoc.ru>
Date: Mon, 23 Feb 2004 14:31:37 +0000 (UTC)
Subject: Настройка dial-up соединения во FreeBSD.
Оригинал: http://bsddoc.ru/index.php?stati_freebsd&submit=dalee&num=7
Настройка dial-up соединения во FreeBSD.
PPP (Point to Point Protocol) - протокол двухточечной связи, как
правило используется для подключения к Интернет с помощью модема.
Во FreeBSD он реализован в двух формах - демон pppd встроенный в ядро
системы, и РРР запускаемый как пользовательская программа.
Чем различаются пользовательский РРР и pppd?
Считается что PPP легче настроить, но при работе он использует
туннельное устройство что снижает скорость работы, pppd -
эффективней, т.к. работает в качестве демона, но тут могут возникнуть
проблемы при организации доступа в Интернет для большого количества
пользователей. Рассмотрим подключение к Интернет обоими способами.
Использование Kernel PPP.
Файлы конфигурации находятся в директории /etc/ppp. но кроме
конфигурационных файлов может возникнуть необходимость в
редактировании файла /etc/resolv.conf /etc/resolv.conf в этом файле
определяется способ преобразования системой имен хостов в ip-адреса.
Используется ключевое слово domain для указания доменного имени по
умолчанию, т.е. считается что имена хостов, которые представлены в
виде неполного доменного имени, автоматически принадлежат к домену по
умолчанию.
Последующие строки содержат ключевое слово nameserver, за которым
следует ip-адрес DNS-сервера. /etc/resolv.conf должен выглядеть
примерно так:
domin 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 nfrтак же необходимо добавить строку
ppp_profile="provider"
Не стоит также забывать что строка ppp_enadle="YES" приведет к
активации NAT (Network Adress Translation), открывающий доступ к
Интернет для компьютеров локальной сети, если еэто нежелательно, то в
файл /etc/rc.conf нужно добавить строку ppp_nat="NO".
При устновке и разрыве соединения так же можно автоматически команды,
они записываются в таком же виде как и в командном интерпритаторе. Их
список указывается в файлах /etc/ppp/ppp.linkup и
/etc/ppp/ppp.linkdown, соответственно. Например:
papchap:
xchat
(с) skif
ICQ: 140787
e-mail: skif@bsddoc.ru