Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1076 / 303 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 4:

Сетевые соединения: наблюдение и исправление неполадок

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >

Удаленный доступ по коммутируемым каналам связи

Протокол PPP

Протокол PPP (Point-to-Point Protocol) был разработан для связи по последовательным каналам, таким, как коммутируемые телефонные каналы, соединения через последовательные порты и т.д. С помощью протокола PPP можно установить канал связи и передавать по нему пакеты любых протоколов – TCP/IP, IPX/SPX, NetBIOS. Нас в приложении к UNIX интересует настройка работы с TCP/IP поверх PPP.

Протокол PPP предполагет возможность выполнения следующих операций:

  • установление связи;
  • согласование параметров передачи (скорость, четность и т.п.);
  • согласование параметров сетевого интерфейса (IP-адрес, маска, адрес сервера имен и пр.);
  • передача пакетов между интерфейсами;
  • разрыв связи.

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

Подробная документация по настройке PPP в Solaris 9 содержится, в частности, в документе "Solaris 9 System Administrator Collection >> System Administration Guide: Resource Management and Network Services" по адресу http://docs. sun.com/db/doc/806-4076?q=ppp, а обзор PPP в Solaris 9 имеется по адресу http://docs.sun.com/db/doc/806-4076/6jd6amr63?q=ppp&a=view

Программа aspppd

В системах Solaris начиная с Solaris 2.4 и до Solaris 8 включительно для обеспечения связи по протоколу PPP использовалась утилита aspppd, вызывавшая нарекания из-за сложности настройки и использования. В Solaris 9 она заменена на более стандартную и удобную программу pppd, которая может служить как сервером, так и клиентом PPP. Для настройки aspppd в более старых системах Solaris следует обратиться к FAQ на эту тему. Например, можно найти одно из них по адресу http://solaris.opennet. ru/docs/RUS/solaris_x86/index.html.

Программа pppd

Сейчас для установления соединений через PPP в UNIX-системах используют сервер pppd, причем он есть в поставке как новых коммерческих, так и некоммерческих UNIX-ов.

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

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

Настройки программы pppd находятся в каталоге /etc/ppp. Основные файлы настроек pppd – это options и ppp.conf.

Синтаксис вызова pppd:

pppd параметры

Параметры должны включать имя_устройства и скорость.

Имя устройства последовательного порта

В Solaris, как и в некоторых других системах UNIX, файл устройства, используемый для приема соединения через последовательный порт, и файл устройства, используемый для инициироваиня такого соединения, – это два разных файла. Входящие соединения принимаются устройствами /dev/ttyd*, а исходящие создаются через /dev/cua*. Имя устройства, например, для входящих соединений через COM2, будет /dev/ttyd1 ( ttyd0 – COM1, ttyd1 – COM2), а для исходящих через COM2 – /dev/cua1.

Если Вы настраиваете сервер удаленного доступа, надо заранее записать в конфигурацию модема (т.е. в NVRAM самого модема) значения S0=1 и S1=1 для того, чтобы модем снимал трубку с первого звонка.

Для непосредственного общения с модемом удобно использовать простейшую терминальную программу cu:

cu –l /dev/cua1.

Если никакая программа не общается с /dev/cua1 в данный момент, то cu подключится к порту COM2. Теперь можно набирать команды модема: все, что будет набрано, попадет в последовательный порт. Для выхода из cu надо набрать ~. (тильда, затем точка) и подождать немного. Программа cu не умеет мгновенно отсоединяться.

Обращаться к устройствам напрямую с помощью cu может только root. Это умолчание можно изменить, установив нестандартные права доступа к файлам устройств /dev/cua* и /dev/ttyd*.

Параметры pppd удобно записать в файл /etc/ppp/options. Если все ppp-сессии на сервере будут однотипными (одна скорость, соединение через один и тот же модем, звонки всегда только входящие), в этот файл можно записать все параметры pppd. Саму программу pppd можно прописать в качестве командного процессора по умолчанию в /etc/passwd всем пользователям, которые используют этот сервер как сервер удаленного доступа.

cat /etc/ppp/options
/dev/cuaa0 # устройство
57600 # скорость
crtscts # управл. сигн. RTS/CTS
modem # модем, использовать DTR
debug # протоколирование сессии
passive # устанавливать соед. и ждать*
dns1 193.114.38.65 # установить DNS
193.114.38.5:193.114.38.4 #назначить адреса local:dialup**
-detach # не уходить в background
lock # блокировка порта по типу UUCP

