Linux-cценарии упрощают беспроводное управление

Алан Бэйкер

Установка поставщика беспроводных интернет-услуг (wireless Internet Service provider -WISP) для вашего офиса или для соседних организаций не должна быть обременительным и дорогим процессом. Если вы создаете вашу сеть из доступного оборудования и используете Linux™, для облегчения управления сетью вы можете использовать мощные возможности командных сценариев. В данной статье приводятся необходимые советы и сценарии.

Создать маленькую беспроводную сеть с использованием готового беспроводного маршрутизатора просто. Но создание возможности беспроводного соединения для офиса, многоквартирного здания или микрорайона на промышленном уровне является совершенно другой задачей. Завершение такой работы означает запуск беспроводного поставщика интернет-услуг (WISP). Для запуска WISP вы должны дать ответ на следующие вопросы:

  • Каково качество моего подключения к интернет в настоящий момент?
  • Какие клиенты подключены к сети в настоящий момент и каково качество их подключения?
  • Имеется ли адекватная пропускная способность для пиковых нагрузок?
  • Какие клиенты подключены недавно, и какова их активность?
  • Какие клиенты имеют надежную связь, а какие нет?
  • Имеют ли клиенты большое количество ошибок и повторов передачи информации?
  • Доступны ли новые версии установленного программного обеспечения?
  • Занимают ли большие файлы слишком много места?
  • Как я могу упростить администрирование клиентов?

В этой статье вы научитесь использовать Linux-сценарии для ответов на все эти вопросы. Но предварительно вы должны установить сервер.

Аппаратное обеспечение беспроводного сервера

Я стал беспроводным поставщиком интернет-услуг потому, что мои соседи не имели DSL или кабельного интернета. Один WISP предоставлял (дорогостоящее) соединение с ближайшей возвышенности, и я решил подписаться на его службу и разделить пропускную способность и стоимость с моими соседями. Беспроводная плата точки доступа генерирует очень слабый сигнал, поэтому для минимизации потерь сигнала я вынужден был укоротить антенный кабель настолько, насколько это было возможным. Мне также понадобилась наружная антенна с большим коэффициентом направленного действия, для того чтобы я мог охватить как можно большее число клиентов. Эти два требования вынудили меня смонтировать сервер снаружи на антенной мачте.  Моим экспериментальным сервером была готовая беспроводная точка доступа (wireless access point - WAP), смонтированная в водонепроницаемом корпусе Pelican. Этот сервер не был очень надежным, поэтому я часто карабкался на крышу для какой-нибудь наладки. Эти путешествия по лестнице вверх и вниз убедили меня в том, что необходимо усовершенствовать точку доступа, заменив оборудование чем-то более надежным. Мое оборудование следующего поколения должно было быть:

  • очень надежным
  • поддерживать десять клиентов плюс некоторые инструментальные средства управления системой
  • использовать стандартную беспроводную плату
  • поддерживать Ethernet
  • поддерживать Linux

Я купил недорогую плату (в данном случае net4521 фирмы Soekris Engineering), которая соответствовала всем этим требованиям и могла использовать компактную флэш-карту вместо жесткого диска. Эта плата работала также в широком диапазоне температур без охлаждающего вентилятора.

Набор микросхем Intersil/Conexant Prism2/3 имеет хорошую совместимость с Linux.

 

Программное обеспечение Linux

PebbleLinux - это дистрибутив, созданный специально для встраиваемых беспроводных приложений. Свое имя Pebble (галька) он получил из-за своего маленького размера и простоты. Он имеет отличные функциональные возможности:

  • Настроенное для использования в беспроводных системах ядро - нет необходимости в перекомпиляции ядра.
  • Размер - он достаточно мал для размещения в компактной флэш-карте, поэтому не нужен жесткий диск.
  • Он монтирует свои файловые системы с атрибутом только для чтения, поэтому нет опасности их повреждения при исчезновении питания.
  • Основан на дистрибутиве Debian Linux, поэтому доступны Debian-пакеты.
  • Имеет хорошую поддержку.

