Сегодня вашему вниманию предлагается оригинальная статья Ивана Песина, в
которой он по шагам рассказывает, как настроить Linux в качестве dial-up
сервера. Год назад мне пришлось это делать самому, и мне жаль, что тогда такой
статьи под рукой не оказалось. Справились, конечно, но время тоже
потратили...
Как всегда, жду вопросов и замечаний по адресу suralis-s@mtu-net.ru.
Если не лень, то сразу пишите, можно ли использовать Ваши письма в рассылке.
Сергей Скороходов
Повесть о Linux и PPP
Автор: (C) Иван Песин
1. Введение.
Цель написания данной статьи -- комплексное описание настройки Linux в
качестве сервера доступа для клиентов Windows 9x/NT. При этом предполагается,
что читатель знаком с основами настройки Linux в качестве маршрутизатора и
пакетного фильтра.
Описание приводится для дистрибутива RedHat 6.2, но может
быть легко применены и к другим.
2. Подготовка.
Для настройки сервера доступа вам понадобятся пакет с демоном ppp и пакет
mgetty. Для того, что бы узнать, установлены ли у вас указанные пакеты,
введите:
$ rpm -q mgetty; rpm -q ppp
Если пакетов нет -- установите их с компакт диска :
# cd /mnt/cdrom/RedHat/RPMS; rpm -ivh mgetty*rpm; rpm -ivh ppp*rpm;
3. Настройка
Теперь можно переходить к настройке системы. В каталоге /etc/mgetty+sendfax/
находятся файлы конфигурации программы mgetty. Проверяем их содержимое:
файл dialin.config должен быть пустой (все строки закомментированы);
файл login.config среди прочих, закомментированных строк, должен содержать
строки:
Первая строка указывает на то, что получив вызов от ОС Windows и некоторых
других), программа mgetty должна передать управление демону PPP. Вторая строка
разрешает в остальных случаях выдавать приглашение (полезно при отладке,
например).
файл mgetty.config варьируется, и должен быть привязан к вашему
модему. У меня он выглядит вот так:
port ttyS0
speed 115200
data-only y
port ttyS1
speed 115200
data-only y
port ttyS2
speed 115200
data-only y
Следующим нашим шагом будет указание Linux, когда и как он должен запускать
программу mgetty Для этого в каталоге /etc находим файл inittab и добавляем
в него строки:
Здесь параметр "-n" указывает количество гудков до снятия трубки, "-D" -- отключение
режима факса, F115200 -- скорость обмена с модемом. Возможно, вы заметили, что
ключами дублируются параметры, указанные в файле mgetty.conf. Конечно
же, делать это не обязательно, можно выбрать наиболее вам нравящийся вариант.
Теперь, чтобы процесс узнал о изменении файла конфигурации, выполняем команду:
# init q
На модеме должна загореться лампочка "TR" (на некоторых модемах --
"MR"). Для пущей верности проверим, запустился ли mgetty, командой:
$ ps ax | grep mgetty
Очередь настраивать демон PPP. Для этого в каталоге /etc/ppp создаем файл
options.ttySX, где Х -- номер порта к которому подсоединен модем. В него вносим следующие строки:
Где aaa.bbb.ccc.ddd -- адрес, присваиваемый интерфейсу сервера,
адрес eee.fff.ggg.hhh -- отдается клиенту, а kkk.lll.mmm.nnn -- адрес DNS-сервера.
Важный момент с адресом клиента. Он либо будет принадлежать той же сети, что и сервер,
либо нет. В первом случае вам необходимо будет добавить директиву proxyarp
в файл options.ttySX, и тогда всем хостам будет казаться, что клиент находится в
Ethernet-сети. Во втором же случае, будет необходимым указание маршрута к сети
клиента либо к самому хосту клиента.
Пройдемся по другим полезным опциям. Итак:
idle n сообщает демону pppd о необходимости обрыва соединения, в случае
отсутствия в канале пакетов данных на протяжении n секунд.
ktune разрешает демону настраивать переменные ядра. Например, если в
конфигурации указана директива proxyarp, то автоматически будет разрешена маршрутизация пакетов.
ms-wins <addr> указывает адрес сервера WINS для
клиентов.
noipx запрещает использование протоколов IPXCP и IPX
show password опция, полезная при отладке: при протоколировании
пакетов, пароли будут представлены открытым текстом.
На очереди файл /etc/ppp/pap-secrets. В нем указывают пользователей, которым
разрешен доступ по dial-up, и где они должны проходить аутентификацию. Вот пример:
dipuser1
myserver
""
*
dipuser2
myserver
""
*
dipuser3
myserver
"otherpass"
*
dipuser4
myserver
""
*
dipuser5
myserver
"yetanotherpass"
*
dipuser6
myserver
""
dfg.wer.cxv.sdf
dipuser7
myserver
""
*
где:
dipuser1
-- имя пользователя,
myserver
-- сервер аутентификации (имя вашего хоста)
""
-- означает, что пароль берется из /etc/passwd
(/etc/shadow)
otherpass
-- конкретно указанный пароль
*
-- означает, что разрешен доступ с любого IP адреса
dfg.wer.cxv.sdf
-- доступ только с указанного адреса.
Вот мы и настроили демон PPP. Для полного счастья нам осталось разрешить форвардинг
пакетов. Это делается командой:
# sysctl -w net.ipv4.ip_forward=1
Для того, что бы эта функция включалась автоматически при загрузке системы,
отредактируйте файл /etc/sysctl.conf так, чтобы в нем значилось:
net.ipv4.ip_forward = 1
4. Заключение
Всё. Сервер Dial-UP уже работает. В качестве дополнительных возможностей укажем
настройку firewall, времени доступа и так называемый callback. Документацию
по настройке брандмауэра (firewall) можно найти на любом сайте с документацией
по ОС Линукс. Ограничение времени доступа реализуется при помощи файла /etc/nologin.ttySX,
когда этот файл существует, доступ через указанный порт запрещен. В простейшем
случае в /etc/crontab добавляются строки:
результатом коих будет разрешение доступа к серверу с 8:30 до 20:30 на порт
/dev/ttyS1 (COM2). Настройка callback является темой отдельной статьи, которая
будет опубликована в ближайшее время. Сложность такой настройки обуславливается
желанием не производить никаких дополнительных действий на клиентах. Для этого
существует специальный протокол CBCP, который, к сожалению, не входит в бинарную
поставку демона ppp, а существует в виде патча, поставляемого с исходным кодом
и требующим компиляции.
В заключение хочу сказать, что в дистрибутиве RedHat 7.2 поставляется демон
ppp с ошибкой, потому вам будет необходимо либо понизить, либо повысить версию
демона.
Copyright (C) 2002 Иван Песин
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр
Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею
Скороходову (suralis-s@mtu-net.ru).
Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации
Ваших отзывов в рассылке.