Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> Security —> Hotspot

Hotspot на FreeBSD

Автор: UA.


Попала в руки сетевая Planet WL-3560, решил сделать дома безпроводную точку доступа. Собственно готовой документации не нашёл, собирал по крупинкам в интернете - попытаюсь изложить

Имеем:
1) Freebsd свежепроинсталенная
(настраивалось на 6.2, думаю на ветке 6 и 7 будет работать)
2) Карточку PCI Planet чип Atheros
- распозналась как ath
3) Канал в мир
(наш IP 192.168.100.3, шлюз провайдера 192.168.100.1, днс провайдера 192.168.100.1)

Цель:
настроить точку доступа на FreeBSD для выхода беспроводных устройств в мир


1.Настройка карты
Вставив карточку в PCI-слот она не обнаружилась - это нормально (ядро у меня "пожмаканое" - стараюсь оставлять только то что надо), ведь нам надо собрать ядро для поддержки данных устройств (можно конечно модулями, но это не "тру"),соответственно создаём конфиг для нового ядра, в обязательном порядке включаем опции bpf (для DHCP сервера)
Не забудьте включить в конфиг вашу сетевую!!!!
#cd /usr/src/sys/i386/conf/
#cat WIFI
machine         i386
cpu             I686_CPU
ident           WIFI

options         SCHED_4BSD              # 4BSD scheduler
options         PREEMPTION              # Enable kernel thread preemption
options         INET                    # InterNETworking
options         FFS                     # Berkeley Fast Filesystem
options         SOFTUPDATES             # Enable FFS soft updates support
options         UFS_ACL                 # Support for access control lists
options         UFS_DIRHASH             # Improve performance on big directories
options         NFSCLIENT               # Network Filesystem Client
options         PROCFS                  # Process filesystem (requires PSEUDOFS)
options         PSEUDOFS                # Pseudo-filesystem framework
options         GEOM_GPT                # GUID Partition Tables.
options         COMPAT_43               # Compatible with BSD 4.3 [KEEP THIS!]
options         COMPAT_FREEBSD4         # Compatible with FreeBSD4
options         COMPAT_FREEBSD5         # Compatible with FreeBSD5
options         SYSVSHM                 # SYSV-style shared memory
options         SYSVMSG                 # SYSV-style message queues
options         SYSVSEM                 # SYSV-style semaphores
options         _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
device          apic                    # I/O APIC
device          acpi

# Bus support.
device          pci

# ATA and ATAPI devices
device          ata
device          atadisk         # ATA disk drives
device          atapicd         # ATAPI CDROM drives
options         ATA_STATIC_ID   # Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc          # AT keyboard controller
device          atkbd           # AT keyboard

device          vga             # VGA video card driver

# syscons is the default console driver, resembling an SCO console
device          sc
device          agp             # support several AGP chipsets

# Add suspend/resume support for the i8254.
device          pmtimer

# Serial (COM) ports
device          sio             # 8250, 16[45]50 based serial ports

# Parallel port
device          ppc
device          ppbus           # Parallel port bus (required)

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device          miibus          # MII bus support
device          rl              # RealTek 8129/8139
device          xl              # 3Com 3c90x (``Boomerang'', ``Cyclone'')
device          dc
device          lnc

# Pseudo devices.
device          loop            # Network loopback
device          random          # Entropy device
device          ether           # Ethernet support
device          ppp             # Kernel PPP
device          tun             # Packet tunnel.
device          pty             # Pseudo-ttys (telnet etc)
device          gif             # IPv6 and IPv4 tunneling

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.

