LISa"> resLISa"> ]> Руководство &lisa; Alexander Neundorf
neundorf@kde.org
Олег Баталов
batalov@twiga.kz
Перевод на русский
2001 Alexander Neundorf 2001-07-07 0.01.00 &lisa; предназначена для показа сетевого окружения, работает только поверх протокола TCP/IP и не зависит от SMB и других служб. Это руководство описывает Информационный сервер LAN (&lisa;) и Ограниченный информационный сервер (&reslisa;) KDE kdenetwork LAN network network neighborhood
Введение &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 минут, то вы не обращаетесь к серверу слишком часто. Если никто не обращался к серверу за предыдущий период обновления, сервер обновит (самостоятельно или от того, что кто-то выполнит обновление вручную) и удвоит свой интервал обновления. &ie; следующее обновление произойдёт через 20 минут. Такое происходит 4 раза, так что если никто долго не обращался к серверу с периодом обновления 10 минут, его интервал обновления увеличится до 160 минут (три часа). Теперь, если кто-либо обращается к серверу, он получит устаревший список (обновлённый 160 минут назад). При запросе к серверу он восстановит значение интервала в первоначальные &ie; 10 минут и немедленно начнёт обновление, если последнее обновление было раньше 10 минут назад. Это означает, что вы получаете устаревший список и можете попробовать через несколько секунд получить последние данные. Это приведёт к повышению частоты обновления для серверов, которые не пингуют (либо используют nmblookup) другие сервера, поскольку к ним обычно обращается только один пользователь. И меньший эффект будет достигнут на серверах, которые выполняют пинги (либо используют nmblookup), так как к ним обращаются все другие. При этом варианте возможна ситуация, когда в сети работают множество серверов и в ней сохраняется небольшой трафик. Для пользователя не важно, какие сервера работают в сети (&ie; сервер имён, файловый сервер либо другой), в которой используется &lisa;. Он всегда может запустить &lisa; локально и &lisa; определит, что он один, совершенно прозрачно для пользователя. Первый клиент &lisa; входил в ioslave для &kde; 2, так что пользователь может ввести lan://localhost/ либо lan:/ для использования результатов &lisa; на своём компьютере. Если есть компьютер, работающий постоянно, и пользователь знает, что на нём выполняется &lisa;, он может воспользоваться им явно (через ioslave lan://the_server_name/). Если вы не хотите, чтобы ваш сервис &lisa; принимал участие в широковещательных рассылках, но всегда выполнял пингование непосредственно, укажите ему опцией командной строки либо использовать другой порт. Это не рекомендуется! Если вы пошлёте сервису &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;. При использовании &reslisa; вы не можете проверять сети целиком и диапазоны адресов, вы можете указать в файле конфигурации до 64 компьютеров с их именами. Они будут проверены. Вы всё ещё можете использовать nmblookup. &reslisa; предоставляет информацию только через unix-сокет, &ie; не через сеть. Имя сокета будет /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 за один раз <option >PingAddresses</option > Это вероятно самый важный параметр. Здесь вы указываете, какие адреса будут пинговаться. Вы можете указать несколько диапазонов, разделив их точкой с запятой. Есть четыре возможных способа указания адресов: адрес сети/маска сети 192.168.100.0/255.255.255.0, &ie; адрес IP и назначенная маска сети. Это не должно быть адресом сети и маской сети вашей машины. Например, если ваш адрес 10.0.0.0/255.0.0.0, вы могли бы указать 10.1.2.0/255.255.255.0, если вы интересуетесь этими адресами. Комбинация адрес IP и сетевая маска должны быть разделены косой чертой / и это не должен быть реальный адрес. Он может быть адресом компьютера в сети, &ie; 10.12.34.67/255.0.0.0 тоже самое что и 10.0.0.0/255.0.0.0 . диапазон адресов IP Например: 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, представленный диапазоном в каждом четырёх десятичных номеров Адрес IP, представленный четырьмя десятичными числами, и вы можете указать диапазон для каждого из них: 192-192.169-171.100-199.0-9 В этом примере будут проверены все адреса IP с первым номером 192, вторым в диапазоне от 168 до 168, третьим от 100 до 199, и последним от 0 до 9. Это -- 1*1*100*10=1.000 адресов. Такое указание диапазона используется в очень редких случаях. Здесь мы указали диапазоны для каждого из четырёх чисел, всегда разделяемые символом -. Одиночные адреса IP или имена компьютеров Адреса IP либо имена компьютеров, которыми вы наиболее часто интересуетесь. Оставить этот параметр пустым тоже будет корректным. <option >PingNames</option > Здесь вы можете дополнительно указать компьютеры для проверки по их именам. Имена должны быть разделены точкой с запятой. Оставить этот параметр пустым тоже будет корректным. <option >AllowedAddresses</option > Это очень важный параметр. &lisa; будет пинговать адреса, принимать запросы и отвечать на широковещательные пакеты с адресов, которые указаны в этой строке. Вы можете добавить до 32 адресов/масок сетей либо одиночные адреса. Разделяйте их ; и не помещайте пробелы между адресами! Например, 192.168.0.0/255.255.0.0;192.169.0.0 Корректными являются и полная сеть и отдельный адрес. Всегда указывайте как можно более точнее, обычно ваш адрес и сетевая маска наиболее хороший вариант. <option >BroadcastNetwork</option > Этот параметр содержит только один адрес/маску сети. По нему будут посылаться широковещательные запросы. Обычно это должно быть вашим адресом/маской, например, 192.168.0.0/255.255.0.0 <option >SearchUsingNmblookup</option > Здесь вы можете указать 0 или 1. При использовании 1 &lisa; выполнит программу nmblookup и проанализирует её вывод. Это создаёт меньше трафика, чем при использовании пингов, но вы получите только список компьютеров, на который выполняется сервис SMB (компьютеры с &Windows; или с запущенным сервисом samba). Если вы установите этот параметр и укажите адреса IP для пингов, сперва будет выполнена команда nmblookup, затем пинги. При этом будут пропингованы адреса, которые не проверила программа nmblookup. Это немного уменьшает сетевой трафик. <option >FirstWait</option > Когда &lisa; выполняет пинг, &ie; когда посылаются эхо-запросы ICMP, отправляется сразу пакет запросов, и ответы будут ожидаться в течении указанного количества сотых секунды. Обычно значение от 5 до 50 должны быть оптимальными, максимальное - 99 (0.99 секунды, очень длительный интервал). Попробуйте сделать это значение как можно более маленьким, при котором все компьютеры в сети определяются. <option >SecondWait</option > После того, как &lisa; пошлёт эхо-запрос в первый раз, может случиться, что некоторые компьютеры не были найдены. Улучшить результаты &lisa; может, пропинговав их второй раз. Будут проверены только те компьютеры, которые не ответили при первом опросе. Если первый опрос даёт хорошие результаты, вы можете отключить повторную проверку установкой значения SecondWait в -1. Хорошая идея -- сделать это значение немного большим, чем для . Компьютеры, которые не были найдены в первый раз, вероятно, используют медленные линии связи или расположены дальше, и им необходимо больше времени для ответа. Обычно значения от 5 до 50 должны быть оптимальными, либо установите -1 для отмены повторного сканирования. Максимальное значение - 99 (0.99 секунды, очень продолжительный интервал). <option >UpdatePeriod</option > Интервал, через который &lisa; будет производить обновление. По истечению этого времени &lisa; снова пошлёт пинги, использует nmblookup либо запросить список у другого сервера &lisa;, который фактически выполняет пинги. Допустимое значение в диапазоне от 20 до 1800 секунд (полчаса). Если ваша сеть велика, не устанавливайте небольшой интервал (чтобы сохранить невысокую загрузку сети). Значения от 300 до 900 секунд (5 и 15 минут) -- наиболее хороший вариант. Имейте ввиду, что период обновления удваивается до 4 раз, если никто не обращается к серверу, пока не достигнет 16-кратного значения. Он будет сброшен до указанного здесь значения, если кто-то обратиться к серверу. <option >DeliverUnnamedHosts</option > Если был получен ответ на эхо-запрос с адреса IP, для которого &lisa; не смог определить имя, он будет послан через порт, если вы установите этот параметр в 1. Я действительно не уверен, является ли это полезной возможностью, но в вашей сети возможно существуют устройства без назначенного имени и они не должны быть показаны. Если вы хотите оставить их в секрете, установите значение этого параметра в 0 ;-) Если не уверены, также используйте 0. MaxPingsAtOnce При отправке пингов (эхо-запросов) &lisa; посылает несколько пакетов как один и ожидает ответов. По умолчанию это 256 пингов за раз, обычно вам не нужно изменять это значение. Если вы установите его значение слишком большим, внутренний буфер ответов на эхо-запросы может отказаться слишком мал. Если вы сделаете его небольшим, обновление будет происходить медленней. Ещё три примера файлов FIXME Вы член небольшой сети с сетевой маской в 24 бита, &ie; до 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 # не публиковать компьютеры без имени Файл конфигурации для компьютера, на котором выполняется только <acronym >SMB</acronym > Вы интересуетесь только компьютерами с работающим сервисом 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 # не публиковать компьютеры без имени Файл конфигурации, использующий <command >nmblookup</command > и пинги Та же самая сеть, но в ней используются пинги и 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 за один раз Файл конфигурации для &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 за один раз Опции командной строки и дополнительные параметры Поддерживаются следующие опции командной строки: , Показать номер версии , Показать описание всех опций командной строки , Сначала искать настройки в $HOME/.lisarc, затем в /etc/lisarc. Это поведение по умолчанию. , Сначала искать настройки в $HOME/.kde/share/config/lisarc, затем $KDEDIR/share/config/lisarc. , Искать файл настроек lisarc в каждом каталоге, возвращённом программой kde-config config , ФАЙЛ Использовать ФАЙЛ, а не другой файл конфигурации. , НОМЕР_ПОРТА Запустить сервер на указанном порту. Если вы это используете, сервис &lisa; не сможет сотрудничать с другими серверами &lisa; в сети. Эта опция для &reslisa; недоступна. Если вы пошлёте &lisa; или &reslisa; сигнал Hangup, они заново загрузят свои файлы конфигурации (killall ). Если вы посылаете &lisa; или &reslisa; сигнал User1, они выводят на стандартный вывод терминала некоторую информацию о состоянии (killall ). Вы ничего не увидите, если закрыли консоль, с который была запущена &lisa;/&reslisa;. Авторы и лицензия Авторское право на &lisa; и &reslisa; 2000, 2001, Alexander Neundorf Перевод на русский: Олег Баталовbatalov@twiga.kz Alexander Neundorf neundorf@kde.org &underFDL; &underGPL; Установка Для &lisa; и &reslisa; необходима библиотека libstdc++ (используется только string-class), они не требуют ни установленного &Qt; ни &kde;. &install.compile.documentation; Другие зависимости И &reslisa; и &lisa; открывает так называемый низкоуровневый (raw) сокет для отправки и приёма эхо-запросов ICMP. Для этого необходимы привилегии пользователя root. &lisa; запускает сервис на порту 7741 протокола TCP и должна запускаться с правами пользователя root при старте системы. Как достичь этого, зависит от вашей &OS;. Сервис &reslisa; предназначен для выполнения под правами любого пользователя и не требует активного использования сети. У сервиса должен быть установлен флаг setuid root. Если вы используете ioslave rlan в &kde; 2, сервис &reslisa; будет запущен автоматически. &lisa; использует файл настроек lisarc, &reslisa; - reslisarc. Если вы хотите настроить их с помощью &kcontrol;, вы должны использовать опцию командной строки . Более подробную информацию о расположении файлов конфигурации читайте в главе .