Linux-cценарии упрощают беспроводное управлениеИсточник: IBM developerWorks Россия Алан Бэйкер
Установка поставщика беспроводных интернет-услуг (wireless Internet Service provider -WISP) для вашего офиса или для соседних организаций не должна быть обременительным и дорогим процессом. Если вы создаете вашу сеть из доступного оборудования и используете Linux™, для облегчения управления сетью вы можете использовать мощные возможности командных сценариев. В данной статье приводятся необходимые советы и сценарии. Создать маленькую беспроводную сеть с использованием готового беспроводного маршрутизатора просто. Но создание возможности беспроводного соединения для офиса, многоквартирного здания или микрорайона на промышленном уровне является совершенно другой задачей. Завершение такой работы означает запуск беспроводного поставщика интернет-услуг (WISP). Для запуска WISP вы должны дать ответ на следующие вопросы:
В этой статье вы научитесь использовать Linux-сценарии для ответов на все эти вопросы. Но предварительно вы должны установить сервер. Аппаратное обеспечение беспроводного сервера Я стал беспроводным поставщиком интернет-услуг потому, что мои соседи не имели DSL или кабельного интернета. Один WISP предоставлял (дорогостоящее) соединение с ближайшей возвышенности, и я решил подписаться на его службу и разделить пропускную способность и стоимость с моими соседями. Беспроводная плата точки доступа генерирует очень слабый сигнал, поэтому для минимизации потерь сигнала я вынужден был укоротить антенный кабель настолько, насколько это было возможным. Мне также понадобилась наружная антенна с большим коэффициентом направленного действия, для того чтобы я мог охватить как можно большее число клиентов. Эти два требования вынудили меня смонтировать сервер снаружи на антенной мачте. Моим экспериментальным сервером была готовая беспроводная точка доступа (wireless access point - WAP), смонтированная в водонепроницаемом корпусе Pelican. Этот сервер не был очень надежным, поэтому я часто карабкался на крышу для какой-нибудь наладки. Эти путешествия по лестнице вверх и вниз убедили меня в том, что необходимо усовершенствовать точку доступа, заменив оборудование чем-то более надежным. Мое оборудование следующего поколения должно было быть:
Я купил недорогую плату (в данном случае net4521 фирмы Soekris Engineering), которая соответствовала всем этим требованиям и могла использовать компактную флэш-карту вместо жесткого диска. Эта плата работала также в широком диапазоне температур без охлаждающего вентилятора. Набор микросхем Intersil/Conexant Prism2/3 имеет хорошую совместимость с Linux.
PebbleLinux - это дистрибутив, созданный специально для встраиваемых беспроводных приложений. Свое имя Pebble (галька) он получил из-за своего маленького размера и простоты. Он имеет отличные функциональные возможности:
PebbleLinux включает много пакетов, поддерживающих работу в беспроводных сетях, и легко добавить еще больше пакетов через программу Debian apt-get. Вы, возможно, захотите распределить нагрузку, разместив некоторые пакеты (например ntop) на другом сервере. Но эти пакеты могут отлично работать на самой плате с десятью клиентами без использования их процессора или памяти. Вот несколько рекомендуемых мною пакетов с открытыми исходными кодами:
Необходимые сценарии для управления беспроводной сетью в Linux Пакеты предоставляют вам основные инструменты для установки и запуска беспроводной сети в Linux. После этого поддержание непрерывной работоспособности сети может представлять собой либо головную боль, либо удовольствие при использовании вспомогательных средств для:
Для этих задач я написал несколько сценариев, выступающих в качестве инструментальных средств; они все доступны из командной строки. Linux имеет хорошую реализацию безопасного командного сервера (secure shell server - SSH), поэтому я могу управлять сервером с любого места, где есть доступ в интернет. Дистрибутивы Linux обычно содержат некоторые простые, но мощные средства управления. Я не могу обойтись без следующих:
Мой WAP имеет расположенную в памяти файловую систему с атрибутом "чтение/запись" для рабочих файлов и ведения журналов регистрации. Это дает возможность файловой системе на компактной флэш-карте оставаться в режиме "только для чтения". Я написал несколько сценариев для управления этим ограниченным пространством. bigfiles: Сценарий bigfiles ищет файлы, которые возможно надо уменьшить в размерах для предотвращения выхода за пределы свободного пространства. Я суммирую использование пространства на трех уровнях:
Отображаемая информация выглядит примерно так: Листинг 1. Информация, отображаемая при выполнении сценария bigfiles
checkspace: Сценарий checkspace выполняется каждый час и следит за минимальным объемом свободного пространства в файловой системе "чтение/запись". Если используется более 80 процентов файловой системы checkspace запускает logrotate, который сжимает и уменьшает размеры файлов журналов регистрации. aptgetupgrade: Сценарий aptgetupgrade проверяет новые пакеты или выполняет необходимые обновления. Это простая надстройка над командой Debian apt-get, которая может запускаться в /etc/cron.daily для того, чтобы помочь вам иметь последние версии программ и заплаток для исправления ошибок в них. У клиентов вашей беспроводной сети будут возникать вопросы. Рассмотренные в этом разделе средства управления в Linux смогут помочь вам ответить на них. Вот несколько примеров ответов на распространенные вопросы пользователей:
Для обеспечения простоты и безопасности вы, возможно, захотите попробовать подход, который применил я для своих пользователей. Я знаю MAC-адрес каждого клиента, и только этим MAC-адресам разрешено подсоединяться к беспроводной сети. Я даю каждому клиенту фиксированный IP-адрес и только известные IP-адреса разрешены для маршрутизации. Хранить всю информацию о клиентах в одном месте намного легче, чем синхронизировать и дублировать конфигурационные файлы. Я назначаю каждому клиентскому IP-адресу мнемоническое имя хоста в /etc/hosts и помещаю MAC-адрес клиента в эту же строку. Например: Листинг 2. Назначение имени хоста и MAC-адреса
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
Управление пропускной способностью WISP присущи все сложности проводной сети вместе с проблемами, специфичными для беспроводного оборудования. Следующие сценарии помогают проверить стабильность и скорость предоставляемой вами пропускной способности. errors: Сценарий errors выбирает собранную статистику из /proc/net/ и выдает снимок общего процента ошибок транзакций для точки доступа. Он также записывает выходную информацию в табличный файл для последующего анализа. Выводимая информация выглядит примерно так: Листинг 4. Информация, отображаемая при выполнении сценария errors
Этот пример показывает, что количество успешно переданных с первой попытки пакетов было в 176 раз больше количества пакетов, которые должны были быть переданы. Он также показывает превышение числа ошибок приема, над количеством успешно принятых пакетов. Эти значения являются только индикаторами, поэтому не паникуйте при их не согласованности. Интенсивность использования сети очень влияет на эти коэффициенты. При отсутствии работы не будет успешных пакетов, поэтому коэффициент будет равен нулю. При небольшом использовании коэффициент будет низким. При большой нагрузке коэффициент значительно вырастет. pingscan: Сценарий pingscan измеряет задержку, указывающую на то, имеет ли клиент высокую и стабильную пропускную способность. Он посылает клиенту четыре коротких пакета (56 байт каждый) и четыре длинных пакета (1,024 байт каждый), затем возвращает следующую информацию в одной строке:
Сценарий также записывает результаты в табличный файл для последующего анализа. Информация, показанная в листинге 5, означает, что хост работает хорошо. Ответы пришли для всех четырех коротких и всех четырех длинных пакетов. Ответов с задержкой более секунды не было. Листинг 5. Информация, отображаемая при выполнении сценария pingscan
Следующий пример отображаемой информации был получен на следующий день. Тот же самый хост потерял некоторые ответы - был получен только один ответ из четырех для коротких пакетов и три из четырех для длинных. Листинг 6. Пример информация, отображаемой при выполнении сценария pingscan
Если остальные клиенты работают нормально (4,4,0,0), значит этот хост имеет проблемы. Если несколько клиентов теряют ответы, значит проблема существует в точке доступа.
Полезно знать, какой трафик проходит через вашу AP. Один из способов проконтролировать его - вести журнал трафика маршрутизатора при помощи System Network Management Protocol (SNMP), а затем посчитать записи журнала. Различные маршрутизаторы регистрируют транзакции по-разному, поэтому ваше решение будет наверняка другим. Я сконфигурировал мой маршрутизатор на пересылку SNMP-записей на IP-адрес хоста-сборщика (в моем случае это AP). На AP я запускаю демоны snmpd и snmptrapd для сбора записей в файл. Эти записи выглядят примерно так:
Исходящая запись - это Web-запрос от 192.168.168.192 к 208.222.234.90. Входящая запись - FTP-запрос от 211.107.232.1 к 192.168.168.196. В этом файле вы можете найти много полезной информации - например, попытки проникновения вируса, который вы, возможно, пожелаете заблокировать. Сценарий countlog подсчитывает входящие и исходящие записи двумя различными способами. Он может посчитать количество запросов за последние n минут, где n - указываемое вами число: Листинг 8. Сценарий countlog считает запросы за n минут
Он также может посчитать количество запросов за последние 24 часа: Листинг 9. Сценарий countlog считает запросы за 24 часа
Несколько командных сценариев значительно облегчают управление WISP. Еще несколько завершающих советов:
При помощи рассмотренных здесь инструментальных средств и приемов вы должны теперь быть готовы для установки и запуска. |