Отправляет email-рассылки с помощью сервиса Sendsay

Perl - подпишись и учись!

  Все выпуски  

Perl - подпишись и учись! :: Wireless Gateway using Perl


Информационный Канал Subscribe.Ru

    Приветствую всех!(А именно 11802 подписчиков)

При подержке Хостинг-провайдера DotHost.ru

Построение Wi-Fi шлюза на Perl

Автор: Alptekin Cakircali
Перевод: Дмитрий Николаев
Май 19, 2005, http://perl.com

Адрес статьи: http://perl.net.ua/articles/perl_wifi.html

Вы настроили все Wi-Fi устройства, но не можете получить всех функций и настроек,которые бы Вы хотели иметь. Вы можете подождать обновления ПО от производителя Вашего оборудования, надеясь, что они включат все вещи, которые бы Вы хотели иметь, в следующий релиз. Но Вы можете получить свой GateWay, построив его сами.. Надеюсь, что идея Вас не испугала. На помощь Вам в этом вопросе "стремится" мировое Open Source сообщество. :)

Эта статья представляет Open Source проект (Alptekin's Wireless Linux Project), который превращает Ваш PC с wireless LAN card (Prism2/2.5/3) в полнофункциональный wireless access gateway, которым Вы можете управлять через web. И та машина со страрым Pentium 120, которая у Вас в подвале, может очень сильно помочь в этом :).

В установке своего Wi-Fi шлюза нет ничего нового. Примерно 3 года назад Jouni Malinen выпустил HostAP. Это был Linux драйвер для Wi-Fi LAN карт с чипсетом Intersil's Prism2/2.5/3. При работе в специальном режиме, именуемом "Managed", компьютер работает как точка доступа. HostAP дэелает свою работу, и, нужно отметить, делает её хорошо, но только при использовании командной строки, и понятно, что это не всем удобно. На сегодняшний же момент мы нуждаемся в гораздо более широком списке возможностей от такого ПО: DHCP, FireWall, DNS, NTP, Web-интерфейс. - таков стандарт сегодня.

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

Для проекта AWLP, ходовой\подвеской является GNU/Linux Slackware, в роли мотора выступает Host AP Driver, коробка передач - это Host AP Utilities, и так далее. Код AWLP, написанный на Perl, это та часть, которая заставляет все эти механизмы работать вместе как полнофункциональный Wi-Fi шлюз. После установки AWLP, Вы будете иметь функциональный, сконфигурированный заранее Wi-Fi шлюз, с которым Вы можете начать свою работу. После этого Вы, конечно, можете начать изменять код Perl, изменять настройки конфигурационных файлов для получения больших возможностей.

Для данной цели нужно иметь выделенную машину, которая будет иметь как минимум 32 МБ оперативной памяти. Поскольку система более чувствительна к оперативной памяти, нежели к процессору, поэтому для этой задачи сойдёт даже старый 486й - но будьте аккуратны, т.к. большинство 486-ых компьютером имеют только ISA слоты. Довольно проблематично сейчас найти ISA 10/100 Mbps Ethernet адаптер, а уж тем более ISA wireless LAN карту. Так что, старый Pentium с как минимум 1GB HDD идеально подойдёт для этой задачи.

В дополнение к самому компьютеру, Вам понадобится Ethernet плата, совместимая с Linux, и PCI или PCMCIA wireless LAN карта, которая основана на чипе Prism2/2.5/3 , также понадобится PCI-PCMCIA конвертер, в зависимости от выбора Вашего железа. Пожалуйста, проверьте страницу AWLP Hardware Compatibility для более точного выбора этих трёх компонент.

Вот три этапа установки AWLP:

1. Установка Slackware
2. Обновление пакетов на Slackware
3. Установка кода и конфигурационных файлов AWLP

Третий этап - самый лёгкий. Первый этап, установка Slackware с tagfiles для пакета AWLP, займёт большинство Вашего времени. Вам нужно иметь диски Slackware под рукой. Для того, чтобы эта статья пролжала быть более-менее читабельной, я отсылаю Вас к соответствующему сайту (список ссылок ниже) и странице с пошаговой инструкцией по установке AWLP. После первого и второго этапов, Вы можете устанавливать AWLP, код и конфигурационные файлы, которые заставят всё работать вместе.

Итак, приступаем к делу: AWLP использует несколько конфигурационных файлов:

* DHCP: /etc/dhcpd.conf
* Apache Web Server: /etc/apache/httpd.conf
* DNS: /etc/named.conf, /var/named/caching-example/localhost.zone, /var/named/caching-example/named.ca, and /var/named/caching-example/named.local
* NTP: /etc/ntp.conf
* Настройки FireWall: /etc/rc.d/rc.firewall

В дополнении к стандартным конфигурационным файлам, существуют специальные, такие как /etc/awlp/oui_filtered.txt. Этот файл содержит отфильтрованную версию oui.txt, представляющий уникальные идентификаторы IEEE. Это позволяет легко найти компанию, которая производит конкретную сетевую или Wi-Fi карту, используя первые 24 бита MAC адреса. Для того, чтобы иметь более глубокое представление обо всех конфигурационных файлах, которые есть в наличие, рекомендую обратиться к файлу installer.sh из пакета AWLP.

AWLP ложится в /var/www/cgi-bin/awlp. Ядром AWLP является index.pl. Он проверяет все ошибки, изменения и применения. Web-Сервер, Apache 1.3.33, запускается от имени пользователя и группы apache. Для того, чтобы изменять необходимые конфигурационные файлы, к этим файлам должны быть применены соответствующие suid и guid привелегии. Это более безопасно, нежели запускать Web-сервер от имени root.

Часть кода, которая взаимодействует с утилитами командной строки HostAP, как, собственно, и со стандартными утилитами и инструментами Linux, это engines1.pl. Этот скрипт содержит в себе большое количество функций и выполняет львиную часть работы. engines2.pl также содержит большое количество подпрограмм, но, в большинстве своём, они выполняют функции сортировки, поиска и преобразования. radar.pl предоставляет функции проверки и мониторинга. Это не является наиболее ключевой вещью для Wi-Fi шлюза, но это очень значимо, т.к. мониторинг того, как Ваше устройство функционирует - это ключевой фактор к успеху применения.

extras.pl предоставляет функции конвертации ASCII в HEX, отображение таблиц выделения IP адресов DHCP, а также несколько других функций. Имя следующего файла говорит само за себя: error_messages.pl содержит в себе все ошибки и их описания. global_configuration.pl сожержит большинство конфигурационных переменных от самых важных до не критичных. Вы должны понимать внутреннюю работу системы для изменения переменных вплоть до $MAIN_TITLE. $MAIN_TITLE и ниже следующие переменные также важны, но для более "косметических" целей, так что Вы можете изменять их без лишних переживаний о том, что Вы испортите работу какой-то очень нужной службы.

Итак, перейдём к простому конфигурированию, ведь теперь Вы знаете, что такое AWLP и что этот пакет умеет делать. Что насчёт этих модификаций и настроек? Теперь наступило время показать добавление какой-нибудь возможности к AWLP. Если говорить о AWLP 1.0, то там возможна конфигурация сервера DHCP - только ручным изменением /etc/dhcpd.conf. Вещь, которую я хочу показать, - это утилита отображения этого файла. Как только Вы будете более опытны с кодом пакета - Вы сможете добавить функции редактирования dhcpd.conf.

Apache запущен от имени пользователя и группы apache. Результат ls -l on /etc/dhcpd.conf :

# ls -l /etc/dhcpd.conf
-rwxrwx--- 1 root apache 618 Mar 5 12:41 /etc/dhcpd.conf*

Скурипт сможет читать и редактировать файл /etc/dhcpd.conf. Откройте файл index.pl. Вверху - две конфигурационных переменных: @MainPageLinksAction и @MainPageLinksName. Эти двое управляют ссылками слева. Для того, чтобы добавить сслыку для DHCP - добавьте слово DHCP в оба массива.

Далее, найдите следующую линию :

elsif ($FORM_Action1 eq "Administration") {

Перед этой линией добавьте следующее, а потом сохраните и закройте файл.

elsif ($FORM_Action1 eq "DHCP") {

my $DHCPConfigFileContent;

if (open(FILE, "/etc/dhcpd.conf")) {
local $/;
$DHCPConfigFileContent = <FILE>;
close(FILE);
}

unless ($DHCPConfigFileContent) {
$DHCPConfigFileContent = "/etc/dhcpd.conf could not be read or it is empty!";
$DHCPLeaseRangeStart = "N/A";
$DHCPLeaseRangeEnd = "N/A";
}

my ($DHCPLeaseRangeStart, $DHCPLeaseRangeEnd);

if ($DHCPConfigFileContent =~ m/Range\s+(\d+\.\d+\.\d+\.\d+)\s+(\d+\.\d+\.\d+\.\d+)/i) {
$DHCPLeaseRangeStart = $1;
$DHCPLeaseRangeEnd = $2;
}

$Right_Plane_Output .=<<HTMLCODE
<TABLE ALIGN=CENTER CELLSPACING=3 CELLPADDING=3 BGCOLOR="#000000">
<TR BGCOLOR="#FFFFFF">
<TD ALIGN=LEFT>
<font face="Helvetica, Arial, Sans-serif, Verdena" size="2">
<TABLE CELLSPACING=0 CELLPADDING=0>
<TR>
<TD>
<font face="Helvetica, Arial, Sans-serif, Verdena" size="2">
<PRE><CODE>
${DHCPConfigFileContent}
</CODE></PRE>

<BR><BR><BR>
<font color="#FF0000">Lease Range:</font>
<B>${DHCPLeaseRangeStart} to ${DHCPLeaseRangeEnd}</B>
<BR><BR><BR>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
HTMLCODE

}

Как только Вы сделали это изменение, - Вы должны увидеть новую секцию в меню: DHCP. Нажав на ссылку DHCP, Вы увидите содержимое /etc/dhcpd.conf значения выделения отрезков адресов, которые выбираются из содержимого файла при помощи обыкновенного RegExp.

В качестве вывода хочу отметить, что Вы получите точку доступа Wi-Fi со шлюзом как только установите AWLP. Инструкции выше показывают, как легко можно добавлять новые возможности к этому программному Wi-Fi шлюзу, который написан на Perl. Для полной реализации всех Ваших нужд - Вам необходимо будет разобраться с index.pl, другими скриптами и файлами конфигурации.

Рекомендуемые ссылки:

 


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.nicksperl
Архив рассылки
Отписаться
Вспомнить пароль

В избранное