Настройка FreeBSD в качестве WI-FI точки доступа Kernel Configuration To use wireless networking, a wireless networking card is needed and the kernel needs to be configured with the appropriate wireless networking support. The kernel is separated into multiple modules so that only the required support needs to be configured. The most commonly used wireless devices are those that use parts made by Atheros. These devices are supported by ath(4) and require the following line to be added to /boot/loader.conf: if_ath_load="YES" The Atheros driver is split up into three separate pieces: the driver (ath(4)), the hardware support layer that handles chip-specific functions (ath_hal(4)), and an algorithm for selecting the rate for transmitting frames. When this support is loaded as kernel modules, any dependencies are automatically handled. To load support for a different type of wireless device, specify the module for that device. This example is for devices based on the Intersil Prism parts (wi(4)) driver: if_wi_load="YES" Note: The examples in this section use an ath(4) device and the device name in the examples must be changed according to the configuration. A list of available wireless drivers and supported adapters can be found in the FreeBSD Hardware Notes, available on the Release Information page of the FreeBSD website. If a native FreeBSD driver for the wireless device does not exist, it may be possible to use the Windows® driver with the help of the NDIS driver wrapper. In addition, the modules that implement cryptographic support for the security protocols to use must be loaded. These are intended to be dynamically loaded on demand by the wlan(4) module, but for now they must be manually configured. The following modules are available: wlan_wep(4), wlan_ccmp(4), and wlan_tkip(4). The wlan_ccmp(4) and wlan_tkip(4) drivers are only needed when using the WPA or 802.11i security protocols. If the network does not use encryption, wlan_wep(4) support is not needed. To load these modules at boot time, add the following lines to /boot/loader.conf: wlan_wep_load="YES" wlan_ccmp_load="YES" wlan_tkip_load="YES" Once this information has been added to /boot/loader.conf, reboot the FreeBSD box. Alternately, load the modules by hand using kldload(8). Note: For users who do not want to use modules, it is possible to compile these drivers into the kernel by adding the following lines to a custom kernel configuration file: device wlan # 802.11 support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_amrr # AMRR transmit rate control algorithm device ath # Atheros pci/cardbus NIC's device ath_hal # pci/cardbus chip support options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors device ath_rate_sample # SampleRate tx rate control for ath With this information in the kernel configuration file, recompile the kernel and reboot the FreeBSD machine. 30.3.6.3. WPA2 Host-based Access Point This section focuses on setting up a FreeBSD access point using the WPA2 security protocol. More details regarding WPA and the configuration of WPA-based wireless clients can be found in Section 30.3.4.1.3, “WPA”. The hostapd(8) daemon is used to deal with client authentication and key management on the WPA2-enabled AP. The following configuration operations are performed on the FreeBSD machine acting as the AP. Once the AP is correctly working, hostapd(8) can be automatically started at boot with this line in /etc/rc.conf: hostapd_enable="YES" Before trying to configure hostapd(8), first configure the basic settings introduced in Section 30.3.6.1, “Basic Settings”. 30.3.6.3.1. WPA2-PSK WPA2-PSK is intended for small networks where the use of a backend authentication server is not possible or desired. The configuration is done in /etc/hostapd.conf: interface=wlan0 1 debug=1 2 ctrl_interface=/var/run/hostapd 3 ctrl_interface_group=wheel 4 ssid=freebsdap 5 wpa=2 6 wpa_passphrase=freebsdmall 7 wpa_key_mgmt=WPA-PSK 8 wpa_pairwise=CCMP 9 1 Wireless interface used for the access point. 2 Level of verbosity used during the execution of hostapd(8). A value of 1 represents the minimal level. 3 Pathname of the directory used by hostapd(8) to store domain socket files for communication with external programs such as hostapd_cli(8). The default value is used in this example. 4 The group allowed to access the control interface files. 5 The wireless network name, or SSID, that will appear in wireless scans. 6 Enable WPA and specify which WPA authentication protocol will be required. A value of 2 configures the AP for WPA2 and is recommended. Set to 1 only if the obsolete WPA is required. 7 ASCII passphrase for WPA authentication. Warning: Always use strong passwords that are at least 8 characters long and made from a rich alphabet so that they will not be easily guessed or attacked. 8 The key management protocol to use. This example sets WPA-PSK. 9 Encryption algorithms accepted by the access point. In this example, only the CCMP (AES) cipher is accepted. CCMP is an alternative to TKIP and is strongly preferred when possible. TKIP should be allowed only when there are stations incapable of using CCMP. The next step is to start hostapd(8): # service hostapd forcestart # ifconfig wlan0 wlan0: flags=8943 metric 0 mtu 1500 ether 04:f0:21:16:8e:10 inet6 fe80::6f0:21ff:fe16:8e10%wlan0 prefixlen 64 scopeid 0x9 nd6 options=21 media: IEEE 802.11 Wireless Ethernet autoselect mode 11na status: running ssid No5ignal channel 36 (5180 MHz 11a ht/40+) bssid 04:f0:21:16:8e:10 country US ecm authmode WPA2/802.11i privacy MIXED deftxkey 2 AES-CCM 2:128-bit AES-CCM 3:128-bit txpower 17 mcastrate 6 mgmtrate 6 scanvalid 60 ampdulimit 64k ampdudensity 8 shortgi wme burst dtimperiod 1 -dfs groups: wlan Once the AP is running, the clients can associate with it. See Section 30.3.4.1.3, “WPA” for more details. It is possible to see the stations associated with the AP using ifconfig wlan0 list sta. It is possible to see the stations associated with the AP using ifconfig wlan0 list sta Точка доступа на FreeBSD Опубликовано пт, 21/12/2012 - 15:29 пользователем nekit Настройка В данной статье по горячим следам я изложил процесс настройки точки доступа на операционной системе FreeBSD. Побудило меня на это: необходимость срочной замены вышедшей из строя железки D-Link DWL-2100AP, которая работала в режиме моста и предоставляла беспроводным клиентам доступ к ресурсам локальной сети. Другой точки доступа под рукой не оказалось, зато был неиспользуемый нетбук Asus EeePC 701 (который имел все необходимое для реализации задачи: интерфейс Ethernet и модуль Wi-Fi), поэтому он был использован в качестве платформы для будущей точки доступа. Процесс установки FreeBSD на нетбук здесь я описывать не буду, так как он хорошо описан в этой статье, а после установки системы будет полезно почитать про первоначальную настройку системы — ссылка. Все действия я буду производить на FreeBSD версии 8.3. Первым делом я пересобрал ядро, выкинув оттуда все лишнее и включив все необходимое (включая модули из вывода команды kldstat). Также при сборке ядра я отключил сборку ядерных модулей, ибо ни к чему они на стационарной железке, выполняющей только определенный ряд функций. Вот мой конфиг ядра: cpu I686_CPU ident EEEPC-AP options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking #options INET6 # IPv6 communications protocols options SCTP # Stream Control Transmission Protocol 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 UFS_GJOURNAL # Enable gjournal-based UFS journaling options MD_ROOT # MD is a potential root device options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCLIENT options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables. options GEOM_LABEL # Provides labelization options COMPAT_43TTY # BSD 4.3 TTY compat (sgtty) options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options COMPAT_FREEBSD5 # Compatible with FreeBSD5 options COMPAT_FREEBSD6 # Compatible with FreeBSD6 options COMPAT_FREEBSD7 # Compatible with FreeBSD7 options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options KTRACE # ktrace(1) support options STACK # stack(9) support options SYSVSHM # SYSV-style shared memory options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options P1003_1B_SEMAPHORES # POSIX-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing #options MAC # TrustedBSD MAC Framework #options KDTRACE_HOOKS # Kernel DTrace hooks options INCLUDE_CONFIG_FILE # Include this file in kernel options KDB # Kernel debugger related code options KDB_TRACE # Print a stack trace for a panic #======================================================================= device cpuctl device acpi_video device acpi_asus # модуль необходимый для создания интерфейса "моста" device if_bridge # модуль необходим для демона hostapd device wlan_xauth # модуль необходим для отключения экрана во время простоя device green_saver #======================================================================= # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC # CPU frequency control device cpufreq # Bus support. device acpi device eisa device pci # ATA and ATAPI devices device ata device atadisk # ATA disk drives options ATA_STATIC_ID # Static device numbering # SCSI peripherals device scbus # SCSI bus (required for SCSI) device da # Direct Access (disks) device kbdmux # keyboard multiplexer device vga # VGA video card driver device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc # Add suspend/resume support for the i8254. device pmtimer # 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 ae # Attansic/Atheros L2 FastEthernet # Wireless NIC cards device wlan # 802.11 support options IEEE80211_DEBUG # enable debug msgs options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's options IEEE80211_SUPPORT_MESH # enable 802.11s draft support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_amrr # AMRR transmit rate control algorithm #device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # pci/cardbus chip support options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors device ath_rate_sample # SampleRate tx rate control for ath # Pseudo devices. device loop # Network loopback device random # Entropy device device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. device pty # BSD-style compatibility pseudo ttys device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device faith # IPv6-to-IPv4 relaying (translation) device firmware # firmware assist module # 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 # USB support options USB_DEBUG # enable debug msgs device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) device uhid # "Human Interface Devices" device ukbd # Keyboard device umass # Disks/Mass storage - Requires scbus and da При желании из ядра можно повыкидывать еще некоторые опции. Сборку и установку ядра я выполнил такими командами: # cd /usr/src # make NO_MODULES=yes buildkernel KERCONF=EEEPC-AP # make NO_MODULES=yes installkernel KERCONF=EEEPC-AP Для уменьшения занимаемого места, ядро можно сжать: # cd /boot/kernel # gzip -9 kernel Для сравнения стоит сказать, что размер ядра после всех этих махинаций сократился примерно на 147Мб, то есть стандартное ядро GENERIC занимало на диске 150Мб, а новое занимает всего 2,7Мб (не забываем, что у используемого нетбука SSD всего 4Гб, поэтому здесь я обратил на это внимание). После установки нового ядра, компьютер необходимо перезагрузить и проверить работоспособность системы. Если все работает как нужно, то переходим к настройке беспроводного интерфейса. На предыдущей точке доступа было настроено шифрование соединения между точкой и клиентами, а также был задан пароль, необходимый для подключения. Для реализации подобного функционала в FreeBSD есть демон hostapd, конфигурационный файл которого должен находиться здесь — /etc/hostapd.conf (стоит отметить, что пример содержимого этого файла можно взять отсюда /usr/share/examples/hostapd/hostapd.conf). У меня он выглядит так: # Имя беспроводного интерфейса. interface=wlan0 # Используемый для взаимодействия с интерфейсом драйвер. driver=bsd # Уровень отладки. debug=0 # Путь к сокету, через который можно будет взаимодействовать с демоном. ctrl_interface=/var/run/hostapd # Группа, которой будет разрешен доступ к сокету. ctrl_interface_group=wheel # Имя сети. ssid=netname # Код страны. country_code=RU # Режим работы (a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g). hw_mode=g # Номер используемого для работы канала. channel=11 # Максимальное количество одновременных соединений. max_num_sta=16 # Включить WPA. # bit0 = WPA # bit1 = IEEE 802.11i/RSN (WPA2) wpa=2 # Тут надо вписать пароль, который будет использоваться для доступа. wpa_passphrase=пароль # Протокол управления ключами. wpa_key_mgmt=WPA-PSK # Разрешенные алгоритмы шифрования. wpa_pairwise=TKIP CCMP Добавляеи демон hostapd в автозагрузку: # echo 'hostapd_enable="YES"' >> /etc/rc.conf Теперь нужно настроить беспроводной интерфейс. У меня система определила его как ath0. Добавляем такие строчки в /etc/rc.conf: wlans_ath0="wlan0" create_args_wlan0="wlanmode hostap" ifconfig_wlan0="mode 11g channel 11 up" Ну и чтобы не перезагружать компьютер можно ввести такие команды в консоли: # ifconfig wlan0 create wlandev ath0 wlanmode hostap # ifconfig wlan0 mode 11g channel 11 up # service hostapd start После этих не сложных действий клиенты уже смогут подключиться к точке доступа. На данном этапе у нас есть точка доступа, но нет функционала моста. Настраиваем... Интерфейс, смотрящий в локальную сеть у меня определился, как ae0. Для поднятия моста во время старта системы добавляем в /etc/rc.conf: cloned_interfaces="bridge0" ifconfig_ae0="up" # проводной интерфейс, смотрящий в локальную сеть ifconfig_bridge0="inet 192.168.7.252 netmask 0xffffff00 addm ae0 addm wlan0 up" Ну и чтобы не перезагружать компьютер можно ввести такие команды в консоли: # ifconfig ae0 up # ifconfig bridge0 create # ifconfig bridge0 inet 192.168.7.252 netmask 0xffffff00 addm ae0 addm wlan0 up Итак, настройку операционной системы FreeBSD в качестве точки доступа можно считать завершенной. По наблюдениям: какой-либо разницы в работе между текущей и вышедшей из строя точкой доступа замечено не было, правда можно отметить небольшой плюс — это то, что нетбук нет необходимости подключать к ИБП, так как у него есть свой аккумулятор :). При необходимости фильтрации проходящего трафика через точку доступа и/или реализации QoS можно подключить файервол, например, ipfw с dummynet. Также для удобства работы, на нетбук можно навешать дополнительных сервисов, например, ssh, ftp, в общем раз стоит FreeBSD, то можно адаптировать нетбук практически под любые задачи и требования. Полезные ссылки: Про беспроводную сеть в хэндбуке. Справочное руководство по hostapd.conf Ссылки:\\ https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html\\ http://www.lissyara.su/articles/freebsd/security/hotspot\\ http://www.info-x.org/freebsd/nastroika/tochka_dostupa_na_freebsd.html