Думаю у многих есть желание добавить функционал точки доступа к своему FreeBSD серверу. Очевидно, зачем покупать лишнее устройство в виде отдельно стоящего Wi-Fi-роутера, если практически тоже самое можно получить от вашего сервера с минимальными затратами.
Но те, кто уже сталкивались с этой задачей, знают, что не все так гладко. Поэтому в этой статье я постараюсь описать все грабли, на которые не следует наступать и быстро настроить wi-fi сеть.
Нам понадобится обычная wi-fi карта, USB или PCI [Express].
И тут появляется первая проблема, с которой вы можете столкнуться. Он связана с тем, что не все карточки поддерживаются драйверами. Поэтому важно знать, как подобрать подходящую и рабочую карту.
Для чипов разных производителей с разными интерфейсами шин существуют
отдельные драйверы. Например, для Broadcom на PCI это bwi, для Atheros
на PCI- ath, atheros на USB - uath, Ralink на USB - run, rum и т.д.
На страницах man есть подробные описания последних версий каждого из них, включая какие конкретно модели карточек поддерживаются.
От версии к версии эти списки пополняются, поэтому с большой вероятностью ваш старенький адаптер будет работать.
Проверить поддерживаемые беспроводные адаптерв можно непосредственно на сайте в разделе GetFreeBSD>Release Information> Hardware Notes> 3.5. Wireless Network Interfaces
Если вашего адаптера нет в числе поддерживаемого, то можно попробовать использовать windows драйвер в обертке NDIS. Но имейте в виду, что такой драйвер не сможет работать в режиме точки доступа!
Проверить поддерживаемые беспроводные адаптерв можно непосредственно на сайте в разделе GetFreeBSD>Release Information> Hardware Notes> 3.5. Wireless Network Interfaces
Если вашего адаптера нет в числе поддерживаемого, то можно попробовать использовать windows драйвер в обертке NDIS. Но имейте в виду, что такой драйвер не сможет работать в режиме точки доступа!
Здесь есть полный список и поддерживаемых чипов всех производителей для BSD-систем.
Что бы узнать на каком чипе ваша карточка, достаточно открыть ее описание на сайте wikidevi.com. Обращайте внимание, что некоторые модели имеют несколько ревизий на разных чипах, поэтому внимательно сверяйте версии. Они указываются на наклейках коробки или самих устройствах.
Так же обращайте внимание, что не все драйверы поддерживают 11n режим, даже если на самом устройстве написано, что оно работает. На текущий момент его поддерживают всего три драйвера ath, iwn и mwl.
Посмотрев, что предлагается в ближайших магазинах мой выбор пал на два адаптера D-Link DWA-140 и DWA-160, оба собраны на чипах Ralink и поддерживаются драйвером run, но пока только в 11g режиме. Их основное отличие - второй может работать в двух диапазонах 2,4 и 5 ГГц. Стоимость 580 и 850 руб соответственно.
Будем считать, что подходящий адаптер у вас имеется. Теперь приступаем непосредственно к настройке.
Опишем общий процесс поиска, как узнать какое устройство подключено.
После того, как вы подключили устройство, посмотрим, что оно из себя представляет.
После того, как вы подключили устройство, посмотрим, что оно из себя представляет.
Если это USB устройство, то пишем
# usbconfig dump_device_descНаходим там ваш адаптер по ключевым словам 802.11
ugen4.2: <802.11 n WLAN Ralink> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (450mA)
bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x2001
idProduct = 0x3c20
bcdDevice = 0x0101
iManufacturer = 0x0001 <Ralink>
iProduct = 0x0002 <802.11 n WLAN>
iSerialNumber = 0x0003 <1.0>
bNumConfigurations = 0x0001
# pciconf -lvПолучите список всех PCI устройств с указанием драйвера, идентификатора производителя, наименования, класса и подкласса. Например,
rl0@pci0:0:9:0: class=0x020000 card=0x813910ec chip=0x813910ec rev=0x10 hdr=0x00После того, как вы узнали на каком чипе ваше устройство и какой нужен драйвер. Обращаемся к справке man, там сказано, что необходимо прописать в /boot/loader.conf для загрузки модуля драйвера. В моем случае это.
vendor = 'Realtek Semiconductor Co., Ltd.'
device = 'RTL-8139/8139C/8139C+'
class = network
subclass = ethernet
if_run_load="YES"После перезагрузки у вас должно появится новое устройство.
runfw_load="YES"
# ifconfig
run0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 2290Если нет, то дайте команду:
ether ac:f1:df:01:e5:64
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
status: running
# ifconfig wlan0 create wlandev run0И посмотрите создался ли у вас интерфейс wlan0.
# ifconfig wlan0Если создался, то удалим:
# ifconfig wlan0 destroyДальше в /etc/rc.conf напишем
ifconfig_wlan0="inet 192.168.0.1/24"Далее настроим WPA2 аутентификацию.
wlans_run0="wlan0"
create_args_wlan0="wlanmode hostap channel 7 country RU"
hostapd_enable=YES
И создадим файл
# vi /etc/hostapd.confС таким содержимым
interface=wlan0Во избежание раскрытия пароля закрываем доступ на чтение файла всем кроме root.
hw_mode=g
ssid=Your_name
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
# 1 - WPA1; 2 - WPA2; 3 - WPA1+WPA2
wpa=3
wpa_passphrase=Password
# алгоритм управления
wpa_key_mgmt=WPA-PSK
# алгоритмы шифрования
wpa_pairwise=CCMP
# chmod 700 /etc/hostapd.confВешаем dhcp на wlan0, прописываем в rc.conf
dhcpd_ifaces="wlan0"Настраиваем фаервол. Для примера добавим в ipfw правило разрешающее все через интерфес wlan0.
add 1098 allow all from any to any via wlan0Запускаем hostapd
# service hostapd forcestartИ вуаля, у вас появилась сеть "Your_name".
Но если вдруг за место этого у вас появилось "panic: page fault" типа такого
не отчаивайтесь, у меня такое тоже наблюдалось на FreeBSD 10.1-RELEASE и исключительно на x86, на amd64 все четко. Мне помогло обновление мира до последней текущей версии, 10.1-STABLE #4 r278159.
Перед запуском Wi-Fi сети очень важно узнать какие частотные каналы еще не заняты и выбрать любой свободный. Иначе будут проблемы в работе. Например вы просто не сможете подключиться к вашей сети.
не отчаивайтесь, у меня такое тоже наблюдалось на FreeBSD 10.1-RELEASE и исключительно на x86, на amd64 все четко. Мне помогло обновление мира до последней текущей версии, 10.1-STABLE #4 r278159.
Перед запуском Wi-Fi сети очень важно узнать какие частотные каналы еще не заняты и выбрать любой свободный. Иначе будут проблемы в работе. Например вы просто не сможете подключиться к вашей сети.
Если понадобится удалить точку доступа, то пишем
# ifconfig wlan0 destroyВручную создать
# ifconfig wlan0 create wlandev run0 wlanmode hostap ssid Your_nameСканировать на доступные сети
# ifconfig wlan0 up scanИли так
# ifconfig wlan0 list scanПосмотреть, на каких каналах может работать ваш адаптер.
# ifconfig -v wlan0 list channelИ вручную установить нужный канал
# ifconfig wlan0 channel 13Включить/выключить сеть.
# ifconfig wlan0 downПерезапустить wlan0 по настройкам из /etc/rc.conf
# ifconfig wlan0 up
# service netif restart wlan0
Отличная вещь, нужная!
ОтветитьУдалить