Документация по ОС FreeBSD Четверг, 05.12.2024, 04:06
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Ralink 2870 и FreeBSD – настраиваем точку доступа [2011]
Сразу предупреждаю: заработало у меня только на freebsd 8.2, на 7.4 не стало, хотя здесь утверждают, что должно работать.
Итак, есть машинка с

FreeBSD selena.ski-elfa 8.2-STABLE FreeBSD 8.2-STABLE #5: Thu May 12 12:35:47 VOLST 2011     root@selena.ski-elfa:/usr/obj/usr/src/sys/selena  i386

А так же USB wifi адаптер tp-link TL-WN727N, построенный на чипе Ralink 2870. Начиная с freebsd8.1 в системе есть драйвера для этого чипа, чтобы карточка опозналась, надо подгрузить модули ядра:

# kldload runfw
# kldload if_run

Либо добавляем их в /boot/loader.conf. Кроме того, нужен еще модуль wlan_xauth, соответственно, с ним поступаем так же.
Адаптер после этого определится как run0, однако с помощью ifconfig с ним работать не получается, надо создать виртуальное устройство wlan0, заодно сразу перевести его в режим точки доступа (hostap):

# ifconfig wlan0 create wlandev run0 wlanmode hostap ssid selena

Здесь wlanmode - режим работы (hostap – точка доступа, может быть еще BSS – режим клиента, и monitor – вообще ненужная рядовому обывателю штука. А нерядовые могут об этом почитать в man run), ssid - имя нашей сети, мы его будем видеть в списке сетей на клиенте.
Теперь надо включить аутентификацию, мы же не хотим, чтобы к нам в сеть ходили кто попало? Значит, создаем файлик /etc/hostapd.conf:

interface=wlan0
debug=1
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=selena
wpa=3
wpa_passphrase=mypassphrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

ну тут понятно, указали интерфейс, который обслуживать, указали имя сети, включили wpa2 (wpa=3, как ни странно, и wpa_pairwise=CCMP). mypassphrase – ключевое слово для доступа в сеть, его будут спрашивать у клиентов. Проявите фантазию, и вообще, меняйте ее почаще, нынче ломают все подряд.
Создаем папочку, которую в конфиге объявили:

# mkdir /var/run/hostapd

теперь надо запустить демона hostapd, который как раз и занимается аутентификацией:

/etc/rc.d/hostapd forcestart

Собственно, если после этого ifconfig показывает нам что-то наподобие:

wlan0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 2290
 ether 00:11:43:54:65:76
 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
 status: running
 ssid freebsdap channel 1 (2412 Mhz 11g) bssid 00:11:43:54:65:76
 authmode WPA privacy MIXED deftxkey 2 TKIP 2:128-bit TKIP 3:128-bit
 txpower 31.5 scanvalid 60 bgscan bgscanintvl 300 bgscanidle 250
 roam:rssi11g 7 roam:rate11g 5 protmode CTS burst dtimperiod 1

То уже почти работает. Почему почти? потому-что надо еще настроить бридж между своей внутренней сетевкой и wifi адаптером. Не, если внутренней сетевки нету, то для wlan0 с помощью ifconfig нормально настраивается обычная сеть, но у меня как раз внутренняя проводная сеть и дополнительных маршрутов я вводить не хочу, поэтому буду делать bridge, у меня там еще и dhcp до кучи, в общем, будет удобно.
Для этого грузим соответствующий модуль и создаем мост:

# kldload if_bridge
# ifconfig bridge0 create

Объединяем в мост внутренний проводной интерфейс и беспроводной и поднимаем мост:

# ifconfig bridge0 addm wlan0 addm nfe0
# ifconfig bridge0 up

Вместо nfe0 следует подставить имя своего интерфейса.
Все, после этого я с ноута смог подцепиться к сети, ходить в интернет и иметь доступ к локальным ресурсам.
С автоматизацией процесса, однако, у меня не заладилось. Точнее, не заладился перевод адаптера в hostap. Умные люди для этого советую в /etc/rc.conf вставтиь строчку

wlans_run0="wlan0"
ifconfig_wlan0="ssid selena mode 11g mediaopt hostap"

Однако моя система на подобную конструкцию обижается фразой device not configured и ничего не работает. Я бился-бился, но так и не смог совладать с чудом враждебной техники, посему просто сляпал скрипт, который поднимает интерфейс и мост:

#!/bin/sh
/sbin/ifconfig wlan0 create wlandev run0 wlanmode hostap ssid selena
/sbin/ifconfig bridge0 create
/sbin/ifconfig bridge0 addm wlan0 addm nfe0
/sbin/ifconfig bridge0 up
/etc/rc.d/hostapd forcestart

И запускаю его вручную. Собственно, то же самое можно впихать в /etc/rc.local и тогда оно поднимается автоматически, но я рассудил, что мне wifi нужно редко, и нефиг ему светить по соседям, да еще подниматься не через правильный rc.conf а откуда-то сбоку. Собственно, если кто надоумит, как сделать правильно, то буду очень благодарен.
Если бы wlan0 корректно поднимался через /etc/rc.conf, то мост надо было бы поднимать там же, вставив туда вот такое:

cloned_interfaces="bridge0"
ifconfig_bridge0="up addm run0 addm nfe0"

Имя интерфейса не забываем менять.
Заодно тогда надо в /etc/rc.conf добавить

hostapd_enable="YES"

Однако при ручной загрузке из скрипта или автоматической из /etc/rc.local эта конструкция вызывает неработоспособность системы, так что я hostapd запускаю последней строчкой в скрипте.

Модули я гружу из /boot/loader.conf:

runfw_load="YES"
if_run_load="YES"
wlan_xauth_load="YES"
if_bridge_load="YES"


Источник: http://www.daemony.ru/?p=1118
Категория: Net | Добавил: oleg (15.05.2011) | Автор: skiangel
Просмотров: 992 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024