PebbleLinux включает много пакетов, поддерживающих работу в беспроводных сетях, и легко добавить еще больше пакетов через программу Debian apt-get. Вы, возможно, захотите распределить нагрузку, разместив некоторые пакеты (например ntop) на другом сервере. Но эти пакеты могут отлично работать на самой плате с десятью клиентами без использования их процессора или памяти. Вот несколько рекомендуемых мною пакетов с открытыми исходными кодами:

  • Wonder Shaper для равномерного распределения пропускной способности между клиентами.
  • Wireless Tools (WT) для взаимодействия с беспроводным драйвером.
  • Host AP - программное обеспечение беспроводной точки доступа для набора микросхем Prism2/3.
  • pcmcia-csдля управления беспроводной платой.
  • logrotate для сжатия или удаления журналов регистрации.
  • Net-SNMP для сбора выходной информации с маршрутизатора.
  • ntop для графического отображения статистики.
  • iptables в качестве брандмауэра.

 

Необходимые сценарии для управления беспроводной сетью в Linux

Пакеты предоставляют вам основные инструменты для установки и запуска беспроводной сети в Linux. После этого поддержание непрерывной работоспособности сети может представлять собой либо головную боль, либо удовольствие при использовании вспомогательных средств для:

  • управления сервером
  • управления клиентами
  • управления пропускной способностью

Для этих задач я написал несколько сценариев, выступающих в качестве инструментальных средств; они все доступны из командной строки. Linux имеет хорошую реализацию безопасного командного сервера (secure shell server - SSH), поэтому я могу управлять сервером с любого места, где есть доступ в интернет.

Управление сервером

Дистрибутивы Linux обычно содержат некоторые простые, но мощные средства управления. Я не могу обойтись без следующих:

  • df отображает информацию об использовании каждой файловой системы. Эта программа особенно полезна при ограниченном свободном пространстве файловых систем.
  • top отображает снимок работы вашего сервера - информацию о времени работы сервера, использовании CPU (процессора), использовании памяти и информацию о процессах.
  • pstree отображает снимок ваших серверных процессов. Их легко понять, поскольку процессы отображаются в иерархическом виде.

Мой WAP имеет расположенную в памяти файловую систему с атрибутом "чтение/запись" для рабочих файлов и ведения журналов регистрации. Это дает возможность файловой системе на компактной флэш-карте оставаться в режиме "только для чтения". Я написал несколько сценариев для управления этим ограниченным пространством.

bigfiles: Сценарий bigfiles ищет файлы, которые возможно надо уменьшить в размерах для предотвращения выхода за пределы свободного пространства. Я суммирую использование пространства на трех уровнях:

  1. Файловая система: Каков общий объем файловой системы и сколько осталось свободного места?
  2. Каталог: Сколько пространства используется каждым каталогом используемой файловой системы?
  3. Файл: Какие файлы файловой системы имеют размер больше 90 KB?

Отображаемая информация выглядит примерно так:

Листинг 1. Информация, отображаемая при выполнении сценария bigfiles


------------------------------------------------------------------------------ 
Filesystem Size Used Avail Use% Mounted on 
tmpfs 10M 952k 9.0M 10% /rw 

Finding big files in /rw filesystem... 
916k ./var 
4.0k ./usr 
0 ./tmp 
8.0k ./root 
24k ./etc 
0 ./dev 
952k . 
952k total 

./var/log/router 
./var/log/messages 
------------------------------------------------------------------------------ 

checkspace: Сценарий checkspace выполняется каждый час и следит за минимальным объемом свободного пространства в файловой системе "чтение/запись". Если используется более 80 процентов файловой системы checkspace запускает logrotate, который сжимает и уменьшает размеры файлов журналов регистрации.

aptgetupgrade: Сценарий aptgetupgrade проверяет новые пакеты или выполняет необходимые обновления. Это простая надстройка над командой Debian apt-get, которая может запускаться в /etc/cron.daily для того, чтобы помочь вам иметь последние версии программ и заплаток для исправления ошибок в них.

Управление клиентами

