Copyright © 2001 Alexander Neundorf
LISa предназначена для показа «сетевого окружения», работает только поверх протокола TCP/IP и не зависит от SMB и других служб.
Это руководство описывает Информационный сервер LAN (LISa) и Ограниченный информационный сервер (resLISa)
Содержание
Список примеров
LISa предназначена для показа «сетевого окружения», работает только поверх протокола TCP/IP и не зависит от SMB и других служб.
Она полностью независима от KDE/Qt™.
Список работающих серверов предоставляется через порт 7741 протокола TCP.
LISa поддерживает два способа поиска компьютеров в сети:
Вы указываете LISa диапазон адресов IP, тогда LISa посылает эхо-запрос ICMP по всем указанным адресам IP, и ожидает ответов.
Вы можете указать LISa выполнить команду nmblookup с опцией "*"
. Это утилита командной строки, поставляемая вместе с пакетом Samba. nmblookup "*"
посылает широковещательные запросы в доступные сети, и все компьютеры, на которых работает сервер SMB, отвечают на этот запрос.
В конфигурационном файле вы указываете диапазон IP-адресов, которые сервис LISa должен проверять на работоспособность.
В самом простом случае это может быть адрес/маска вашей сети, тогда LISa будет сканировать каждый возможный адрес в вашей сети, чтобы проверить его работоспособность.
Сервера проверяются с использованием эхо-запросов ICMP. Чтобы иметь возможность посылать и принимать эхо-запросы ICMP программа должны открыть так называемый «raw-сокет». Для этого необходимы привилегии пользователя root
. Этот сокет открывается при запуске программы, после успешного открытия сокета привилегии root будут немедленно понижены (смотрите файлы main.cpp
и strictmain.cpp
).
Если вы настроили LISa на использование команды nmblookup, будет выполнен popen("nmblookup \"*\"")
и проанализированы его результаты.
Так как запросы ICMP и широковещательные запросы генерируют некоторый сетевой трафик, существует возможность завести более одного работающего сервера а сети и они будут сотрудничать друг с другом. Перед отправкой запросов (либо использованием команды nmblookup), посылается широковещательный запрос на порт 7741.
Если кто-то ответил на этот широковещательный запрос, список работающих серверов будет получен через порт 7741 протокола TCP с этого сервера и эхо-запросы (либо команда nmblookup) выполнятся не будет.
Если никто не ответил, сервер, который послал широковещательный запрос, начинает посылать эхо-запросы (либо выполнить программу nmblookup) и откроет сокет, который принимает широковещательные запросы. Если сервер получил ответ на свой широковещательный запрос, он не открывает сокет. Так что обычно только один сервер открывает сокет и только он фактически проверяет доступность других серверов (либо выполняет nmblookup).
Другими словами, сервера ленивы, они действуют по принципу: «Я сделаю что-то только если никто этого ещё не сделал».
Есть и другая возможность уменьшения сетевого трафика.
Если вы настроили интервал обновления LISa каждые 10 минут, то вы не обращаетесь к серверу слишком часто. Если никто не обращался к серверу за предыдущий период обновления, сервер обновит (самостоятельно или от того, что кто-то выполнит обновление вручную) и удвоит свой интервал обновления. i.e. следующее обновление произойдёт через 20 минут.
Такое происходит 4 раза, так что если никто долго не обращался к серверу с периодом обновления 10 минут, его интервал обновления увеличится до 160 минут (три часа). Теперь, если кто-либо обращается к серверу, он получит устаревший список (обновлённый 160 минут назад). При запросе к серверу он восстановит значение интервала в первоначальные i.e. 10 минут и немедленно начнёт обновление, если последнее обновление было раньше 10 минут назад. Это означает, что вы получаете устаревший список и можете попробовать через несколько секунд получить последние данные.
Это приведёт к повышению частоты обновления для серверов, которые не пингуют (либо используют nmblookup) другие сервера, поскольку к ним обычно обращается только один пользователь. И меньший эффект будет достигнут на серверах, которые выполняют пинги (либо используют nmblookup), так как к ним обращаются все другие.
При этом варианте возможна ситуация, когда в сети работают множество серверов и в ней сохраняется небольшой трафик. Для пользователя не важно, какие сервера работают в сети (i.e. сервер имён, файловый сервер либо другой), в которой используется LISa. Он всегда может запустить LISa локально и LISa определит, что он один, совершенно прозрачно для пользователя.
Первый клиент LISa входил в ioslave для KDE 2, так что пользователь может ввести lan://localhost/
либо lan:/
для использования результатов LISa на своём компьютере.
Если есть компьютер, работающий постоянно, и пользователь знает, что на нём выполняется LISa, он может воспользоваться им явно (через ioslave lan://the_server_name/
).
Если вы не хотите, чтобы ваш сервис LISa принимал участие в широковещательных рассылках, но всегда выполнял пингование непосредственно, укажите ему опцией командной строки --port
либо -p
использовать другой порт. Это не рекомендуется!
Если вы пошлёте сервису LISa сигнал SIGHUP, он перезагрузит свои параметры из файла конфигурации. Если вы пошлёте сервису LISa сигнал SIGUSR1, он выведет некоторую информацию о статусе на стандартный вывод.
Данные, предоставляемые через сокет, имею простой формат:<десятичный адрес ip в сетевом порядке следования байтов>< один пробел 0x20><полное имя компьютера><завершающий '\0'><новая строка '\n'<
и последняя строка0 succeeded<'\n'>
Например,
17302538 some_host.whatever.de
18285834 linux.whatever.de
17827082 nameserver.whatever.de
0 succeeded
Это должно обеспечить лёгкость разбора.
Если в вашей сети существуют строгие правила по защите информации, некоторые люди могут посчитать пинги потенциальной атакой. Если столкнётесь с этим, используйте ограниченную версию сервиса, resLISa.
Если в вашей сети очень строгие правила безопасности, вы не хотите иметь открытый порт, или по другой причине вы можете использовать resLISa.
При использовании resLISa вы не можете проверять сети целиком и диапазоны адресов, вы можете указать в файле конфигурации до 64 компьютеров с их именами. Они будут проверены. Вы всё ещё можете использовать nmblookup.
resLISa предоставляет информацию только через unix-сокет, i.e. не через сеть. Имя сокета будет /tmp/resLisa-ВашеИмяПользователя
, так что resLISa может безопасно выполняться на компьютере с большим количеством пользователей.
Установка прав root
на resLISa не должно вызвать проблем безопасности, так как они будут сразу понижены после запуска (смотрите файл strictmain.cpp
). Эти права необходимы только при создания низкоуровневого сокета для отправки эхо-запросов ICMP.
Сервис также не будет посылать и принимать широковещательные пакеты. Первый клиент этого сервиса - ioslave для KDE 2 (например, введите rlan:/
в Konqueror).
Теперь пример файла конфигурации:
PingAddresses = 192.168.100.0/255.255.255.0;192.168.100.10-192.168.199.19;192.168.200.1;192-192.168-168.100-199.0-9; PingNames = bb_mail; AllowedAddresses = 192.168.0.0/255.255.0.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 # использовать nmblookup FirstWait = 30 # 30 сотых секунды SecondWait = -1 # только одна попытка #SecondWait = 60 # пробовать дважды, и ожидать во второй раз 0.6 секунды UpdatePeriod = 300 # период обновления, секунд DeliverUnnamedHosts = 0 # не показывать компьютеры без имени MaxPingsAtOnce = 256 # посылать до 256 эхо-запросов ICMP за один раз
Это вероятно самый важный параметр.
Здесь вы указываете, какие адреса будут пинговаться. Вы можете указать несколько диапазонов, разделив их точкой с запятой.
Есть четыре возможных способа указания адресов:
192.168.100.0/255.255.255.0, i.e. адрес IP и назначенная маска сети.
Это не должно быть адресом сети и маской сети вашей машины. Например, если ваш адрес 10.0.0.0/255.0.0.0, вы могли бы указать 10.1.2.0/255.255.255.0, если вы интересуетесь этими адресами. Комбинация адрес IP и сетевая маска должны быть разделены косой чертой «/» и это не должен быть реальный адрес. Он может быть адресом компьютера в сети, i.e. 10.12.34.67/255.0.0.0 тоже самое что и 10.0.0.0/255.0.0.0 .
Например: 192.168.100.10-192.168.199.19
Начальный адрес IP и конечный адрес IP.
Адреса должны быть разделены «-».
В этом примере мы указываем 199-100+1=100, 100*256=25.600, 25.600+(19-10+1)=25.590 адресов
Адрес IP, представленный четырьмя десятичными числами, и вы можете указать диапазон для каждого из них: 192-192.169-171.100-199.0-9
В этом примере будут проверены все адреса IP с первым номером 192, вторым в диапазоне от 168 до 168, третьим от 100 до 199, и последним от 0 до 9. Это -- 1*1*100*10=1.000 адресов.
Такое указание диапазона используется в очень редких случаях. Здесь мы указали диапазоны для каждого из четырёх чисел, всегда разделяемые символом «-».
Адреса IP либо имена компьютеров, которыми вы наиболее часто интересуетесь.
Оставить этот параметр пустым тоже будет корректным.
PingNames
Здесь вы можете дополнительно указать компьютеры для проверки по их именам. Имена должны быть разделены точкой с запятой.
Оставить этот параметр пустым тоже будет корректным.
AllowedAddresses
Это очень важный параметр. LISa будет пинговать адреса, принимать запросы и отвечать на широковещательные пакеты с адресов, которые указаны в этой строке. Вы можете добавить до 32 адресов/масок сетей либо одиночные адреса. Разделяйте их ; и не помещайте пробелы между адресами!
Например, 192.168.0.0/255.255.0.0;192.169.0.0
Корректными являются и полная сеть и отдельный адрес. Всегда указывайте как можно более точнее, обычно ваш адрес и сетевая маска наиболее хороший вариант.
BroadcastNetwork
Этот параметр содержит только один адрес/маску сети. По нему будут посылаться широковещательные запросы. Обычно это должно быть вашим адресом/маской, например, 192.168.0.0/255.255.0.0
SearchUsingNmblookup
Здесь вы можете указать 0
или 1
. При использовании 1
LISa выполнит программу nmblookup "*"
и проанализирует её вывод. Это создаёт меньше трафика, чем при использовании пингов, но вы получите только список компьютеров, на который выполняется сервис SMB (компьютеры с Windows® или с запущенным сервисом samba).
Если вы установите этот параметр и укажите адреса IP для пингов, сперва будет выполнена команда nmblookup, затем пинги. При этом будут пропингованы адреса, которые не проверила программа nmblookup. Это немного уменьшает сетевой трафик.
FirstWait
Когда LISa выполняет пинг, i.e. когда посылаются эхо-запросы ICMP, отправляется сразу пакет запросов, и ответы будут ожидаться в течении указанного количества сотых секунды. Обычно значение от 5 до 50 должны быть оптимальными, максимальное - 99 (0.99 секунды, очень длительный интервал). Попробуйте сделать это значение как можно более маленьким, при котором все компьютеры в сети определяются.
SecondWait
После того, как LISa пошлёт эхо-запрос в первый раз, может случиться, что некоторые компьютеры не были найдены. Улучшить результаты LISa может, пропинговав их второй раз. Будут проверены только те компьютеры, которые не ответили при первом опросе. Если первый опрос даёт хорошие результаты, вы можете отключить повторную проверку установкой значения SecondWait в -1
.
Хорошая идея -- сделать это значение немного большим, чем для FirstWait
. Компьютеры, которые не были найдены в первый раз, вероятно, используют медленные линии связи или расположены дальше, и им необходимо больше времени для ответа. Обычно значения от 5 до 50 должны быть оптимальными, либо установите -1 для отмены повторного сканирования. Максимальное значение - 99 (0.99 секунды, очень продолжительный интервал).
UpdatePeriod
Интервал, через который LISa будет производить обновление. По истечению этого времени LISa снова пошлёт пинги, использует nmblookup либо запросить список у другого сервера LISa, который фактически выполняет пинги.
Допустимое значение в диапазоне от 20 до 1800 секунд (полчаса). Если ваша сеть велика, не устанавливайте небольшой интервал (чтобы сохранить невысокую загрузку сети). Значения от 300 до 900 секунд (5 и 15 минут) -- наиболее хороший вариант.
Имейте ввиду, что период обновления удваивается до 4 раз, если никто не обращается к серверу, пока не достигнет 16-кратного значения. Он будет сброшен до указанного здесь значения, если кто-то обратиться к серверу.
DeliverUnnamedHosts
Если был получен ответ на эхо-запрос с адреса IP, для которого LISa не смог определить имя, он будет послан через порт, если вы установите этот параметр в 1.
Я действительно не уверен, является ли это полезной возможностью, но в вашей сети возможно существуют устройства без назначенного имени и они не должны быть показаны. Если вы хотите оставить их в секрете, установите значение этого параметра в 0 ;-) Если не уверены, также используйте 0.
При отправке пингов (эхо-запросов) LISa посылает несколько пакетов как один и ожидает ответов. По умолчанию это 256 пингов за раз, обычно вам не нужно изменять это значение. Если вы установите его значение слишком большим, внутренний буфер ответов на эхо-запросы может отказаться слишком мал. Если вы сделаете его небольшим, обновление будет происходить медленней.
Пример 4.1. FIXME
Вы член небольшой сети с сетевой маской в 24 бита, i.e. до 256 компьютеров:
PingAddresses = 192.168.100.0/255.255.255.0 AllowedAddresses = 192.168.100.0/255.255.255.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 0 # не использовать nmblookup FirstWait = 20 # 20 сотых секунды SecondWait = 30 # 30 сотых секунды при второй попытке UpdatePeriod = 300 # период обновления 300 секунд DeliverUnnamedHosts = 0 # не публиковать компьютеры без имени
Пример 4.2. Файл конфигурации для компьютера, на котором выполняется только SMB
Вы интересуетесь только компьютерами с работающим сервисом SMB и в вашей сети нет маршрутизации:
AllowedAddresses = 192.168.100.0/255.255.255.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 # использовать nmblookup UpdatePeriod = 300 # период обновления 300 секунд DeliverUnnamedHosts = 0 # не публиковать компьютеры без имени
Пример 4.3. Файл конфигурации, использующий nmblookup и пинги
Та же самая сеть, но в ней используются пинги и nmblookup.
PingAddresses = 192.168.100.0/255.255.255.0 PingNames = bb_mail AllowedAddresses = 192.168.0.0/255.255.0.0 BroadcastNetwork = 192.168.100.0/255.255.255.0 SearchUsingNmblookup = 1 # сначала использовать nmblookup FirstWait = 30 # 30 сотых секунды SecondWait = -1 # только одна попытка #SecondWait = 60 # пробовать дважды, и второй раз ожидать 0.6 секунды UpdatePeriod = 300 # период обновления 300 секунд DeliverUnnamedHosts = 0 # не публиковать компьютеры без имени MaxPingsAtOnce = 256 # посылать до 256 эхо-запросов ICMP за один раз
Пример 4.4. Файл конфигурации для resLISa
И теперь файл конфигурации для resLISa. В resLISa PingAddresses и BroadcastNetwork не используется.
PingNames = bb_mail;some_host;some_other_host AllowedAddresses = 192.168.0.0/255.255.0.0 SearchUsingNmblookup = 1 # использовать nmblookup FirstWait = 30 # 30 сотых секунды SecondWait = -1 # только одна попыткаn#SecondWait = 60 # пробовать дважды, и второй раз ожидать 0.6 секунды UpdatePeriod = 300 # период обновления 300 секунд DeliverUnnamedHosts = 1 # публиковать компьютеры без имени MaxPingsAtOnce = 256 # посылать до 256 эхо-запросов ICMP за один раз
Поддерживаются следующие опции командной строки:
-v
, --version
Показать номер версии
-h
, --help
Показать описание всех опций командной строки
-u
, --unix
Сначала искать настройки в $
, затем в HOME
/.lisarc/etc/lisarc
. Это поведение по умолчанию.
-k
, --kde1
Сначала искать настройки в $
, затем HOME
/.kde/share/config/lisarc$
.KDEDIR
/share/config/lisarc
-K
, --kde2
Искать файл настроек lisarc
в каждом каталоге, возвращённом программой kde-config
--path
config
-c
, --config=
ФАЙЛ
Использовать ФАЙЛ
, а не другой файл конфигурации.
-p
, --port
НОМЕР_ПОРТА
Запустить сервер на указанном порту. Если вы это используете, сервис LISa не сможет сотрудничать с другими серверами LISa в сети. Эта опция для resLISa недоступна.
Если вы пошлёте LISa или resLISa сигнал Hangup, они заново загрузят свои файлы конфигурации (killall
).-HUP lisa
Если вы посылаете LISa или resLISa сигнал User1, они выводят на стандартный вывод терминала некоторую информацию о состоянии (killall
). Вы ничего не увидите, если закрыли консоль, с который была запущена LISa/resLISa.-USR1 lisa
Авторское право на LISa и resLISa 2000, 2001, Alexander Neundorf
Перевод на русский: Олег Баталов(batalov AT twiga.kz)
Alexander Neundorf (neundorf AT kde.org)
Этот документ распространяется на условиях GNU Free Documentation License.
Программа распространяется на условиях лицензии GNU General Public License.
Содержание
Для LISa и resLISa необходима библиотека libstdc++ (используется только string-class), они не требуют ни установленного Qt™ ни KDE.
Чтобы собрать и установить LISa, введите следующие команды в каталоге дистрибутива LISa:
%
./configure
%
make
%
make install
Поскольку LISa использует autoconf и automake, у вас не должно возникнуть никаких проблем. Если же у вас возникли ошибки, сообщите о них в списки рассылки KDE.
И resLISa и LISa открывает так называемый «низкоуровневый (raw) сокет» для отправки и приёма эхо-запросов ICMP. Для этого необходимы привилегии пользователя root
.
LISa запускает сервис на порту 7741 протокола TCP и должна запускаться с правами пользователя root
при старте системы. Как достичь этого, зависит от вашей ОС.
Сервис resLISa предназначен для выполнения под правами любого пользователя и не требует активного использования сети. У сервиса должен быть установлен флаг setuid root
.
Если вы используете ioslave rlan
в KDE 2, сервис resLISa будет запущен автоматически.
LISa использует файл настроек lisarc
, resLISa - reslisarc
. Если вы хотите настроить их с помощью KControl, вы должны использовать опцию командной строки -K
.
Более подробную информацию о расположении файлов конфигурации читайте в главе Глава 5, Опции командной строки и дополнительные параметры.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team