От точки А до точки Б... или что такое РРР 2
От точки А до точки Б... или что такое РРР
Продолжение. Начало в N№ 35
Настройка DNS
В то время, как люди присваивают имена разным предметам, компьютеры предпочитают обращаться друг к другу при помощи цифровых кодов. В сети TCP/IP (а именно такой сетью является сеть Интернет) мы присваиваем каждому компьютеру свое имя, и каждый компьютер живет в конкретном домене. Для примера возьмем компьютер с названием red, который находится в домене rainbow.by. Его адрес в виде, привычном для людей, выглядит так: red.rainbow.by.
Но другие компьютеры, подключенные к сети Интернет, используют при обращении к нему его IP адрес.
Над переводом символьных имен компьютеров в их цифровые адреса и обратно работает служба доменных имен - DNS.
Как это происходит:
- ваш компьютер хочет узнать сетевой адрес другого компьютера. Приложение, которому необходима эта информация, запрашивает ее у ресолвера операционной системы Linux;
- сначала проверяется локальный файл /etc/hosts. Процедура поиска зависит от настроек файла /etc/host.conf;
- если ответ найден в этом файле, этот ответ возвращается приложению, давшему запрос;
- если DNS сервер известен, запрос направляется к нему;
- если DNS сервер содержит ответ на запрос в своей базе данных, он возвращает этот ответ, если нет, то он запрашивает следующий DNS сервер.
При установке РРР-соединения Ваш компьютер хочет знать, где он может найти информацию о сетевых адресах других компьютеров по их символьному имени. Первый способ - это занести IP адреса всех компьютеров, с которыми Вы хотите обмениваться информацией в файл /etc/hosts (этот способ может успешно работать внутри небольшой локальной сети, но он неприменим, если Ваш компьютер подключен к сети Интернет). Второй способ - использовать только цифровые адреса компьютеров, что опять применимо только внутри локальной сети. Лучший способ - настроить Linux таким образом, чтобы он сам автоматически искал нужную информацию об адресах других компьютеров. Все, что нужно сделать, - это занести адрес ближайшего DNS сервера в файл /etc/resolv.conf.
Системный администратор Вашего РРР сервера должен сообщить Вам два адреса DNS серверов (одного достаточно, но с двумя Вы будете работать эффективнее). Как упоминалось ранее, Linux не может автоматически определить адрес DNS сервера, как это делает Windows95. Потому потребуйте (только вежливо!) эту информацию у своего провайдера!
Ваш файл /etc/resolv.conf выглядит примерно так:
domain your.isp.domain.name
nameserver 10.25.0.1
nameserver 10.25.1.2
Отредактируйте этот файл (если необходимо, то создайте) и занесите туда адреса, полученные от своего провайдера. Атрибуты и свойства этого файла (ls -l /etc/resolv.conf):
-rw-r-r- 1 root root 98 Aug 23 05:04 /etc/resolv.conf
Также следует проверить, правильно ли настроен файл /etc/hosts.conf
order hosts,bind
multi on
С этими параметрами поиск сначала будет производиться в файле /etc/hosts, а после этого - на DNSсервере.
РРР и пользовательские привилегии
Так как после своего запуска программа pppd требует изменения настройки сетевых устройств и таблицы маршрутизации кернела, а все эти настройки должны выполняться администратором системы - пользователем root, то права на запуск этой программы должны принадлежать администратору системы:
-rwsr-xr-x 1 root root 95225 Jul 11 00:27 /usr/sbin/pppd
Если атрибуты файла отличаются от этих, то root должен выполнить следующую команду:
chmod u+s /usr/sbin/pppd
Это позволит даже другим пользователям запускать эту программу со всеми необходимыми привилегиями, настраивать сетевые интерфейсы и таблицы маршрутизации кернела. Конечно же, программы, запуск которых разрешен всем пользователям, но при выполнении которых устанавливается режим доступа к системе на уровне системного администратора (root) ставят под угрозу безопасность системы. Но некоторые программы (например pppd) созданы с учетом этой опасности, так что можете быть спокойны, используя pppd в этом режиме.
В зависимости от того, как Вы хотите использовать свой компьютер, особенно если Вы разрешаете ЛЮБОМУ пользователю устанавливать РРР соединение, нужно установить соответствующие атрибуты на общий доступ по чтению и выполнению у файлов-скриптов, которые "включают" и "выключают" РРР. Если же Вы хотите ограничить число пользователей, удостоенных этой чести, можно создать отдельную группу пользователей и назвать ее ррр. Отредактируйте файл /etc/group (сделать это может только root):
- в атрибутах файла pppd задайте его принадлежность пользователю root и группе ppp. Эти атрибуты должны выглядеть так:
-rwsr-x-- 1 root ррр 95225 Jul 11 00:27 /usr/sbin/pppd
- в атрибутах файлов ppp-on и ppp-off задайте их принадлежность пользователю root и группе ppp
- сделайте их доступными для чтения и выполнения группой ррр:
-rwsr-x-- 1 root ррр 587 Mar 14 1995 /usr/sbin/ppp-on
-rwsr-x-- 1 root ррр 631 Mar 14 1995 /usr/sbin/ppp-off
- отключите все остальные права доступа к этим файлам
- добавляйте пользователей, которые будут запускать ррр в соответствующую группу.
Даже когда Вы сделаете это, обычные пользователи из группы ррр не смогут отключить ррр канал (запустить программу ppp-off может только пользователь root). Но любой человек может выключить модем или порвать телефонный провод:(
Альтернативой (и самой лучшей) описанному способу является использование программы sudo. Она позволяет неавторизованным пользователям выполнять операции по запуску и отключению ррр, причем делать это с максимальной надежностью и безопасностью.
Настройка файлов для РРР
Теперь пришло время войти в систему как root для того, чтобы создать необходимые каталоги и отредактировать некоторые файлы для настройки РРР. РРР использует несколько файлов для установки сетевого соединения. В зависимости от версии РРР (2.1.2 или 2.2) набор этих файлов различен. Для РРР 2.1.2:
/usr/sbin/pppd # программа РРР
/usr/sbin/ppp-on # скрипт установки соединения
/usr/sbin/ppp-off # скрипт обрыва соединения
/etc/ppp/options # файл настроек РРР
/etc/ppp/options.ttyXX # файл настроек каждого порта
Для версии РРР 2.2:
/usr/sbin/pppd # программа РРР
/etc/ppp/scripts/ppp-on # скрипт установки соединения
/etc/ppp/scripts/ppp-on-dialer # первая часть этого скрипта
/etc/ppp/scripts /ppp-off # скрипт обрыва соединения
/etc/ppp/options # файл настроек РРР
/etc/ppp/options.ttyXX # файл настроек каждого порта
Пользователи Red Hat Linux должны помнить, что Red Hat Linux размещает файлы скриптов в каталоге /usr/doc/ppp-2.2.0f-2/scripts.
В вашем каталоге /etc должен находиться каталог ррр:
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
Если его не существует, создайте его с соответствующими атрибутами и правами доступа. В этом каталоге находится файл шаблонов настроек ррр - options.tpl. Он содержит пояснения ко всем настройкам всех необходимых параметров ррр. Знакомство с содержимым этого файла, как и с сопутствующей документацией (man pppd) по РРР будет очень полезным. Вы можете использовать этот файл как хранилище всех параметров РРР, или создать свой собственный файл /etc/ppp/options, не содержащий подробных комментариев, короткий и удобный в обращении.
Если у Вас несколько последовательных портов с модемами (как обычно для РРР серверов), создайте файл /etc/ppp/options с настройками, общими для всех последовательных портов и набор отдельных файлов для каждого порта с его индивидуальными настройками. Этим файлам настроек последовательных портов присваиваются имена: /etc/ppp/options.ttyx1, /etc/ppp/options.ttyx2 и так далее... (символ "х" заменяет букву в названии последовательного порта). При использовании одного канала для связи вполне достаточно файла /etc/ppp/options. Или все нужные параметры программе pppd можно передавать в виде аргументов в строке ее запуска.
Если Вы планируете устанавливать соединение с несколькими РРР серверами, можно сохранить настройки для каждого сервера в файле /etc/ppp/options.site, а затем указать в командной строке нужный файл при запуске программы pppd.
Какие же параметры нужно установить для работы РРР? Это зависит от многих причин. Приведем здесь основные, которые будут работать с большинством серверов:
# /etc/ppp/options
#
# не порождать фоновые процессы
-detach
#
# использование сигналов модема
modem
# резервирование последовательного порта
lock
# использовать аппаратный контроль за потоком данных
crtscts
# добавить новый маршрут в таблицы маршрутизации
defaultroute
# отключение обработки <Esc> - последовательностей
asyncmap 0
# максимальный размер передаваемого пакета данных
mtu 552
# минимальный размер принимаемого пакета данных
mru 552
#
# ---- конец примера
Если сервер, к которому Вы подключаетесь, требует идентификации пользователей по протоколу РАР или СНАР, следует добавить еще несколько строк в файл /etc/ppp/options:
#
# использовать Ваше пользовательское имя, под которым Вы
# зарегистрированы у своего провайдера в качестве имени
# Вашего компьютера на время соединения
name <Ваше имя> # ЗАПОЛНИТЬ!
#
# Если Вы установили РРР сервер и хотите активировать
# соответствующий протокол идентификации пользователей,
# удалите знак "#" перед соответствующей строкой.
# В случае, если Вы используете РРР как клиент, оставьте
# эти строки в виде комментария.
# +pap
# +chap
#
# Если Вы используете шифрованные пароли из файла
# /etc/ppp/pap-secrets, удалите знак "#" перед следующей
# строкой. Помните, что эта система шифрования отличается
# от аналогичной системы MS RAS в MS Windows NT
# +papcrypt
Если Вы используете РАР (Password Authentication Protocol) или СНАР (Challenge/Handshake Authentication Protocol) на своем РРР сервере, нужно создать еще несколько файлов:
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
Они должны принадлежать пользователю root и группе root, параметры их задайте командой:
chmod *-secrets 740
Прежде всего хочу заметить, что эти протоколы служат для идентификации компьютерных систем, а не пользователей. Я слышу, как Вы спрашиваете: "Что??? Какая разница???". Я отвечу. Как только Ваш компьютер установит РРР-соединение с сервером, все пользователи этого компьютера (а не только Вы!) смогут использовать этот канал связи. Благодаря этому, Вы можете создать большую сеть, объединив друг с другом две малых через РРР канал связи.
Файл /etc/ppp/pap-secrets выглядит примерно так:
# Secrets for authentication using PAP
# client server secret acceptable_local_IP_address
Он содержит четыре поля, разделенных пробелами или символом табуляции, причем последнее поле может оставаться пустым (это зависит от того, как Ваш провайдер выделяет IP адреса - статически или динамически). Предположим, что провайдер снабдил Вас именем fred и паролем flinstone. Вставьте следующую строку в файл /etc/ppp/options{.ttySX}:
name fred
и отредактируйте файл /etc/ppp/pap-secrets:
# Secrets for authentication using PAP
# client server secret acceptable_local_IP_address
fred * flinstone
Теперь Вы присвоили своему компьютеру имя fred (для использования программой pppd - у Вашего компьютера может быть другое локальное имя) и при соединении с ЛЮБЫМ сервером Вы будете использовать пароль flinstone. Если Вы соединяетесь не с одним, а с несколькими РРР серверами, использующими PAP для идентификации, в этот файл можно добавлять новые строки, содержащие имена и пароли для соединения, а также названия серверов (вместо звездочки в приведенном примере)
Протокол CHAP требует обоюдной идентификации - Ваш компьютер проверяет имя и пароль сервера, с которым он соединяется, а сервер, в свою очередь, идентифицирует Вашу машину. Если Ваш компьютер носит имя fred, а удаленный сервер - имя barney, в файле /etc/ppp/options Вашего компьютера нужно добавить строки:
name fred
remotename barney
На компьютере barney - зеркальная картина этого же файла:
name barney
remotename fred
Ваш файл /etc/ppp/chap-secrets:
# Secrets for authentication using CHAP
# client server secret acceptable_local_IP_address
fred barney flinstone
barney fred wilma
И для компьютера barney:
# Secrets for authentication using CHAP
# client server secret acceptable_local_IP_address
barney fred flinstone
fred barney wilma
Это позволит обоим компьютерам благополучно распознать друг друга при установке сетевого соединения.
Игорь Грень, gren@isir.minsk.by
Продолжение следует - титульная страница
Продолжение. Начало в N№ 35
Настройка DNS
В то время, как люди присваивают имена разным предметам, компьютеры предпочитают обращаться друг к другу при помощи цифровых кодов. В сети TCP/IP (а именно такой сетью является сеть Интернет) мы присваиваем каждому компьютеру свое имя, и каждый компьютер живет в конкретном домене. Для примера возьмем компьютер с названием red, который находится в домене rainbow.by. Его адрес в виде, привычном для людей, выглядит так: red.rainbow.by.
Но другие компьютеры, подключенные к сети Интернет, используют при обращении к нему его IP адрес.
Над переводом символьных имен компьютеров в их цифровые адреса и обратно работает служба доменных имен - DNS.
Как это происходит:
- ваш компьютер хочет узнать сетевой адрес другого компьютера. Приложение, которому необходима эта информация, запрашивает ее у ресолвера операционной системы Linux;
- сначала проверяется локальный файл /etc/hosts. Процедура поиска зависит от настроек файла /etc/host.conf;
- если ответ найден в этом файле, этот ответ возвращается приложению, давшему запрос;
- если DNS сервер известен, запрос направляется к нему;
- если DNS сервер содержит ответ на запрос в своей базе данных, он возвращает этот ответ, если нет, то он запрашивает следующий DNS сервер.
При установке РРР-соединения Ваш компьютер хочет знать, где он может найти информацию о сетевых адресах других компьютеров по их символьному имени. Первый способ - это занести IP адреса всех компьютеров, с которыми Вы хотите обмениваться информацией в файл /etc/hosts (этот способ может успешно работать внутри небольшой локальной сети, но он неприменим, если Ваш компьютер подключен к сети Интернет). Второй способ - использовать только цифровые адреса компьютеров, что опять применимо только внутри локальной сети. Лучший способ - настроить Linux таким образом, чтобы он сам автоматически искал нужную информацию об адресах других компьютеров. Все, что нужно сделать, - это занести адрес ближайшего DNS сервера в файл /etc/resolv.conf.
Системный администратор Вашего РРР сервера должен сообщить Вам два адреса DNS серверов (одного достаточно, но с двумя Вы будете работать эффективнее). Как упоминалось ранее, Linux не может автоматически определить адрес DNS сервера, как это делает Windows95. Потому потребуйте (только вежливо!) эту информацию у своего провайдера!
Ваш файл /etc/resolv.conf выглядит примерно так:
domain your.isp.domain.name
nameserver 10.25.0.1
nameserver 10.25.1.2
Отредактируйте этот файл (если необходимо, то создайте) и занесите туда адреса, полученные от своего провайдера. Атрибуты и свойства этого файла (ls -l /etc/resolv.conf):
-rw-r-r- 1 root root 98 Aug 23 05:04 /etc/resolv.conf
Также следует проверить, правильно ли настроен файл /etc/hosts.conf
order hosts,bind
multi on
С этими параметрами поиск сначала будет производиться в файле /etc/hosts, а после этого - на DNSсервере.
РРР и пользовательские привилегии
Так как после своего запуска программа pppd требует изменения настройки сетевых устройств и таблицы маршрутизации кернела, а все эти настройки должны выполняться администратором системы - пользователем root, то права на запуск этой программы должны принадлежать администратору системы:
-rwsr-xr-x 1 root root 95225 Jul 11 00:27 /usr/sbin/pppd
Если атрибуты файла отличаются от этих, то root должен выполнить следующую команду:
chmod u+s /usr/sbin/pppd
Это позволит даже другим пользователям запускать эту программу со всеми необходимыми привилегиями, настраивать сетевые интерфейсы и таблицы маршрутизации кернела. Конечно же, программы, запуск которых разрешен всем пользователям, но при выполнении которых устанавливается режим доступа к системе на уровне системного администратора (root) ставят под угрозу безопасность системы. Но некоторые программы (например pppd) созданы с учетом этой опасности, так что можете быть спокойны, используя pppd в этом режиме.
В зависимости от того, как Вы хотите использовать свой компьютер, особенно если Вы разрешаете ЛЮБОМУ пользователю устанавливать РРР соединение, нужно установить соответствующие атрибуты на общий доступ по чтению и выполнению у файлов-скриптов, которые "включают" и "выключают" РРР. Если же Вы хотите ограничить число пользователей, удостоенных этой чести, можно создать отдельную группу пользователей и назвать ее ррр. Отредактируйте файл /etc/group (сделать это может только root):
- в атрибутах файла pppd задайте его принадлежность пользователю root и группе ppp. Эти атрибуты должны выглядеть так:
-rwsr-x-- 1 root ррр 95225 Jul 11 00:27 /usr/sbin/pppd
- в атрибутах файлов ppp-on и ppp-off задайте их принадлежность пользователю root и группе ppp
- сделайте их доступными для чтения и выполнения группой ррр:
-rwsr-x-- 1 root ррр 587 Mar 14 1995 /usr/sbin/ppp-on
-rwsr-x-- 1 root ррр 631 Mar 14 1995 /usr/sbin/ppp-off
- отключите все остальные права доступа к этим файлам
- добавляйте пользователей, которые будут запускать ррр в соответствующую группу.
Даже когда Вы сделаете это, обычные пользователи из группы ррр не смогут отключить ррр канал (запустить программу ppp-off может только пользователь root). Но любой человек может выключить модем или порвать телефонный провод:(
Альтернативой (и самой лучшей) описанному способу является использование программы sudo. Она позволяет неавторизованным пользователям выполнять операции по запуску и отключению ррр, причем делать это с максимальной надежностью и безопасностью.
Настройка файлов для РРР
Теперь пришло время войти в систему как root для того, чтобы создать необходимые каталоги и отредактировать некоторые файлы для настройки РРР. РРР использует несколько файлов для установки сетевого соединения. В зависимости от версии РРР (2.1.2 или 2.2) набор этих файлов различен. Для РРР 2.1.2:
/usr/sbin/pppd # программа РРР
/usr/sbin/ppp-on # скрипт установки соединения
/usr/sbin/ppp-off # скрипт обрыва соединения
/etc/ppp/options # файл настроек РРР
/etc/ppp/options.ttyXX # файл настроек каждого порта
Для версии РРР 2.2:
/usr/sbin/pppd # программа РРР
/etc/ppp/scripts/ppp-on # скрипт установки соединения
/etc/ppp/scripts/ppp-on-dialer # первая часть этого скрипта
/etc/ppp/scripts /ppp-off # скрипт обрыва соединения
/etc/ppp/options # файл настроек РРР
/etc/ppp/options.ttyXX # файл настроек каждого порта
Пользователи Red Hat Linux должны помнить, что Red Hat Linux размещает файлы скриптов в каталоге /usr/doc/ppp-2.2.0f-2/scripts.
В вашем каталоге /etc должен находиться каталог ррр:
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
Если его не существует, создайте его с соответствующими атрибутами и правами доступа. В этом каталоге находится файл шаблонов настроек ррр - options.tpl. Он содержит пояснения ко всем настройкам всех необходимых параметров ррр. Знакомство с содержимым этого файла, как и с сопутствующей документацией (man pppd) по РРР будет очень полезным. Вы можете использовать этот файл как хранилище всех параметров РРР, или создать свой собственный файл /etc/ppp/options, не содержащий подробных комментариев, короткий и удобный в обращении.
Если у Вас несколько последовательных портов с модемами (как обычно для РРР серверов), создайте файл /etc/ppp/options с настройками, общими для всех последовательных портов и набор отдельных файлов для каждого порта с его индивидуальными настройками. Этим файлам настроек последовательных портов присваиваются имена: /etc/ppp/options.ttyx1, /etc/ppp/options.ttyx2 и так далее... (символ "х" заменяет букву в названии последовательного порта). При использовании одного канала для связи вполне достаточно файла /etc/ppp/options. Или все нужные параметры программе pppd можно передавать в виде аргументов в строке ее запуска.
Если Вы планируете устанавливать соединение с несколькими РРР серверами, можно сохранить настройки для каждого сервера в файле /etc/ppp/options.site, а затем указать в командной строке нужный файл при запуске программы pppd.
Какие же параметры нужно установить для работы РРР? Это зависит от многих причин. Приведем здесь основные, которые будут работать с большинством серверов:
# /etc/ppp/options
#
# не порождать фоновые процессы
-detach
#
# использование сигналов модема
modem
# резервирование последовательного порта
lock
# использовать аппаратный контроль за потоком данных
crtscts
# добавить новый маршрут в таблицы маршрутизации
defaultroute
# отключение обработки <Esc> - последовательностей
asyncmap 0
# максимальный размер передаваемого пакета данных
mtu 552
# минимальный размер принимаемого пакета данных
mru 552
#
# ---- конец примера
Если сервер, к которому Вы подключаетесь, требует идентификации пользователей по протоколу РАР или СНАР, следует добавить еще несколько строк в файл /etc/ppp/options:
#
# использовать Ваше пользовательское имя, под которым Вы
# зарегистрированы у своего провайдера в качестве имени
# Вашего компьютера на время соединения
name <Ваше имя> # ЗАПОЛНИТЬ!
#
# Если Вы установили РРР сервер и хотите активировать
# соответствующий протокол идентификации пользователей,
# удалите знак "#" перед соответствующей строкой.
# В случае, если Вы используете РРР как клиент, оставьте
# эти строки в виде комментария.
# +pap
# +chap
#
# Если Вы используете шифрованные пароли из файла
# /etc/ppp/pap-secrets, удалите знак "#" перед следующей
# строкой. Помните, что эта система шифрования отличается
# от аналогичной системы MS RAS в MS Windows NT
# +papcrypt
Если Вы используете РАР (Password Authentication Protocol) или СНАР (Challenge/Handshake Authentication Protocol) на своем РРР сервере, нужно создать еще несколько файлов:
/etc/ppp/pap-secrets
/etc/ppp/chap-secrets
Они должны принадлежать пользователю root и группе root, параметры их задайте командой:
chmod *-secrets 740
Прежде всего хочу заметить, что эти протоколы служат для идентификации компьютерных систем, а не пользователей. Я слышу, как Вы спрашиваете: "Что??? Какая разница???". Я отвечу. Как только Ваш компьютер установит РРР-соединение с сервером, все пользователи этого компьютера (а не только Вы!) смогут использовать этот канал связи. Благодаря этому, Вы можете создать большую сеть, объединив друг с другом две малых через РРР канал связи.
Файл /etc/ppp/pap-secrets выглядит примерно так:
# Secrets for authentication using PAP
# client server secret acceptable_local_IP_address
Он содержит четыре поля, разделенных пробелами или символом табуляции, причем последнее поле может оставаться пустым (это зависит от того, как Ваш провайдер выделяет IP адреса - статически или динамически). Предположим, что провайдер снабдил Вас именем fred и паролем flinstone. Вставьте следующую строку в файл /etc/ppp/options{.ttySX}:
name fred
и отредактируйте файл /etc/ppp/pap-secrets:
# Secrets for authentication using PAP
# client server secret acceptable_local_IP_address
fred * flinstone
Теперь Вы присвоили своему компьютеру имя fred (для использования программой pppd - у Вашего компьютера может быть другое локальное имя) и при соединении с ЛЮБЫМ сервером Вы будете использовать пароль flinstone. Если Вы соединяетесь не с одним, а с несколькими РРР серверами, использующими PAP для идентификации, в этот файл можно добавлять новые строки, содержащие имена и пароли для соединения, а также названия серверов (вместо звездочки в приведенном примере)
Протокол CHAP требует обоюдной идентификации - Ваш компьютер проверяет имя и пароль сервера, с которым он соединяется, а сервер, в свою очередь, идентифицирует Вашу машину. Если Ваш компьютер носит имя fred, а удаленный сервер - имя barney, в файле /etc/ppp/options Вашего компьютера нужно добавить строки:
name fred
remotename barney
На компьютере barney - зеркальная картина этого же файла:
name barney
remotename fred
Ваш файл /etc/ppp/chap-secrets:
# Secrets for authentication using CHAP
# client server secret acceptable_local_IP_address
fred barney flinstone
barney fred wilma
И для компьютера barney:
# Secrets for authentication using CHAP
# client server secret acceptable_local_IP_address
barney fred flinstone
fred barney wilma
Это позволит обоим компьютерам благополучно распознать друг друга при установке сетевого соединения.
Игорь Грень, gren@isir.minsk.by
Продолжение следует - титульная страница
Компьютерная газета. Статья была опубликована в номере 36 за 1998 год в рубрике soft :: unix