#Включаем Фаерволы
device          bpf             # Berkeley packet filter
options         HZ=1000
options         TCP_DROP_SYNFIN
options         SC_DISABLE_REBOOT
device          pf
device          pflog
options         ALTQ
options         ALTQ_CBQ
options         ALTQ_RED
options         ALTQ_RIO
options         ALTQ_HFSC
options         ALTQ_PRIQ
options         DEVICE_POLLING
options IPFIREWALL                      # включаем поддержку ipfw
options IPFIREWALL_DEFAULT_TO_ACCEPT    # политика по умолчанию - ACCEPT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPDIVERT
options DUMMYNET                        #enable dummynet operation
options         NETGRAPH
options         NETGRAPH_BPF
options         NETGRAPH_IFACE
options         NETGRAPH_KSOCKET
options         NETGRAPH_MPPC_ENCRYPTION
options         NETGRAPH_PPP
options         NETGRAPH_PPTPGRE
options         NETGRAPH_SOCKET
options         NETGRAPH_TCPMSS

# именно тут мы включаем поддержку вайфайного железа и способов шифрования
device wlan
device wlan_acl
device wlan_ccmp
device wlan_wep
device ath
device ath_hal
device ath_rate_sample
device wlan_tkip
device wlan_xauth

Сразу сделаю оговорку, у меня в ядро включен фаер и IPFW и PF. Зачем их два, спросите Вы. Всё просто: PF для ната, а IPFW для шейпера и фильтрации. Хотя будет работать и отдельно каждый из них. Так у меня исторически сложилось....
Компилируем и устанавливаем наше ядро
# config WIFI
Kernel build directory is ../compile/WIFI
Don't forget to do ``make cleandepend; make depend''
#cd ../compile/WIFI
#make depend
#make && make install

Процесс не быстрый - идём пить чай
После того как ядро установилось, перегружаемся уже с новым ядром
#uname -a
FreeBSD home.lan 6.2-RELEASE FreeBSD 6.2-RELEASE #0: Sun Nov 16 15:53:25 UTC 2008 
    mak_v_@home.lan:/usr/src/sys/i386/compile/WIFI  i386

Из листинга ifconfig видим что карточка определилась как ath0
Далее есть несколько путей:
1) точка доступа без шифрования и ключей (публичная сеть)
2) точка доступа с авторизацией и шифрованием


Если делаем простую точку доступа без шифрования  - достаточно добавить в rc.conf
ifconfig_ath0="inet 172.16.16.1 netmask 0xffffff00 ssid FREE \
       mode 11g wepmode off mediaopt hostap"

можно переходить к настройке DHCP

Если точка с шифрованием и авторизацией, то читаем этот пункт до конца
Есть несколько способов организации аутентификации и шифрования, я рассмотрю лишь частичный пример, если хотите покопать поглубже  - хандбука в помошь....

Создадим файл hostapd.conf, в нём будут настройки нашей точки доступа ( wifi карты )
#cat /etc/hostapd.conf
interface=ath0 #интерфейс на котором работает
driver=bsd 
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=4
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=FREE ##имя точки доступа
wpa=3 #параметры шифрования
wpa_pairwise=CCMP
wpa_passphrase=12345678 #ключ сети который вы будете вводить при подключении 
#парился долго с кол-вом символов
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP


В rc.conf добавляем строки c с настройками сетевых карт (xl0 - смотрит на провайдера, ath0 - наша wifi-карточка) и автозапуском настроек точки доступа. Безпроводные клиенты будут жить в сети 172.16.16.0/24 (можете произвольно указать).

#cat /etc/rc.conf
ifconfig_xl0="inet 192.168.100.3 netmask 255.255.255.0"
ifconfig_ath0="inet 172.16.16.1 netmask 255.255.255.0  mediaopt hostap"
hostapd_enable="YES"
defaultrouter="192.168.100.1"

2.DHCP сервер
Устанавливаем из портов
 #cd /usr/ports/net/isc-dhcp3-server
#make install clean

в опциях сборки я выбрал только DHCP_PARANOIA, DHCP_JAIL,  OPENSSL_BASE, OPENSSL_PORT
в /etc/rc.conf добавляем следующие строки
dhcpd_enable="YES"
dhcpd_flags="-q" # отключаем вывод копирайта и прочего при старте dhcpd
dhcpd_ifaces="ath0" # сетевой интерфейс на котором будет работать dhcpd

