четверг, 26 марта 2009 г.

AP (Master) mode на RT61 + hostapd. Полноценная точка доступа из обычной PCI WiFi сетевушки.

Наконец я приступаю к сборки точки доступа. На сайте http://hostap.epitest.fi/hostapd/ заявлено, какие драйвера для каких чипов будут работать в режиме AP.
В частности будут работать все чипы Atheros с дровами madwifi, ну и я теперь знаю точно, заведётся мой Dlink DWL-510 с чипом RaLink RT2561/RT61. Инструкция от разработчиков драйвера вот http://rt2x00.serialmonkey.com/wiki/index.php/AP-mode_Howto
Со стандартными дровами старый hostapd заводиться не захотел:)
На будущем сервере стоял свежеустановленный Debian lenny 5.0 с ядром 2.6.26, но пакет дров compat-wireless-old.tar.bz2 собираться не захотел. Поэтому я решил поставить ядро 2.6.28 из sid и попробывать собрать compat-wireless для ядер больше 2.6.27 compat-wireless-2.6.tar.bz2
Но здесь появилась маленькая проблема для сборки compat-wireless нужны linux-hearers, которые в свою очередь зависят от пакета linux-kbuild-2.6.28, которого ещё нет.
На форуме linuxforum.ru некто KernelPanic разместил само собранный пакет
linux-kbuild-2.6.28
которым я и воспользовался.

А теперь всё по порядку

1)Установка ядра 2.6.28
Добавим в фаил /etc/apt/source.list строчки
deb http://mirror.yandex.ru/debian/ sid main contrib
deb-src http://mirror.yandex.ru/debian/ sid main contrib


#aptitude update
#aptitude install linux-image-2.6.26-1-686 linux-source-2.6.28


3)Установка linux-headers-2.6.28-1-686
Качаем исходники linux-kbuild-2.6.28
Распаковываем любым архиватором в папку, в ней распаковываем пакет с исходным текстом командой
# dpkg-source -x linux-kbuild-2.6_2.6.28-0.1.dsc

Вызываем следущую команду, чтобы собрать бинарный пакет:
#cd linux-kbuild-2.6-2.6.28
#aptitude install fakeroot
#dpkg-buildpackage -rfakeroot -us -uc

Ставим
#dpkg -i linux-kbuild-2.6.28_2.6.28-0.1_i386.deb

Теперь linux-headers-2.6.28-1-686 встанит нормально
#aptitude install linux-headers-2.6.28-1-686

4)Компилим compat-wireless-2.6.tar.bz2
Заходим в net/mac80211/cfg.c
Меняем строчки:
case NL80211_IFTYPE_AP:
case NL80211_IFTYPE_AP_VLAN:
case NL80211_IFTYPE_WDS:
return true;

На
case NL80211_IFTYPE_AP:
return true;
case NL80211_IFTYPE_AP_VLAN:
return true;
case NL80211_IFTYPE_WDS:
return true;


Потом
make && make install


5)Компилим и ставим libnl
./configure --prefix=/usr/lib
make && make install
6) Долгожданный hostapd
#cd hostap/hostapd
#cp defconfig .config

Коментируем строчку
CONFIG_DRIVER_HOSTAP=y


Раскомментируем следующие строчки:
CONFIG_DRIVER_NL80211=y
LIBNL=/usr/src/libnl
CFLAGS += -I$(LIBNL)/include
LIBS += -L$(LIBNL)/lib


Вместо /usr/src/libnl нужно указать путь, куда вы распаковали исходники libnl
Компилим и ставим:)
make && make install
Компилиться может достаточно долго, так что придёться подождать:)
7)Усё, теперь приведу мои настройки /etc/hostapd/hostapd.conf

##### hostapd configuration file ##############################################

interface=wlan0

driver=nl80211

logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2

debug=0

dump_file=/tmp/hostapd.dump

ctrl_interface=/var/run/hostapd

ctrl_interface_group=0

ssid=MyWiFi

hw_mode=g

