Hostapd

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
(Другие варианты настройки)
(Инструкция переработана с учётом реалий седьмой платформы. Убрано неверное "предположение".)
Строка 1: Строка 1:
-
==Настройка компьютера в качестве точки доступа для периферии (телефоны, смартфоны и т.п)==
+
=Настройка компьютера в качестве точки доступа=
-
===Источники информации, или вместо теории===
+
Инструкция переработана с учётом реалий седьмой платформы.
-
При настройке использовал в качестве руководства :
+
==Введение==
-
http://www.ibm.com/developerworks/ru/library/l-wifiencrypthostapd/
+
===Источники информации===
-
http://liberatum.ru/exclusive/25350
+
Для справки:
 +
* [http://habrahabr.ru/post/188274/ Беспроводная точка доступа, используя Linux] — Хабрахабр
 +
* [http://www.ibm.com/developerworks/ru/library/l-wifiencrypthostapd/ Простая реализация криптостойкого шифрования WiFi с помощью hostapd] — IBM
 +
* [http://liberatum.ru/exclusive/25350 Точка доступа Wi-Fi своими руками за 2 минуты] — Либератум
-
плюс готовые  заготовки конфигов в пакетах dhcpd и  hostapd.
+
=== Компоненты ===
-
==Не углубляясь в теорию==
+
# Демон hostapd, обеспечивающий работу точки доступа: пакет hostapd.
 +
# В репозитории есть несколько демонов для выдачи адресов IP. Самый удобный - dnsmasq из одноимённого пакета, он может выполнять две функции: DHCP и DNS.
 +
Более сложный вариант —  демон dhcpd, выдающий адреса IP (пакет dhcp-server) и демон named, обслуживающий запросы к DNS (пакет bind).
-
В качестве промежуточного dns используется dnsmasq.
+
=== Примечания к настройке ===
-
===Устанавливаю hostapd и dhcpd===
+
На 2015 год наиболее защищённым для WiFi является протокол шифрования [https://ru.wikipedia.org/wiki/CCMP WPA2/CCMP] (алгоритм шифрования AES). Для простоты используем вариант WPA2-PSK, поскольку WPA2-Enterprise требует службу RADIUS. Также не стоит включать WPS, поскольку он использует всего лишь шестизначный цифровой "пароль" (PIN-code) и взламывается перебором за несколько часов.
-
apt-get install hostapd dhcpd
+
-
===Создаю конфиг hostapd.conf===
+
Для простоты настройки и с целью снизить нагрузку на беспроводную сеть выделим для Wifi отдельную подсеть. Это наиболее простой вариант для случая, когда компьютер (сервер) с адаптером WiFi подключен к интернету напрямую. (Чаще всего в руководствах описана настройка моста, объединяющего проводную и беспроводную сети. Такой вариант проще в случае, когда точка доступа организуется на компьютере, подключенном в интернет через другое устройство.)
-
<source lang="text">
+
Сетевые интерфейсы управляются пакетом etc-net. Если испоьлзуется NetworkManager, используйте [[Точка_доступа_для_Андроида|другую инструкцию]].
-
##### hostapd configuration file ##############################################
+
-
# Empty lines and lines starting with # are ignored
+
-
# AP netdevice name (without 'ap' postfix, i.e., wlan0 uses wlan0ap for
+
Для примера использованы:
-
# management frames); ath0 for madwifi
+
* подсеть 198.51.100.0/24 — внешняя (адрес внешнего интерфейса 198.51.100.234, сервер DNS провайдера 198.51.100.2);
-
interface=wlan0
+
* подсеть 192.0.2.0/24 — беспроводная;
 +
* подсеть IPv6 2001:db8::/64 выделена хосту (серверу);
 +
* внешний интерфейс — enp1s0;
 +
* беспроводной интерфейс — wlp3s2;
 +
* имя беспроводной сети «WiFi on Linux», ключ сети «Many-many secret+password*phrase».
 +
Не забудьте изменить эти значения на реальные :).
-
#bridge=brbr0
+
Все команды выполняются с правами суперпользователя.
 +
==Настройка==
 +
===Устанавливаем пакеты===
 +
apt-get install hostapd dnsmasq
-
logger_syslog=-1
+
===Конфигурация hostapd===
-
logger_syslog_level=2
+
Вносим изменения в файл конфигурации /etc/hostapd/hostapd.conf в следующих параметрах:
-
logger_stdout=-1
+
<source lang="text">
-
logger_stdout_level=2
+
interface=wlp3s2
-
 
+
driver=nl80211
-
# Dump file for state information (on SIGUSR1)
+
ssid="WiFi on Linux"
-
dump_file=/tmp/hostapd.dump
+
country_code=RU
-
 
+
-
ctrl_interface=/var/run/hostapd
+
-
 
+
-
ctrl_interface_group=0
+
-
 
+
-
 
+
-
##### IEEE 802.11 related configuration #######################################
+
-
 
+
-
# SSID to be used in IEEE 802.11 management frames
+
-
ssid=MySSID
+
-
 
+
-
country_code=US
+
-
 
+
hw_mode=g
hw_mode=g
-
 
channel=1
channel=1
-
 
-
beacon_int=100
 
-
 
-
dtim_period=2
 
-
 
-
max_num_sta=255
 
-
 
-
rts_threshold=2347
 
-
 
-
fragm_threshold=2346
 
-
 
-
macaddr_acl=0
 
-
 
-
auth_algs=1
 
-
 
-
ignore_broadcast_ssid=0
 
-
 
-
 
-
# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
 
-
# for 802.11a or 802.11g networks
 
-
# These parameters are sent to WMM clients when they associate.
 
-
# The parameters will be used by WMM clients for frames transmitted to the
 
-
# access point.
 
-
#
 
-
# note - txop_limit is in units of 32microseconds
 
-
# note - acm is admission control mandatory flag. 0 = admission control not
 
-
# required, 1 = mandatory
 
-
# note - here cwMin and cmMax are in exponent form. the actual cw value used
 
-
# will be (2^n)-1 where n is the value given here
 
-
#
 
-
wmm_enabled=1
 
-
#
 
-
# WMM-PS Unscheduled Automatic Power Save Delivery [U-APSD]
 
-
# Enable this flag if U-APSD supported outside hostapd (eg., Firmware/driver)
 
-
#uapsd_advertisement_enabled=1
 
-
#
 
-
# Low priority / AC_BK = background
 
-
wmm_ac_bk_cwmin=4
 
-
wmm_ac_bk_cwmax=10
 
-
wmm_ac_bk_aifs=7
 
-
wmm_ac_bk_txop_limit=0
 
-
wmm_ac_bk_acm=0
 
-
# Note: for IEEE 802.11b mode: cWmin=5 cWmax=10
 
-
#
 
-
# Normal priority / AC_BE = best effort
 
-
wmm_ac_be_aifs=3
 
-
wmm_ac_be_cwmin=4
 
-
wmm_ac_be_cwmax=10
 
-
wmm_ac_be_txop_limit=0
 
-
wmm_ac_be_acm=0
 
-
# Note: for IEEE 802.11b mode: cWmin=5 cWmax=7
 
-
#
 
-
# High priority / AC_VI = video
 
-
wmm_ac_vi_aifs=2
 
-
wmm_ac_vi_cwmin=3
 
-
wmm_ac_vi_cwmax=4
 
-
wmm_ac_vi_txop_limit=94
 
-
wmm_ac_vi_acm=0
 
-
# Note: for IEEE 802.11b mode: cWmin=4 cWmax=5 txop_limit=188
 
-
#
 
-
# Highest priority / AC_VO = voice
 
-
wmm_ac_vo_aifs=2
 
-
wmm_ac_vo_cwmin=2
 
-
wmm_ac_vo_cwmax=3
 
-
wmm_ac_vo_txop_limit=47
 
-
wmm_ac_vo_acm=0
 
-
 
-
##### IEEE 802.1X-2004 related configuration ##################################
 
-
 
-
 
-
# EAPOL-Key index workaround (set bit7) for WinXP Supplicant (needed only if
 
-
# only broadcast keys are used)
 
-
eapol_key_index_workaround=0
 
-
 
-
 
-
##### Integrated EAP server ###################################################
 
-
 
-
# Optionally, hostapd can be configured to use an integrated EAP server
 
-
# to process EAP authentication locally without need for an external RADIUS
 
-
# server. This functionality can be used both as a local authentication server
 
-
# for IEEE 802.1X/EAPOL and as a RADIUS server for other devices.
 
-
 
-
# Use integrated EAP server instead of external RADIUS authentication
 
-
# server. This is also needed if hostapd is configured to act as a RADIUS
 
-
# authentication server.
 
-
eap_server=0
 
-
 
-
##### RADIUS client configuration #############################################
 
-
# for IEEE 802.1X with external Authentication Server, IEEE 802.11
 
-
# authentication with external ACL for MAC addresses, and accounting
 
-
 
-
# The own IP address of the access point (used as NAS-IP-Address)
 
-
own_ip_addr=127.0.0.1
 
-
 
-
 
-
##### WPA/IEEE 802.11i configuration ##########################################
 
-
 
-
# Enable WPA. Setting this variable configures the AP to require WPA (either
 
-
# WPA-PSK or WPA-RADIUS/EAP based on other configuration). For WPA-PSK, either
 
-
# wpa_psk or wpa_passphrase must be set and wpa_key_mgmt must include WPA-PSK.
 
-
# Instead of wpa_psk / wpa_passphrase, wpa_psk_radius might suffice.
 
-
# For WPA-RADIUS/EAP, ieee8021x must be set (but without dynamic WEP keys),
 
-
# RADIUS authentication server must be configured, and WPA-EAP must be included
 
-
# in wpa_key_mgmt.
 
-
# This field is a bit field that can be used to enable WPA (IEEE 802.11i/D3.0)
 
-
# and/or WPA2 (full IEEE 802.11i/RSN):
 
-
# bit0 = WPA
 
-
# bit1 = IEEE 802.11i/RSN (WPA2) (dot11RSNAEnabled)
 
wpa=2
wpa=2
-
 
+
wpa_passphrase="Many-many secret+password*phrase"
-
# WPA pre-shared keys for WPA-PSK. This can be either entered as a 256-bit
+
-
# secret in hex format (64 hex digits), wpa_psk, or as an ASCII passphrase
+
-
# (8..63 characters) that will be converted to PSK. This conversion uses SSID
+
-
# so the PSK changes when ASCII passphrase is used and the SSID is changed.
+
-
# wpa_psk (dot11RSNAConfigPSKValue)
+
-
# wpa_passphrase (dot11RSNAConfigPSKPassPhrase)
+
-
#wpa_psk=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
+
-
wpa_passphrase=My_Password
+
-
 
+
-
# Optionally, WPA PSKs can be read from a separate text file (containing list
+
-
# of (PSK,MAC address) pairs. This allows more than one PSK to be configured.
+
-
# Use absolute path name to make sure that the files can be read on SIGHUP
+
-
# configuration reloads.
+
-
#wpa_psk_file=/etc/hostapd.wpa_psk
+
-
 
+
-
# Optionally, WPA passphrase can be received from RADIUS authentication server
+
-
# This requires macaddr_acl to be set to 2 (RADIUS)
+
-
# 0 = disabled (default)
+
-
# 1 = optional; use default passphrase/psk if RADIUS server does not include
+
-
# Tunnel-Password
+
-
# 2 = required; reject authentication if RADIUS server does not include
+
-
# Tunnel-Password
+
-
#wpa_psk_radius=0
+
-
 
+
-
# Set of accepted key management algorithms (WPA-PSK, WPA-EAP, or both). The
+
-
# entries are separated with a space. WPA-PSK-SHA256 and WPA-EAP-SHA256 can be
+
-
# added to enable SHA256-based stronger algorithms.
+
-
# (dot11RSNAConfigAuthenticationSuitesTable)
+
-
#wpa_key_mgmt=WPA-PSK WPA-EAP
+
wpa_key_mgmt=WPA-PSK
wpa_key_mgmt=WPA-PSK
-
 
+
wpa_pairwise=CCMP
-
# Set of accepted cipher suites (encryption algorithms) for pairwise keys
+
wps_state=0
-
# (unicast packets). This is a space separated list of algorithms:
+
ieee80211n=1
-
# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
+
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
-
# TKIP = Temporal Key Integrity Protocol [IEEE 802.11i/D7.0]
+
-
# Group cipher suite (encryption algorithm for broadcast and multicast frames)
+
-
# is automatically selected based on this configuration. If only CCMP is
+
-
# allowed as the pairwise cipher, group cipher will also be CCMP. Otherwise,
+
-
# TKIP will be used as the group cipher.
+
-
# (dot11RSNAConfigPairwiseCiphersTable)
+
-
# Pairwise cipher for WPA (v1) (default: TKIP)
+
-
wpa_pairwise=TKIP CCMP
+
-
# Pairwise cipher for RSN/WPA2 (default: use wpa_pairwise value)
+
-
rsn_pairwise=CCMP
+
</source>
</source>
-
===Кофигурирую dhcpd ===
+
=====Комментарии к параметрам.=====
-
Редактирую или создаю  /etc/dhcp/dhcpd.conf
+
Драйвер «nl80211» подходит для большинства адаптеров WiFi, другие варианты для WiFi: hostap и madwifi.
-
<source lang="text">
+
-
# See dhcpd.conf(5) for further configuration
+
Конфигурация подразумевает, что адаптер WiFi поддерживает режим IEEE 802.11n (включены "ieee80211n=1" и "ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]", а требуемые параметры wmm_* уже настроены в конфиге).<br>
 +
Если адаптер не поддерживает 802.11n, параметры "ieee80211n" и "ht_capab" не добавляйте.<br>
 +
Параметр "ht_capab=[HT40+]" означает, что 40-мегагерцовая полоса будет использовать диапазон от несущей "вверх", это подходит для выбранного первого канала (параметр "channel=1") — в работе будет использована полоса первого и второго каналов.
-
ddns-update-style none;
+
===Конфигурация интерфейса===
 +
В etc-net за конфигурацию интерфейса wlp3s2 отвечают файлы /etc/net/ifaces/wlp3s2/options и /etc/net/ifaces/wlp3s2/ipv4address.
 +
Если каталог /etc/net/ifaces/wlp3s2 не существует, создадим его:
-
subnet 192.168.133.0 netmask 255.255.255.0 {
+
mkdir -p /etc/net/ifaces/wlp3s2
-
        option routers                  192.168.133.1;
+
-
        option subnet-mask              255.255.255.0;
+
-
        option domain-name-servers      192.168.133.1, 8.8.8.8;
+
В этом каталоге создадим файл настроек интерфейса /etc/net/ifaces/wlp3s2/options:
-
 
+
-
        range dynamic-bootp 192.168.133.128 192.168.133.254;
+
-
        default-lease-time 21600;
+
-
        max-lease-time 43200;
+
-
}
+
-
</source>
+
-
 
+
-
===Указываю, что wlan0, используется как мост ===
+
-
 
+
-
Через acc для интерфейса wlan0 указываю, что он используется как мост, управляется etcnet и имеет адрес 192.168.133.1,
+
-
[[Файл:Wlan bridge.jpg]]
+
-
 
+
-
===Указываю, что компьютер работает, как шлюз ===
+
-
Там-же в асс  (Внешние сети) указываю, что компьютер работает как шлюз, и указаю внешний интерфейс (у меня сейчас это ppp0).
+
-
[[Файл:Ppp gate.jpg]]
+
-
 
+
-
===Получившиеся конфиги в /etc/net:===
+
<source lang="text">
<source lang="text">
-
# cat /etc/net/ifaces/wlan0/options
 
TYPE=eth
TYPE=eth
-
BOOTPROTO=static
 
-
 
-
# cat /etc/net/ifaces/brwlan0/ipv4address
 
-
192.168.133.1/24
 
-
 
-
# cat /etc/net/ifaces/brwlan0/options
 
-
TYPE=bri
 
BOOTPROTO=static
BOOTPROTO=static
CONFIG_WIRELESS=yes
CONFIG_WIRELESS=yes
CONFIG_IPV4=yes
CONFIG_IPV4=yes
 +
CONFIG_IPV6=yes
 +
CONFIG_IPX=no
DISABLED=no
DISABLED=no
NM_CONTROLLED=no
NM_CONTROLLED=no
-
HOST=wlan0
 
</source>
</source>
 +
Если IPv6 не нужен — укажите "CONFIG_IPV6=no".
-
==Предположение==
+
Также создадим файл /etc/net/ifaces/wlp3s2/ipv4address, в котором назначим интерфейсу адрес IPv4:
-
Возможно в конфиге hostapd можно прописать ip адрес интерфейса, там в комментариях что-то такое есть :
+
<source lang="text">
 +
192.0.2.1/24
 +
</source>
 +
Тут мы назначили сетевой карте первый адрес подсети.
 +
===Конфигурация DHCP и DNS===
 +
=====Вариант с dnsmasq.=====
 +
Создаём файл конфигурации /etc/dnsmasq.conf:
<source lang="text">
<source lang="text">
-
....
+
local-service
-
##### RADIUS client configuration #############################################
+
domain-needed
-
# for IEEE 802.1X with external Authentication Server, IEEE 802.11
+
bogus-priv
-
# authentication with external ACL for MAC addresses, and accounting
+
listen-address=192.0.2.1
 +
dhcp-range=192.0.2.2,192.0.2.250,255.255.255.0,12h
 +
dhcp-range=2001:db8::1:2,2001:db8::1:0fff,112,12h
 +
</source>
 +
Параметр «interface=wlp3s2» не стоит использовать из-за того, что тогда dnsmasq будет слушать также и 127.0.0.1.<br>
 +
<br>
 +
Параметр «dhcp-range=2001:db8::2,2001:db8::0fff,112,12h» задаёт подсеть IPv6 (в примере указан префикс /112 как часть /64, обычно выделяемого хосту IPv4). Если IPv6 не используется, эту строку указывать не нужно.
-
# The own IP address of the access point (used as NAS-IP-Address)
+
=====Вариант с dhcp-server.=====
-
own_ip_addr=127.0.0.1
+
Создаём /etc/dhcp/dhcpd.conf
-
.....
+
<source lang="text">
 +
ddns-update-style none;
-
# Network Authentication Type
+
subnet 192.0.2.0 netmask 255.255.255.0 {
-
# This parameter indicates what type of network authentication is used in the
+
        option routers                  192.0.2.1;
-
# network.
+
        option subnet-mask              255.255.255.0;
-
# format: <network auth type indicator (1-octet hex str)> [redirect URL]
+
        option domain-name-servers      198.51.100.2, 8.8.8.8, 8.8.4.4;
-
# Network Authentication Type Indicator values:
+
        range                          192.0.2.2 192.0.2.250;
-
# 00 = Acceptance of terms and conditions
+
        default-lease-time              21600;
-
# 01 = On-line enrollment supported
+
        max-lease-time                  43200;
-
# 02 = http/https redirection
+
}
-
# 03 = DNS redirection
+
</source>
-
#network_auth_type=00
+
С такой конфигурацией клиенты будут работать с серверами DNS провайдера и публичными гуглевскими. Это может оказаться заметно медленнее, чем при использовании локального сервера DNS, но установка и настройка bind — отдельная тема.
-
#network_auth_type=02http://www.example.com/redirect/me/here/
+
-
# IP Address Type Availability
+
===Настраиваем NAT===
-
# format: <1-octet encoded value as hex str>
+
Самое простое - в графическом интерфейсе в "Центре управления системой" укажите режим работы «Шлюз» и выберите внешний интерфейс «enp1s0».
-
# (ipv4_type & 0x3f) << 2 | (ipv6_type & 0x3)
+
-
# ipv4_type:
+
-
# 0 = Address type not available
+
-
# 1 = Public IPv4 address available
+
-
# 2 = Port-restricted IPv4 address available
+
-
# 3 = Single NATed private IPv4 address available
+
-
# 4 = Double NATed private IPv4 address available
+
-
# 5 = Port-restricted IPv4 address and single NATed IPv4 address available
+
-
# 6 = Port-restricted IPv4 address and double NATed IPv4 address available
+
-
# 7 = Availability of the address type is not known
+
-
# ipv6_type:
+
-
# 0 = Address type not available
+
-
# 1 = Address type available
+
-
# 2 = Availability of the address type not known
+
-
#ipaddr_type_availability=14
+
-
# Domain Name
+
Либо выполните команды:
-
# format: <variable-octet str>[,<variable-octet str>]
+
iptables -t nat -A POSTROUTING -s 192.0.2.0/24 -o enp1s0 -j SNAT --to-source 198.51.100.234
-
#domain_name=example.com,another.example.com,yet-another.example.com
+
iptables -A INPUT -i wlp3s2 -j ACCEPT
 +
iptables -A FORWARD -i wlp3s2 -o enp1s0 -j ACCEPT
 +
iptables-save > /etc/sysconfig/iptables
 +
Первые три команды добавляют правила файрвола для трансляции и пропуска пакетов из беспроводной подсети, четвёртая сохраняет изменения на будущее.
 +
 
 +
Либо в файл /etc/sysconfig/iptables впишите строки:
 +
<source lang="text">
 +
*nat
 +
:PREROUTING ACCEPT [0:0]
 +
:INPUT ACCEPT [0:0]
 +
:OUTPUT ACCEPT [0:0]
 +
:POSTROUTING ACCEPT [0:0]
 +
-A POSTROUTING -s 192.0.2.0/24 -o enp1s0 -j SNAT --to-source 198.51.100.234
 +
COMMIT
 +
*filter
 +
:INPUT DROP [0:0]
 +
:FORWARD DROP [0:0]
 +
:OUTPUT ACCEPT [0:0]
 +
-A INPUT -f -j DROP
 +
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 +
-A INPUT -i wlp3s2 -j ACCEPT
 +
-A FORWARD -f -j DROP
 +
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 +
-A FORWARD -i wlp3s2 -o enp1s0 -j ACCEPT
 +
-A OUTPUT -f -j DROP
 +
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
 +
COMMIT
</source>
</source>
-
но я с этим не разбирался.
 
Строка 314: Строка 163:
* [[Точка_доступа_для_Андроида|Создание точки доступа с помощью NetworkManager]]
* [[Точка_доступа_для_Андроида|Создание точки доступа с помощью NetworkManager]]
* [http://forum.altlinux.org/index.php/topic,30273.0.html Настройка программной точки доступа с нуля] для ALT Linux KDesktop 6.0.2 на ноутбуке Acer Aspire 7540G-304G32Mi.
* [http://forum.altlinux.org/index.php/topic,30273.0.html Настройка программной точки доступа с нуля] для ALT Linux KDesktop 6.0.2 на ноутбуке Acer Aspire 7540G-304G32Mi.
-
 
-
Для справки:
 
-
* [http://habrahabr.ru/post/188274/ Беспроводная точка доступа, используя Linux] — Хабрахабр
 
[[Категория:HOWTO]] [[Категория:WiFi]]
[[Категория:HOWTO]] [[Категория:WiFi]]

Версия 15:20, 25 мая 2015

Содержание

Настройка компьютера в качестве точки доступа

Инструкция переработана с учётом реалий седьмой платформы.

Введение

Источники информации

Для справки:

Компоненты

  1. Демон hostapd, обеспечивающий работу точки доступа: пакет hostapd.
  2. В репозитории есть несколько демонов для выдачи адресов IP. Самый удобный - dnsmasq из одноимённого пакета, он может выполнять две функции: DHCP и DNS.

Более сложный вариант — демон dhcpd, выдающий адреса IP (пакет dhcp-server) и демон named, обслуживающий запросы к DNS (пакет bind).

Примечания к настройке

На 2015 год наиболее защищённым для WiFi является протокол шифрования WPA2/CCMP (алгоритм шифрования AES). Для простоты используем вариант WPA2-PSK, поскольку WPA2-Enterprise требует службу RADIUS. Также не стоит включать WPS, поскольку он использует всего лишь шестизначный цифровой "пароль" (PIN-code) и взламывается перебором за несколько часов.

Для простоты настройки и с целью снизить нагрузку на беспроводную сеть выделим для Wifi отдельную подсеть. Это наиболее простой вариант для случая, когда компьютер (сервер) с адаптером WiFi подключен к интернету напрямую. (Чаще всего в руководствах описана настройка моста, объединяющего проводную и беспроводную сети. Такой вариант проще в случае, когда точка доступа организуется на компьютере, подключенном в интернет через другое устройство.)

Сетевые интерфейсы управляются пакетом etc-net. Если испоьлзуется NetworkManager, используйте другую инструкцию.

Для примера использованы:

  • подсеть 198.51.100.0/24 — внешняя (адрес внешнего интерфейса 198.51.100.234, сервер DNS провайдера 198.51.100.2);
  • подсеть 192.0.2.0/24 — беспроводная;
  • подсеть IPv6 2001:db8::/64 выделена хосту (серверу);
  • внешний интерфейс — enp1s0;
  • беспроводной интерфейс — wlp3s2;
  • имя беспроводной сети «WiFi on Linux», ключ сети «Many-many secret+password*phrase».

Не забудьте изменить эти значения на реальные :).

Все команды выполняются с правами суперпользователя.

Настройка

Устанавливаем пакеты

apt-get install hostapd dnsmasq

Конфигурация hostapd

Вносим изменения в файл конфигурации /etc/hostapd/hostapd.conf в следующих параметрах:

interface=wlp3s2
driver=nl80211
ssid="WiFi on Linux"
country_code=RU
hw_mode=g
channel=1
wpa=2
wpa_passphrase="Many-many secret+password*phrase"
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wps_state=0
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40]
Комментарии к параметрам.

Драйвер «nl80211» подходит для большинства адаптеров WiFi, другие варианты для WiFi: hostap и madwifi.

Конфигурация подразумевает, что адаптер WiFi поддерживает режим IEEE 802.11n (включены "ieee80211n=1" и "ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][DSSS_CCK-40]", а требуемые параметры wmm_* уже настроены в конфиге).
Если адаптер не поддерживает 802.11n, параметры "ieee80211n" и "ht_capab" не добавляйте.
Параметр "ht_capab=[HT40+]" означает, что 40-мегагерцовая полоса будет использовать диапазон от несущей "вверх", это подходит для выбранного первого канала (параметр "channel=1") — в работе будет использована полоса первого и второго каналов.

Конфигурация интерфейса

В etc-net за конфигурацию интерфейса wlp3s2 отвечают файлы /etc/net/ifaces/wlp3s2/options и /etc/net/ifaces/wlp3s2/ipv4address. Если каталог /etc/net/ifaces/wlp3s2 не существует, создадим его:

mkdir -p /etc/net/ifaces/wlp3s2

В этом каталоге создадим файл настроек интерфейса /etc/net/ifaces/wlp3s2/options:

TYPE=eth
BOOTPROTO=static
CONFIG_WIRELESS=yes
CONFIG_IPV4=yes
CONFIG_IPV6=yes
CONFIG_IPX=no
DISABLED=no
NM_CONTROLLED=no

Если IPv6 не нужен — укажите "CONFIG_IPV6=no".

Также создадим файл /etc/net/ifaces/wlp3s2/ipv4address, в котором назначим интерфейсу адрес IPv4:

192.0.2.1/24

Тут мы назначили сетевой карте первый адрес подсети.

Конфигурация DHCP и DNS

Вариант с dnsmasq.

Создаём файл конфигурации /etc/dnsmasq.conf:

local-service
domain-needed
bogus-priv
listen-address=192.0.2.1
dhcp-range=192.0.2.2,192.0.2.250,255.255.255.0,12h
dhcp-range=2001:db8::1:2,2001:db8::1:0fff,112,12h

Параметр «interface=wlp3s2» не стоит использовать из-за того, что тогда dnsmasq будет слушать также и 127.0.0.1.

Параметр «dhcp-range=2001:db8::2,2001:db8::0fff,112,12h» задаёт подсеть IPv6 (в примере указан префикс /112 как часть /64, обычно выделяемого хосту IPv4). Если IPv6 не используется, эту строку указывать не нужно.

Вариант с dhcp-server.

Создаём /etc/dhcp/dhcpd.conf

ddns-update-style none;
 
subnet 192.0.2.0 netmask 255.255.255.0 {
        option routers                  192.0.2.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      198.51.100.2, 8.8.8.8, 8.8.4.4;
        range                           192.0.2.2 192.0.2.250;
        default-lease-time              21600;
        max-lease-time                  43200;
}

С такой конфигурацией клиенты будут работать с серверами DNS провайдера и публичными гуглевскими. Это может оказаться заметно медленнее, чем при использовании локального сервера DNS, но установка и настройка bind — отдельная тема.

Настраиваем NAT

Самое простое - в графическом интерфейсе в "Центре управления системой" укажите режим работы «Шлюз» и выберите внешний интерфейс «enp1s0».

Либо выполните команды:

iptables -t nat -A POSTROUTING -s 192.0.2.0/24 -o enp1s0 -j SNAT --to-source 198.51.100.234
iptables -A INPUT -i wlp3s2 -j ACCEPT
iptables -A FORWARD -i wlp3s2 -o enp1s0 -j ACCEPT
iptables-save > /etc/sysconfig/iptables

Первые три команды добавляют правила файрвола для трансляции и пропуска пакетов из беспроводной подсети, четвёртая сохраняет изменения на будущее.

Либо в файл /etc/sysconfig/iptables впишите строки:

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.0.2.0/24 -o enp1s0 -j SNAT --to-source 198.51.100.234
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -f -j DROP
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i wlp3s2 -j ACCEPT
-A FORWARD -f -j DROP
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlp3s2 -o enp1s0 -j ACCEPT
-A OUTPUT -f -j DROP
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT


Другие варианты настройки

 
Личные инструменты