Создадим конфигурационный файл для DHCP сервера:
#cat /usr/local/etc/dhcpd.conf
default-lease-time 600; # время аренды по умолчанию
max-lease-time 7200; # максимальное время аренды
authoritative; # единственный DHCP сервер в сети
ddns-update-style interim; # динамический стиль обновления DNS
log-facility local7; #
subnet 172.16.16.0 netmask 255.255.255.0 { # подсеть в которой будем выдавать адреса
range 172.16.16.2 172.16.16.100; # интервалы ip адресов на выдачу клиентам
option routers 172.16.16.1; # адрес маршрутизатора в Интернет - IP wifi-карты
option domain-name-servers 192.168.100.1; # адрес DNS сервера провайдера
}
#для хостов которым требуются постоянные ip адреса создаем следующие записи
host Mynotebook { # имя хоста
hardware ethernet 00:c0:9f:1e:64:92; # MAC адрес сетевой карты хоста
fixed-address 172.16.16.3; # ip адрес для этого хоста
}
host Sheff {
hardware ethernet 00:a0:cc:c9:5c:7d;
fixed-address 172.16.16.4;
}
#Остальные клиенты будут получать свободные адреса из указанных диапазонов.

Теперь у нас есть настроенная точка доступа, при подключении к которой дхцп сервер будет выдавать настройки клиентам

3.НАТ
осталось "выпустить" трафик в мир
Идем править фаервол на предмет NAT
Я использую для ната PF, если вы используете IPFW либо что-то другое (IPF,IPNAT,etc...) внесите в конфигурацию соответствующее правило для NATа на внешнем интерфейсе трафика от вайфайной сети
#cat /etc/pf.conf
nat on xl0 from 172.16.16.0/24 to any -> 192.168.100.3
pass quick all

Последнее, добавляем в rc.conf (маршрутизировать пакеты, включить PF, указываем путь к файлу фаервола)
gateway_enable="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"

Перегружаемся, подключаемся с какого-нибудь беспроводного устройства, вводим ключ сети, который в hostapd.conf (12345678)....вуаля !!!



размещено: 2008-11-20,
последнее обновление: 2008-11-20,
автор: UA


muzzy, 2008-11-20 в 9:55:12

Уже не первый раз читаю про конфигурации с двойными стенами, но что то мне они не кажутся кашерными, я не проверял, но что то писали про ядерный нат для ipfw2 здесь
http://www.opennet.ru/openforum/vsluhforumID1/82253.html и здесь http://forum.oszone.net/thread-113827.html. В остальном статья мне была полезна, спасибо. Вот.

karakurty, 2008-11-20 в 12:44:11

у меня чуток отличается конфиг hostapd:

cat /etc/hostapd.conf
interface=ath0
driver=bsd
logger_syslog=1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=1
debug=3
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=karakurty
macaddr_acl=0
ieee8021x=0
auth_algs=3
eapol_key_index_workaround=0
own_ip_addr=127.0.0.1
wpa=1
wpa_psk_file=/etc/hostapd.wpa_psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP TKIP

и

cat /etc/hostapd.wpa_psk
# List of WPA PSKs. Each line, except for empty lines and lines starting
# with #, must contain a MAC address and PSK separated with a space.
# Special MAC address 00:00:00:00:00:00 can be used to configure PSKs that
# anyone can use. PSK can be configured as an ASCII passphrase of 8..63
# characters or as a 256-bit hex PSK (64 hex digits).

00:15:00:64:47:00 <60 symbols key>
00:19:00:31:2C:00 <60 symbols key>
00:1D:00:B5:2A:00 <60 symbols key>
00:13:00:82:38:00 <60 symbols key>
00:00:00:00:00:00 test_account_for_guests


т.е. у меня стоит уникальный ключ для каждого мак адреса и плюс один для гостей

100kg, 2008-11-20 в 21:05:26

device wlan_wep
mojno ubratj

zloidemon, 2008-11-21 в 6:14:55