У клиентов вашей беспроводной сети будут возникать вопросы. Рассмотренные в этом разделе средства управления в Linux смогут помочь вам ответить на них. Вот несколько примеров ответов на распространенные вопросы пользователей:

  • Вопрос: "Сегодня интернет не работает? Почему мой браузер не может найти определенный сайт?"
  • Решение: Во-первых, проверьте вашу беспроводную сеть при помощи сценария scanap; он отобразит качество сигнала для всех подсоединенных клиентов, включая того, который заявил о проблеме. Затем проверьте доступность IP при помощи сценария pingal; он отобразит задержки реакции шлюза вашего ISP, DNS и всех ваших клиентов, включая проблемного. Если эти два сценария показывают, что с сетью все в порядке, попробуйте уже этот сайт.
  • Вопрос: "Вчера я загружал с сайта на скорости X. Почему я сейчас могу загрузить только на скорости Y?"
  • Решение: Проверить загрузку вашей сети можно при помощи сценария countlog. Он отобразит дневную историю загрузки по клиенту и по часам.

Для обеспечения простоты и безопасности вы, возможно, захотите попробовать подход, который применил я для своих пользователей. Я знаю MAC-адрес каждого клиента, и только этим MAC-адресам разрешено подсоединяться к беспроводной сети. Я даю каждому клиенту фиксированный IP-адрес и только известные IP-адреса разрешены для маршрутизации. Хранить всю информацию о клиентах в одном месте намного легче, чем синхронизировать и дублировать конфигурационные файлы. Я назначаю каждому клиентскому IP-адресу мнемоническое имя хоста в /etc/hosts и помещаю MAC-адрес клиента в эту же строку. Например:

Листинг 2. Назначение имени хоста и MAC-адреса

 
192.168.168.198 wet11two 00:0C:41:BE:BF:B0 

networkingrestart: Сценарий networkingrestart запускает сеть и авторизует всех клиентов. Он читает многоцелевой файл /etc/hosts, затем добавляет MAC-адреса в список управления доступом к беспроводной сети.

gethost: Если вы передадите IP-адрес, имя хоста или MAC-адрес в сценарий gethost, он отобразит все три значения из файла /etc/hosts. Сценарий gethost используется в сценариях countlog, pingscan и scanap, а также удобен для работы в командной строке.

scanap: Сценарий scanap отображает IP-адрес, MAC-адрес, имя и качество сигнала каждого клиента, связанного с AP. Он переформатирует информацию, выдаваемую программой The Wireless Tools iwlist и добавляет MAC-адрес, т.е. состояние каждого клиента сведено в одну строку. Отображаемая информация выглядит примерно так:

Листинг 3. Информация, отображаемая при выполнении сценария scanap


-------------------------------------------------------------- 
MAC Address...... Quality Signal Noise. IP Address....... Name 
00:0C:41:BE:BF:B0 238/92 -29 -35 192.168.168.198 wet11two 
------------------------------------------------ 

Управление пропускной способностью

WISP присущи все сложности проводной сети вместе с проблемами, специфичными для беспроводного оборудования. Следующие сценарии помогают проверить стабильность и скорость предоставляемой вами пропускной способности.

errors: Сценарий errors выбирает собранную статистику из /proc/net/ и выдает снимок общего процента ошибок транзакций для точки доступа. Он также записывает выходную информацию в табличный файл для последующего анализа. Выводимая информация выглядит примерно так:

Листинг 4. Информация, отображаемая при выполнении сценария errors


------------------------------------------------------ 
13 22:20 TX Octets: 294080 TX errors: 1665 TX error ratio: 176 
13 22:20 RX Octets: 893539 RX errors: 3225913 RX error ratio: 0   
------------------------------------------------------ 

Этот пример показывает, что количество успешно переданных с первой попытки пакетов было в 176 раз больше количества пакетов, которые должны были быть переданы. Он также показывает превышение числа ошибок приема, над количеством успешно принятых пакетов. Эти значения являются только индикаторами, поэтому не паникуйте при их не согласованности. Интенсивность использования сети очень влияет на эти коэффициенты. При отсутствии работы не будет успешных пакетов, поэтому коэффициент будет равен нулю. При небольшом использовании коэффициент будет низким. При большой нагрузке коэффициент значительно вырастет.