channel=11

beacon_int=100

dtim_period=2

max_num_sta=255

rts_threshold=2347

fragm_threshold=2346

macaddr_acl=1

accept_mac_file=/etc/hostapd/accept

wpa=2

wpa_passphrase=pass12345

wpa_pairwise=CCMP


8)Решил прикрутить фильтрацию по mac адресу, для этого и указано macaddr_acl=1 и accept_mac_file=/etc/hostapd/accept
Содержание файла /etc/hostapd/accept
00:00:00:00:00:01
00:15:fa:45:6b:cc
00:05:a3:e4:f2:19

Разрешённые маки.

9)Прикрутил dhcp

Для этого указываем в настройках интерфейса ip из того-же диапазона что и будем раздавать
/etc/network/interfaves
auto wlan0
iface wlan0 inet static
address 192.168.225.1
netmask 255.255.255.248
network 192.168.225.0
gateway 192.168.225.1

/etc/default/dhcp3-server указываем
INTERFACES="wlan0"

/etc/dhcp3/dhcpd.conf
ddns-update-style none;

option domain-name "225.example.org";
option domain-name-servers 85.118.224.121;

default-lease-time 600;
max-lease-time 864001;

log-facility local7;

subnet 192.168.225.0 netmask 255.255.255.248 {
range 192.168.225.2 192.168.225.5;
option domain-name-servers 85.118.224.121;
option domain-name "225.example.org";
option routers 192.168.225.1;
option broadcast-address 192.168.225.7;
}


10) Теперь точно усё, делаем скрипт и добовляем его в автозагрузку любым способом
ap.sh
/etc/init.d/dhcp3-server start
/usr/local/bin/hostapd /etc/hostapd/hostapd.conf &

четверг, 12 марта 2009 г.

Вторая волна:)

Данной писаниной начинаю вторую волну написания «статей» посвящённых Debian GNU/Linux и железу, а также их совместной «жизнидеятельности».

Ввиду наличия у меня двух ноутбуков и одного «кабеля с интернетом», появилось желание купить точку доступа. Задолго до этого возникла потребность хоть както увеличить обьём жёсткого диска на моём Asus X51RL, который составляет 120Гб. Недолго думая я решил сам собрать «точку доступа» а по совместительству фаилсервер, принтсервер и ещё многое другое на базе какого либо старого компа и OC Debian.

Самое главное требование, которое должен был выполнять данный «девайс» это бесшумность. На форуме наткнулся на материнскую плату «HP Trigem Cognac» которая была в комплекте с пасивным охлаждением проца (на фото именно она).



Учитывая размеры материнки из неё может получиться точка доступа чуть больше заводской. Укомлектовав материнку процом Intel Celeron 533 MHz(SL3FZ), двумя планками SDRAM по 256 и 128 mb, dvd-юком и винтом Maxtor на 40 Гб (в будующем планирую купить больший, как раз для функции фаилсервера) я приступил к установке ОС.

Debian был выбран потому, что только с ним я и работал, а во вторых ввиду наличия зеркала debian.nsu.ru, которое для меня являеться локальным:)

Так как недавно lenny стал стабильным, ставил с CD #1 с GNOME.

Поразило то, что теперь даже не надо помнить команды различных видов установщика, есть специальная менюшка.

Никаких параметров установщику я и не хотел задавать, и не пришлось, поэтому ставил в дефолтном псевдографическом режиме. Винт разбил на 500мб свопа, а остальное отдал под корень. В выборе устанавливаемых компонентов оставил базовую систему и окружение рабочего стола (Gnome). После первой перезагрузки добавил в /etc/network/interfaces строчку:
hwaddress ether XX:XX:XX:XX:XX:XX //где XX:XX мак на который зарегистрирован интернет

которая меняет мак на этот, и соответсвенно даёт комну возможность входить в сеть.
Добавил репозиторий и обновил всю систему.
#aptitude update
#aptitude dist-upgrade

Вот и готов «фундамент» для будующей точки доступа:)