Забыл добавить как конектиться с фрях)
ss# wpa_passphrase FREE 12345678
network={
       ssid="FREE"
       #psk="12345678"
       psk=d1c1a74047709cb0fcb1ad383a0dbd53cd93d2d5d858b1d529d5dca9989efacc
}
ss#
это засунуть в /etc/wpa_supplicant.conf
и
ss#echo 'ifconfig_iwi0="DHCP ssid FREE wpa up"'>>/etc/rc.conf

для 8го куррента немного по другому, через вланы вроде было написанно в UPDATING

LCH, 2008-11-23 в 16:45:07

В конфиге ядра:
#options      SCHED_4BSD
options       SCHED_ULE

Для многопроцессорных/многоядерных систем смотрелось бы уместнее.  

snorlov, 2008-11-24 в 10:39:08

 Зачем в hostapd.conf указывать дважды wpa_pairwise,
надо просто прописать
wpa_pairwise = CCMP TKIP,

poison, 2008-11-28 в 11:24:00

Делал такое же, но оказалось неудобным в связи с большими размерами точки. Перешел на D-LINK 2100AP.

, 2008-11-29 в 20:47:13

Неоригинально. И заколебали уже :)

100kg, 2008-11-30 в 15:22:47

ifconfig_iwi0="DHCP ssid FREE wpa up
ifconfig: WPA: bad value

???
freebsd 7.0

Dorlas, 2009-01-15 в 14:03:53

Проверил работу на карточке: Gigabyte GN-WPKG - все работает отлично (FreeBSD 7.1).

Новечёкс :-), 2009-02-06 в 22:58:10

FreeBSD 7.1
Чип карты ath 108м (11n)
Делал всё по статье
Ошибка при загрузке:
Line 2: invalid/unknown driver 'bsd '
1 errors found in configuration file '/etc/hostapd.conf'
Подскажите пожалуйста как победить сие?

Новечёкс :-), 2009-02-07 в 9:31:51

#driver=bsd - сделал так
Всё пошло.

}{@ker, 2009-02-28 в 18:22:40

Для нормальной работы WPA нужно добавить wlan_xauth_load="YES" в /boot/loader.conf

У меня заработало только после этого.

mak_v_, 2009-03-01 в 13:33:30

[QUOTE]}{@ker, 2009-02-28 в 18:22:40
Для нормальной работы WPA нужно добавить wlan_xauth_load="YES" в /boot/loader.conf
У меня заработало только после этого.[/QUOTE]

Обычно нормально работает, если читать внимательно
в статье этот модуль вкомпилирован в ядро, так что вякнули зря

Key, 2009-04-10 в 21:02:27

FreeBSD 8.0 сервер
rc.conf:
wlans_ath0="wlan0"
create_args_wlan0="wlanmode ap"
ifconfig_wlan0="DHCP authmode wpa"
hostapd.conf:
#driver="bsd" - опция отсутствует, драйвер определяется автоматически

Key, 2009-04-10 в 21:09:10

и еще в hostapd.conf:
interface=wlan0
ssid=FREE
в остальном вроде всё тоже самое

ufs, 2009-10-07 в 9:56:39

На RELENG_8 тоже самое,только клонируем ath в wlan,ну и настраиваем уже wlan.
rc.conf:
wlans_ath0=wlan0
create_args_wlan0="wlanmode ap"
ifconfig_wlan0="inet 172.16.16.1 netmask 255.255.255.0  mediaopt hostap"
hostapd_enable="YES"

На фряшном клиенте:
wlans_ath0=wlan0
ifconfig_wlan0="inet 172.16.16.7 netmask 255.255.255.0 ssid Xyu wpa up"
Выполняем такое: wpa_passphrase Xyu pass(который в hostapd.conf на сервере)
далее wpa_supplicant -Dbsd -iwlan0 -c/etc/wpa_supplicant.conf
p.s. -D = driver -i = interface -c = config file.
содержимое /etc/wpa_supplicant.conf есть в коментах.

ufs, 2009-10-07 в 10:01:32

У меня это дело без DHCP.

Firedog , 2009-10-29 в 16:25:28

Куда hostapd пишет LOG

ufs, 2009-10-29 в 19:21:27

Куда скажешь - туда и будет.

Firedog, 2009-10-30 в 9:42:02

Вот лог hostapd.conf:

interface=ath0
hw_mode=g
driver=bsd
logger_syslog=1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=4
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel

ssid=WiFi
wpa=3 # 1 - WPA, 2- WPA2, 3- WPA+WPA2

wpa_passphrase=xxxxx
wpa_key_mgmt=WPA-PSK

Где искать логи, или как прописать чтоб писал в отдельный файл, например /var/log/hostapd.log
Help please!

Firedog, 2009-10-30 в 9:43:21

Извеняюсь конфиг hostapd.conf.

floke, 2011-05-29 в 22:57:21

3 дня пытался завести свою карточку на ath0 по данной статье. Крутил как мог... Подключение было в "ограниченном режиме", как выразилась винда. Ip клиент получал вообще левый, что то вроде 169.***.***.***, сервер в сети не пинговался.

Попробовал вариант с мостом - прокатило.
Прокатило, как я понял, из-за того, что у меня стоит роутер, который и выдал мне ip на клиент.

Всё что нужно было сделать в варианте в мостом:
1) Правим /etc/hostapd.conf, как батька прописал(для freebsd 8, как тут писали, нужно настраивать wlan0) и дополняем /etc/rc.conf соответствующими строчками:

wlans_ath0="wlan0"
create_args_wlan0="wlanmode ap"
ifconfig_wlan0="172.16.16.1 netmask 255.255.0.0 channel 8 mode 11g mediaopt  hostap"
hostapd_enable="YES"

2) дописываем в rc.conf строчки, касательно моста:
cloned_interfaces="bridge0"
ifconfig_bridge0="up addm wlan0 addm nfe0"
nfe0 - моя сетевуха, которая с проводом)
3) в /boot/loader.conf
if_bridge_load="YES"
4) в консоле:
kldload if_bridge
ifconfig bridge0 create

ну это... ребут!

mak_v_, 2011-05-29 в 23:06:10

Мост это конечно "ход конём". Но по-моему у вас просто dhcp-сервера не было.

floke, 2011-05-30 в 16:59:28

А вы правы) И почему я думал, что в 8 он уже присутствует)

nero777, 2011-07-31 в 18:11:11

freebsd 7.0 tplink wn-321g
пытаюсь уже месяц.не получается точка доступа.никто не пробовал на wn321g?

nero777, 2011-07-31 в 18:28:50


rum0:flags=108843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500 ether xx:19:f3:fb:1a
       inet 192.168.8.9 netmask 0xffffff00 broadcast 192.168.8.255 media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
status: associated
ssid wifi channel 1 (2412 Mhz 11g) bssid 00:27:19:f3:fb:1a
       authmode OPEN privacy OFF txpower 50 scanvalid 60 bgscan
       bgscanintvl 300 bgscanidle 250 roam:rssi11g 7 roam:rate11g 5
       protmode CTS dtimperiod 1

Eugen, 2011-09-24 в 16:06:47

Нет информации как сделать всё это, но только не для WiFi, а для LAN. Было находил, что один человек писал такой модуль: ng_eapol, но что-то не могу найти его нигде.

KES, 2011-10-05 в 1:36:55

1. hostapd не компилируется по умолчанию с поддержкой каких либо драйверов 9Beta2
2. Советовали конфигурировать через src.conf, но не разобрался как (
3. Если ставить из портов /usr/ports/net/hostapd, то обратитте внимание, что hostapd ставится в /usr/local/sbin но на ряду с этим останется тот, который собран с миром, в /usr/sbin

и запуская hostapd вы будет запусать с /usr/sbin а не проинсталлированный локально ,тк.:
env | grep PATH



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1773 секунд
Из них PHP: 56%; SQL: 44%; Число SQL-запросов: 77 шт.
Исходный размер: 46971; Сжатая: 12435