pingscan: Сценарий pingscan измеряет задержку, указывающую на то, имеет ли клиент высокую и стабильную пропускную способность. Он посылает клиенту четыре коротких пакета (56 байт каждый) и четыре длинных пакета (1,024 байт каждый), затем возвращает следующую информацию в одной строке:

  • Имя хоста или IP-адрес клиента
  • Метку времени
  • Количество ответов, полученных для коротких сигналов
  • Количество ответов, полученных для длинных сигналов
  • Количество ответов, полученных для коротких сигналов и длящихся больше одной секунды
  • Количество ответов, полученных для длинных сигналов и длящихся больше одной секунды

Сценарий также записывает результаты в табличный файл для последующего анализа. Информация, показанная в листинге 5, означает, что хост работает хорошо. Ответы пришли для всех четырех коротких и всех четырех длинных пакетов. Ответов с задержкой более секунды не было.

Листинг 5. Информация, отображаемая при выполнении сценария pingscan


------------------------------------------------------- 
wet11two,2005-03-18,23:59,4,4,0,0 
------------------------------------------------------- 

Следующий пример отображаемой информации был получен на следующий день. Тот же самый хост потерял некоторые ответы - был получен только один ответ из четырех для коротких пакетов и три из четырех для длинных.

Листинг 6. Пример информация, отображаемой при выполнении сценария pingscan


------------------------------------------------------- 
wet11two,2005-03-19,23:59,1,3,0,0 
------------------------------------------------------- 

Если остальные клиенты работают нормально (4,4,0,0), значит этот хост имеет проблемы. Если несколько клиентов теряют ответы, значит проблема существует в точке доступа.

 

Мониторинг трафика

Полезно знать, какой трафик проходит через вашу AP. Один из способов проконтролировать его - вести журнал трафика маршрутизатора при помощи System Network Management Protocol (SNMP), а затем посчитать записи журнала. Различные маршрутизаторы регистрируют транзакции по-разному, поэтому ваше решение будет наверняка другим.

Я сконфигурировал мой маршрутизатор на пересылку SNMP-записей на IP-адрес хоста-сборщика (в моем случае это AP). На AP я запускаю демоны snmpd и snmptrapd для сбора записей в файл. Эти записи выглядят примерно так:

Листинг 7. Набор записей


"@out 192.168.168.192 2983 208.222.234.90 80." 
"@in 211.107.232.1 51550 192.168.168.196 21." 

Исходящая запись - это Web-запрос от 192.168.168.192 к 208.222.234.90. Входящая запись - FTP-запрос от 211.107.232.1 к 192.168.168.196.

В этом файле вы можете найти много полезной информации - например, попытки проникновения вируса, который вы, возможно, пожелаете заблокировать. Сценарий countlog подсчитывает входящие и исходящие записи двумя различными способами. Он может посчитать количество запросов за последние n минут, где n - указываемое вами число:

Листинг 8. Сценарий countlog считает запросы за n минут


Checking 5 minutes before 23:59... 
101 requests in 5 minutes 
An average of 20 requests per minute 

Он также может посчитать количество запросов за последние 24 часа:

Листинг 9. Сценарий countlog считает запросы за 24 часа


Start... Total Outbound and Inbound Today 
00:00... out: 192 in: 63 out/min: 3 
. 
. 
. 
19:00... out: 243 in: 96 out/min: 4 
20:00... out: 308 in: 66 out/min: 5 
21:00... out: 151 in: 103 out/min: 2 
22:00... out: 206 in: 94 out/min: 3 
23:00... out: 160 in: 70 out/min: 2 
Totals.. 2095 1759 

IP Address (Host Name) Total Outbound Today 
192.168.168.8 (cheltenham) 659 
192.168.168.191 (t30lan) 156 
192.168.168.192 (downstairs) 1044 
192.168.168.196 (opteron) 236 

Total all IP's.... 2095

 

В заключение

Несколько командных сценариев значительно облегчают управление WISP. Еще несколько завершающих советов:

  • Не используйте на стороне клиентов беспроводные USB-мосты. Они имеют незначительную мощность и не могут быть проверены при отключенном компьютере пользователя.
  • Не пытайтесь запустить большую беспроводную сеть через дешевый домашний маршрутизатор. Результат будет непредсказуемым.

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


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=2176