Параметр debug включает протоколирование сессии. Программа pppd расценит этот параметр как требование записывать с использованием механизма syslog() все управляющие входящие и исходящие пакеты в удобочитаемой форме. Запись происходит от имени источника daemon с уровнем debug. Подробнее об источниках и уровнях записей в syslogd см. syslog.conf(4).

Параметр modem указывает, что нужно использовать сигналы управления модемом. Программа pppd ждет сигнала CD (carrier detect) от модема, если только не указан connect-script, и "передергивает" (коротко выключает, затем включает) сигнал DTR (dara terminal ready), как только соединение завершается и перед тем, как запустить connect-script.

Если нужно установить индивидуальные настройки pppd для каждого пользователя, то в домашние каталоги пользователей нужно положить файлы .ppprc, которые будут прочитаны демоном pppd после /etc/ppp/ options и могут содержать дополнительные сведения для него.

Выдача динамических адресов клиентам PPP ("динамических" в том смысле, что клиент не знает заранее, какой адрес он получит) выполняется путем создания файлов с именами типа /etc/ppp/options.ttyd1. В каждом таком файле можно указать конкретный адрес удаленного клиента, и тот будет получать разные адреса при соединении с разными последовательными портами сервера. В то же время, каждому порту сервера и его удаленному клиенту на этом порте при такой настройке всегда будет соответствовать фиксированная пара адресов, жестко определенная для каждого последовательного порта сервера.

Кроме этого, можно вообще ничего не писать в /etc/ppp/options про назначение адресов. По умолчанию всем позвонившим на сервер удаленного доступа pppd выдаст адрес ethernet-интерфейса этого сервера. Отличать разных клиентов он будет не по IP-адресу, а по имени создающегося при соединении через PPP интерфейса – ppp0, ppp1 и т.д.

Приведенный пример предполагает, что пользователи при дозвонке на сервер удаленного доступа не применяют стандартный протокол аутентификации в Windows-системах, так называемый PAP (password authentication protocol). В данном примере предполагалось, что пользователи работают с конфигурацией generic login из Winows XP или вводят имя и пароль руками, открытым текстом.

Если требуется настроить аутентификацию с применением PAP и при этом использовать для аутентификации файл /etc/passwd, нужно записать в файл /etc/ppp/options параметр login. При этом пользователь, который соединяется с сервером удаленного доступа с использованием PAP, должен иметь учетную запись и в /etc/passwd, и в /etc/ppp/pap-secrets. Формат записей в последнем таков:

имя_клиента имя_сервера пароль IP-адрес

В каждом из полей может стоять *, обозначающая допустимость любого значения. Как правило, строка аутентификации в pap-secrets выглядит так:

ivan * KqZXV5-u *

Эта строка определяет имя и пароль пользователя ivan, которому разрешено соединяться с этим сервером.

В некоторых версиях pppd при установленном параметре login пароль, записанный в /etc/ppp/pap-secrets, сначала считается незашифрованным. Поэтому любой, прочтя этот файл, может ввести в строку пароля именно то, что записано в этом файле, и будет аутентифицирован.

Только во вторую очередь предполагается, что пароль там зашифрован. В таких pppd нужно выяснить, как указывать в /etc/ppp/options, что нужно считать пароль, записанный в pap-secrets, зашифрованным.

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

  1. Пользователь дозванивается на модем сервера, где его встречает программа getty (стандартная программа, обслуживающая вход на любой терминал, кроме псевдотерминала). Она его спрашивает login и password, которые пользователь сообщает вручную или с использованием скрипта на своей машине. Затем, уже после входа в систему, для пользователя запускается pppd, указанный в качестве командного процессора для этого пользователя в /etc/passwd.
  2. При запуске системы вместо ttymon на тот последовательный порт, где находится модем, напускается pppd, который ждет входящего звонка. Когда кто-то дозванивается, pppd сам проводит аутентификацию с использованием /etc/ppp/pap-secrets.

Запуск ttymon для определенных терминалов контролируется в /etc/inittab в системах System V, включая Solaris. Старые версии Solaris и большинство других операционных систем используют программу getty вместо ttymon, в новых версиях Solaris программа getty может быть вызвана так же, поскольку файл getty здесь представляет собой символическую ссылку на ttymon.

Файл /etc/ppp/pap-secrets может содержать как строки для аутентификации удаленных клиентов, так и строки, которые соответсвуют аутентификации самого pppd на сервере удаленного провайдера. Имя пользователя, которое pppd будет использовать для того, чтобы идентифицировать самого себя, задается параметром user.

< Лекция 3 || Лекция 4: 1234 || Лекция 5 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.