Ключевые слова:pppoe, freebsd, ppp, ethernet, (найти похожие документы)
From: azzzazelo <http://azzzazelo.livejournal.com>
Date: Mon, 26 Nov 2007 18:21:07 +0000 (UTC)
Subject: Настройка PPPoE соединения во FreeBSD
Оригинал: http://azzzazelo.livejournal.com/1199.html
Пару слов о настройке PPPoE соединения во FreeBSD
Очень многие небольшие домашние сети в настоящее время по ряду причин
(в основном связанных с безопасностью) осуществляют перевод
пользователей с VPN (Virtual Private Network) на PPPoE (point-to-point
other Ethernet). В связи с этим возникает вопрос с настройкой
подключения к сети посредством протокола PPPoE.
Во FreeBSD есть несколько возможностей такого подключения при помощи
встроенного в систему ppp (на базе netgraph) или при помощи
программного mpd (/usr/ports/net/mpd). Рассмотрим первый способ.
Конфигурационные файлы для процесса ppp хранятся в папке /etc/ppp/.
При этом основным файлом (и единственным, который теперь используется)
является /etc/ppp/ppp.conf Ранее (в более старых версиях FreeBSD) по
умолчанию в данном каталоге хранились ещё несколько файлов (например,
chap-secrets, где отдельно указывался пароль, используемый при
подключении, и др.). На настоящий момент допускается применение
нескольких файлов, но для удобства проще задать всю необходимую
конфигурацию сразу в ppp.conf
Итак, по умолчанию файл ppp.conf выглядит примерно так.
#################################################################
# PPP Sample Configuration File
# Originally written by Toshiharu OHNO
# Simplified 5/14/1999 by [email protected]
#
# See /usr/share/examples/ppp/ for some examples
#
# $FreeBSD: src/etc/ppp/ppp.conf,v 1.8 2001/06/21 15:42:26 brian Exp $
#################################################################
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
# Ensure that "device" references the correct serial port
# for your modem. (cuaa0 = COM1, cuaa1 = COM2)
#
set device /dev/cuaa1
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK
ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set timeout 180 # 3 minute idle timer (the default)
enable dns # request DNS info (for resolv.conf)
papchap:
#
# edit the next three lines and replace the items in caps with
# the values which have been assigned by your ISP.
#
set phone PHONE_NUM
set authname USERNAME
set authkey PASSWORD
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR # Add a (sticky) default route
Дадим некоторые пояснения к правилам оформления файла.
Слово до символа ":" (default, papchap) означает начало блока с
соответствующим именем, который содержит список параметров. Начало
следующего блока говорит об окончании предыдущего. Так ключевое слово
default говорит о том, какие данные будут использоваться в соединении
по умолчанию при каждом запуске ppp и соответственно для всех
указанных в файле типов соединений. Как правило каждый блок
соответствует отдельному провайдеру. Так например при использовании
разных провайдеров (различных ppp соединений) для одной машины может
быть задан блок pppoe_conection (для соединения PPPoE) и блок
modem_connection (для модемного соединения). При этом имя блока,
естественно может быть любым и к примеру, совпадать с кличкой вашего
любимого кота, который своим шипением так искусно подражает модему.
Блок papchap, отвечающий за авторизацию и её безопасность при
установлении соединения вообще говоря не обязателен и как правило
параметры из этого блока объединяются внутри единого блока для каждого
конкретного соединения. Соответственно PAP и CHAP - это механизмы
аутентификации, которые используются провайдером (серверная часть
протокола PPP).
Если внимательно взглянуть на параметры, приводимые внутри блока, то
смысл их станет понятен уже из названия. А если вы что-то не поняли,
то всегда есть man ppp.
Итак, на базе конфигурационного файла по умолчанию составим свой.
#Начало файла
default:
set log Phase tun command
myisp:
set device PPPoE:rl0
set authname your_login
set authkey your_password
enable dns
add default HISADDR
#Конец файла
Сделаем некоторые пояснения.
Директива set говорит о том, что надо установить следующие после неё
параметры.
log - включает ведение log-файла (по умолчанию все сообщения
записываются в файл /var/log/ppp.log
Phase - поэтапный вывод сообщений в лог (соответствует этапам
подключения), позволяет исключить малоинформативные сообщения
tun - виртуальное сетевое устройство, которое будет задействовано при
соединении (в данном случае tun, т.к. протокол точка-точка)
command - производить запись в лог как команд, полученных с командной
строки, так и тех, которые были считаны стартовым скриптом ppp из
конфигурационного файла
device - задаёт имя физического устройства, по которому осуществляется
соединение (например, сетевая карта rl0 или модем на com порту
/dev/cuaa1)
PPPoE - задаёт уточнение протокола (в рамках протоколов,
поддерживающихся ppp)
authname - указывает на логин, используемый при подключении, обычно
выдаётся провайдером (вместо your_login введите свой логин)
authkey - задаёт пароль, используемый при авторизации (при помощи
механизмов PAP или CHAP), и обычно выдаваемый провайдером (вместо
your_password введите свой пароль)
enable dns - указывает, что данные о DNS сервере следует считывать из
файла /etc/resolv.conf
add default - говорит о том, что не нужно использовать для посылки
пакетов другой стороне PPP-соединения альтернативной записи о
маршрутизации
HISSADR - отображать IP адрес присоединённой стороны
Таким образом, как зто следует из конфигурационного файла, осталось
только прописать адрес DNS (лучше спросить у провайдера) в файле
/etc/resolv.conf
У меня используется для ускорения загрузки страниц в браузере
собственный кеширующий DNS сервер, запущенный на моей машине, который
впрочем в качестве forwarders использует DNS сервер провайдера.
Поэтому первой строкой впишем его, а уже потом провайдерский DNS
сервер.
# Начало файла
nameserver 127.0.0.1
nameserver xxx.xxx.xxx.xxx # смените на IP адрес DNS сервера вашего провайдера
# Конец соединения
Вот и всё, теперь можно попробовать подключиться. Сделать это можно
при помощи команды запущенной от имени root
#ppp -ddial myisp
Она выдаст что-то похожее на
Working in ddial mode
Using interface: tun0
Теперь внесём соответствующие записи в /etc/rc.conf для того, чтобы
соединение устанавливалось автоматически при старте системы.
Добавим следующие строки от имени root.
#echo 'ppp_enable="YES"'
#echo 'ppp_mode="ddial"'
#echo 'ppp_profile="myisp"'
На этом конфигурирование PPP можно считать оконченным. Теперь можете
запустить аську и рассказать своим друзьям, что несмотря на козни
вашего провайдера у вас по-прежнему работает интернет на FreeBSD =)
И ещё несколько слов о том, как происходит запуск ppp при старте
системы.
Как известно, стартовые скрипты располагаются в каталоге /etc/rc.d
(куда с лёгкостью можно добавить какой-нибудь свой, однако, чтобы не
мешать пользовательские скрипты с системными, свои лучше помечать в
/usr/local/etc/rc.d).
При этом за общий запуск всех сетевых соединений указанных в
/etc/rc.conf отвечает скрипт /etc/netstart, в котором фактически
просто перечислены некоторые скрипты из /etc/rc.d За старт ppp
отвечает скрипт /etc/rc.d/ppp-user, который фактически представляет
простенький скрипт, формирующий команду для запуска ppp на базе
соответствующих строк в файлах /etc/rc.conf и /etc/ppp/ppp.conf, а
также синхронизирует ipfilter с ppp. Поэтому в случае необходимости
всегда можно внести свои дополнения в этот файл.
P.S. При подготовке данной заметки использовались man ppp.
Может кто-нибудь и для netbsd 4 скажет как настраивать?
В моей только что установленной системе просто нет
/etc/ppp
странно что и на liveCD netbsd 4 его нет так же. В инет получается ходить только из локалки напрямую никак.
Ошибка:
enable dns - директива, которая указывает не считывать из resolv.conf, а набоборот _записывать_ в него данные о DNS серверах, предоставляемые в ходе ppp подключения. Соответственно если у вас прописан свой DNS, типа 127.0.0.1 - то эту опцию нужно закомментить, иначе при подключении DNS resolv.conf будет перезаписан.
Цитата из хендбука:
"В этом документе предполагается, что у вас есть следующее:
...
* IP адреса одного или нескольких серверов имен. Обычно провайдер дает для этих целей два IP адреса. Если нет ни одного, вы можете использовать команду enable dns в ppp.conf и ppp настроит список серверов имен. Эта возможность зависит от наличия поддержки согласования DNS в реализации PPP провайдера."