Точка доступа на FreeBSD (D-link DWA-510)


Не так давно уже публиковалось краткое руководство - Шлюз на FreeBSD за полчаса. А в данной заметке я хотел бы рассмотреть более частный случай - точка доступа Wi-Fi на FreeBSD.

Почему именно на FreeBSD? Сложилось так, что в наличии у меня есть только Wi-Fi-адаптер D-link DWA-510 (даже два), но в Linux в режиме AP с модулем RT61 (драйвер для чипа RT2561) есть некоторая достаточно существенная проблема. Всё работает достаточно хорошо и стабильно, кроме локальной сети. В локальной же сети плавающая ошибка - периодически пропадает связь с другими компьютерами из этой же локальной сети. Причём, со шлюзом связь есть всегда. С шлюза все компы тоже доступны. Помогает только перезагрузка шлюза или ожидание чуда (связь может появиться через 5 минут, а может и через 30). Соответственно, в офисе это будет сущий ад, если достаточно много клиентов работает по Wi-Fi.

Сразу замечу, что поднятие точки доступа под *BSD - задача более сложная, чем то же самое под Linux. Так что, если кого проблема выше не касается, я бы рекомендовал выбирать именно Linux для этих целей.

Итак, я исхожу из того, что FreeBSD уже установлена и настроена по предыдущему мануалу. Версия FreeBSD 8.1. В 8-й ветке возник ряд особенностей и старые рецепты без нескольких поправок не подходили.
<br>$ uname -a<br>FreeBSD  8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:55:53 UTC 2010     root@almeida.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386<br>


Сразу после загрузки в ifconfig должен появиться интерфейс ral0 (драйвер от Ralink Technology, Corp):

<br># ifconfig ral0<br>ral0: flags=8802 metric 0 mtu 2290<br>    ether 00:17:9a:80:9f:33<br>    media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)<br>    status: no carrier<br>


Если это так, в /etc/rc.conf дописываем следующее:

<br>wlans_ral0="wlan0"<br>create_args_wlan0="wlanmode ap authmode wpa"<br>ifconfig_wlan0="inet 192.168.46.1/24 ssid FreeBSDap mode 11g channel 7 country RU "<br>hostapd_enable="YES"<br>


А так же создаём файл /etc/hostapd.conf и в него помещаем оставшееся:

<br>interface=wlan0<br>debug=0<br>ctrl_interface=/var/run/hostapd<br>ctrl_interface_group=wheel<br><br>wpa=3<br>wpa_key_mgmt=WPA-PSK<br>wpa_passphrase=YtgXdj1234 #(пароль любой, но чтобы не менее 8 символов!)<br>wpa_pairwise=TKIP CCMP<br>


где ssid FreeBSDap - это название вашей точки доступа и wpa_passphrase=YtgXdj1234 - пароль для оной. 192.168.46.1 - само собой, ip-адрес точки доступа.

hostapd входит в базовую систему и установки не требует.

После перезагрузки вы должны получить нечто похожее:

<br># ifconfig ral0<br>ral0: flags=8843 metric 0 mtu 2290<br>    ether 00:17:9a:80:9f:33<br>    media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <br>    status: running<br>


и

<br># ifconfig wlan0<br>wlan0: flags=8843 metric 0 mtu 1500<br>    ether 00:17:9a:80:9f:33<br>    inet 192.168.46.1 netmask 0xffffff00 broadcast 192.168.46.255<br>    media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <br>    status: running<br>    ssid FreeBSDap channel 7 (2442 MHz 11g) bssid 00:17:9a:80:9f:33<br>    regdomain NONE country RU authmode WPA1+WPA2/802.11i privacy MIXED<br>    deftxkey 2 TKIP 2:128-bit txpower 30 scanvalid 60 protmode CTS<br>    dtimperiod 1 -dfs<br>


Если ваши листинги похожи на мои, значит всё должно работать и нужно проверять на клиентах :)

Пока всё работает в боевом режиме (6 компьютеров + столько же вот-вот тоже добавятся). При возникновении каких-то сложностей обязательно отпишу тут или поправлю заметку.