Skip to main content

Настройка WIFI AP на FreeBSD

Настройка точки доступа WIFI с DHCP сервером на FreeBSD 10.1

wifi freebsd

Первым делом обновим порты/пакеты.

# 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=""

Готово!

freebsd, wifi, router