Настройка WIFI AP на FreeBSD
Настройка точки доступа WIFI с DHCP сервером на FreeBSD 10.1
Первым делом обновим порты/пакеты.
# pkg update
# pkg upgrade
# portsnap fetch
# portsnap extract
После этого пересоберем ядро с поддержкой PF. с его помощью будем делать NAT.
Включаем маршрутизацию на сервере. Для этого добавим в файл /etc/sysctl.conf
+net.inet.ip.forwarding=1
Перезагружаемся.
Поднимем WIFI на интерфейсе.
Посмотрим как называется наш интерфейс:
# ifconfig
ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
ether c0:4a:00:51:88:ce
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
status: no carrier
# dmesg | grep ath0
ath0: <Atheros 9287> mem 0xfe8f0000-0xfe8fffff irq 16 at device 0.0 on pci1
ath0: [HT] enabling HT modes
ath0: [HT] enabling short-GI in 20MHz mode
ath0: [HT] 1 stream STBC receive enabled
ath0: [HT] 1 stream STBC transmit enabled
ath0: [HT] 2 RX streams; 2 TX streams
ath0: AR9287 mac 384.2 RF5133 phy 15.15
ath0: 2GHz radio: 0x0000; 5GHz radio: 0x00c0
Имя нашего интерфейса ath0
Пропишем следующие строки в терминале:
# ifconfig wlan0 create wlandev ath0 wlanmode hostap
# ifconfig wlan0 mode 11ng channel 7:ht/40+ country RU regdomain etsi txpower 30
# ifconfig wlan0 inet 10.10.41.1 netmask 255.255.255.0
Для автоматической загрузки параметров необходимо в rc.conf
добавить следующие строки:
wlans_ath0="wlan0"
create_args_wlan0="wlanmode hostap mode 11ng channel 7:ht/40+ country RU regdomain etsi txpower 30"
ifconfig_wlan0="inet 10.10.41.1 netmask 255.255.255.0"
Небольшое пояснение:
mode 11ng - Режим работы WIFI.
channel 7:ht/40+ - Канал и полоса WIFI (Посмотреть список каналов можно с помощью команды ifconfig -v wlan0 list channel).
txpower 30 - Выходная мощность.
Создадим файл /etc/hostapd.conf
. Он необходим для авторизации.
interface=wlan0
ctrl_interface=/var/run/hostapd
ctrl_interface_group=wheel
ssid=freebsd
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_passphrase=ВАШ_ПАРОЛЬ
wpa_pairwise=TKIP CCMP
Добавим hostapd
в автозагрузку и включим его:
# sysrc hostapd_enable=YES
# /etc/rc.d/hostapd start
Установим DHCP для раздачи адресов в сети:
#pkg install isc-dhcp43-server
и настроим:
#ee /usr/local/etc/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 10.10.41.0 netmask 255.255.255.0 {
range 10.10.41.10 10.10.41.100;
option domain-name-servers Ваши_ДНС;
option routers 10.10.41.1;
}
В rc.conf
добавим следующие строки:
dhcpd_enable="YES"
dhcpd_flags="-q"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_ifaces="wlan0"
dhcpd_withumask="022"
И запустим DHCP сервер:
# /usr/local/etc/rc.d/isc-dhcpd start
Добавим правила для PF:
# ee /etc/pf.conf
ext_if="re0" #Ваш внешний интерфейс
wifi_if="wlan0"
set fingerprints "/etc/pf.os"
set block-policy drop
set skip on lo0
scrub in on $ext_if all no-df
scrub on $ext_if all reassemble tcp
nat on $ext_if from <local_net> to <internet> -> $ext_if # Наш NAT
block all # Запрещаем по умолчанию всё то что не разрешено
pass out on $ext_if proto tcp modulate state
pass out on $ext_if proto { udp icmp } keep state
pass out on { $wifi_if } all
pass in on { $wifi_if } all
Добавим в автозапуск PF и перезагрузим:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
Готово!