Пример настройки Linux-based точки доступа WiFi на дешевой карте

Январь 13, 2010

Еще осенью получил в наследство старый системник на базе Pentium III. Сделал из системника домашний сервер-роутер под  Debian Linux для раздачи инета, качания торрентов и т.п. В том числе, хотелось раздавать по квартире беспроводную сеть. Для этого была куплена недорогая вайфай-карта от D-Link на базе чипа Ralink RT2561/R61. Но настройка оказалась не такой тривиальной, как хотелось.

Началось все с того, что карта наотрез отказывалась включать режим Master, жалуясь, что совсем не знает об этом режиме. Подолбавшись с этим около часа, решил плюнуть и настроить сеть в режиме Ad-Hoc – мы не гордые. В этом режиме карта завелась сразу, но тут в позу встал мой ноут с интеловским адаптером iwl3945. Эта железяка упорно не хотела работать в  Ad-Hoc. В пору было отчаиваться. В форумах нагуглил посты о том, что сам чип rt61 умеет работать в Master – это DLink урезал функционал дешевого устройства средствами firmware. Поэкспериментировал с различными версиями firmware из репозитория дебиана – ничего путного не получилось. Режим Master я получил, но работало все очень нестабильно.  Часы дальнейшего гугления дали свои результаты – нашелся пакет альтернативных драйверов для беспроводных адаптеров под Линукс – Compat Wireless. Страница для скачивания: http://wireless.kernel.org/en/users/Download. Для сборки стабильного релиза пришлось накатить ядро из нестабильной ветки дебиана, т.к. в стабильной все еще 2.6.26.

А теперь чуть поподробней про установку и настройку.

  1. Первым делом надо установить драйвер. Кстати, для этого необходимо иметь установленный пакет с заголовками от ядра – называется пакет linux-headers-2.6-686. Скачиваем архив с драйверами с указанного выше адреса. Распаковываем и делаем make в каталоге, куда распаковали. Ждем, пока все модули соберутся. Затем делаем make install и наблюдаем за процессом установки модулей-драйверов. Модули ставятся в папку /lib/modules/версия_ядра/updates, так что их можно потом спокойно удалить, если что. В процессе установки скрипт сделает depmod, что сделает свежеустановленные модули более приоритетными. После этого можно сделать update-initramfs -u, что добавит эти драйверы в загрузочный образ.После этого можно перегрузить машину. Все, у нас новые драйвера.  Кстати, перацию по пересборке драйверов придется выполнять после каждого обновления или апгрейда ядра. Для пересборки нужно зайти в каталог с исходниками драйверов и выполнить make clean && make && make install.
  2. Для обслуживания беспроводной сети нужен софт, называющийся hostapd. Для корректной работы требуется версия из нестабильной ветки дебиана, а именно 0.6.9. Именно в этой версии добавили поддержку стандартного драйвера nl80211, то есть для любой вайфайной карты, а не только Atheros. На какие настройки стоит обратить внимание при конфигурировании hostapd:
    • interface=wlan0 – интерфейс беспроводной сети
    • bridge=br0 – беспроводная сеть объединена в бридж с проводной локалкой
    • driver=nl80211 – выбран стандартный драйвер беспроводных карточек
    • ssid=rigid – имя беспроводной сети
    • country_code=RU – код страны определяет диапазон используемых каналов и ряд других правил
    • hw_mode=g – режим работы сети
    • channel=5 – выбранный канал (частота)
    • macaddr_acl=1 управление доступом к беспроводной сети по мак-адресам
    • accept_mac_file=/etc/hostapd/hostapd.accept – белый список мак-адресов. все, ктоне попал в этот список не смогут подключиться к сети

    Есть еще куча настроек, в том числе и шифрование, но я не стал его включать. Итак достаточно защит

  3. Итак, hostapd предоставит беспроводную сеть, но надо выдать IP-адреса и другие сетевые настройки беспроводным и проводным пользователям. Этим у меня занимается dnsmasq. Эта программа так же есть в составе репозитория дебиан. Настраивается все достаточно просто. Вот ключевые параметры:
    • no-resolv – не используем файл  /etc/resolv.conf, днс-сервера укажем вручную
    • server=x.y.z.a – днс-сервер, к которому буду перенаправлены запросы. можно указывать не один раз, если серверов много
    • local=/local/ – суффикс локального домена, имена из которого будут искаться в /etc/hosts
    • interface=br0 – интерфейс, на котором слушать
    • domain=local – домен, который отдаем юзерам
    • dhcp-range=192.168.254.2,192.168.254.254,255.255.255.0,12h – диапазон локальных адресов и время аренды
    • dhcp-host=мак-адрес,айпи-адрес – конкретная привязка айпи к маку
    • dhcp-host=мак-адрес – просто указываем что этот мак “свой”
    • dhcp-option=option:router,192.168.254.1 – шлюз по умолчанию
    • dhcp-ignore=#known – игнорировать запросы от неизвестных мак-адресов – дополнительная защита от левых халявщиков

Все, система готова к раздаче инета. Естественно, чтобы все это заработало, надо настроить соединение с инетом, тем способом, каким предполагает провайдер и настроить NAT средствами iptables.

Один ответ to “Пример настройки Linux-based точки доступа WiFi на дешевой карте”

  1. vyazovoi говорит:

    Я с этой темой жутко натрахался! hostapd вообще не осилил, делал с помощью встроенной функции madwifi-драйвера, но в один прекрасный день оно отвалилось и я жутко переживал. Временно переключился на ad-hoc конфигурацию с usb-сетевушкой (на atheros pci-карточке всё отвалилось).
    На новый год мне Марина подарила роутер DIR-320 и, фух, сейчас все хорошо. Я к нему ещё прицепил винт через переходник IDE->USB, поставил всякие штуки включая transmission-daemon и samba3.


Добавить комментарий

Please log in using one of these methods to post your comment:

Логотип WordPress.com

You are commenting using your WordPress.com account. Log Out / Изменить )

Фотография Twitter

You are commenting using your Twitter account. Log Out / Изменить )

Фотография Facebook

You are commenting using your Facebook account. Log Out / Изменить )

Connecting to %s

Follow

Get every new post delivered to your Inbox.