Hostapd: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показано 18 промежуточных версий 3 участников)
Строка 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
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]
</source>


beacon_int=100
=====Комментарии к параметрам.=====


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


max_num_sta=255
Конфигурация подразумевает, что адаптер 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") — в работе будет использована полоса первого и второго каналов.


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


fragm_threshold=2346
mkdir -p /etc/net/ifaces/wlp3s2


macaddr_acl=0
В этом каталоге создадим файл настроек интерфейса /etc/net/ifaces/wlp3s2/options:
<source lang="text">
TYPE=eth
BOOTPROTO=static
CONFIG_WIRELESS=yes
CONFIG_IPV4=yes
CONFIG_IPV6=yes
CONFIG_IPX=no
DISABLED=no
NM_CONTROLLED=no
</source>
Если IPv6 не нужен — укажите "CONFIG_IPV6=no".


auth_algs=1
Также создадим файл /etc/net/ifaces/wlp3s2/ipv4address, в котором назначим интерфейсу адрес IPv4:
<source lang="text">
192.0.2.1/24
</source>
Тут мы назначили сетевой карте первый адрес подсети.


ignore_broadcast_ssid=0
===Конфигурация DHCP и DNS===
 
=====Вариант с dnsmasq.=====
 
Создаём файл конфигурации /etc/dnsmasq.conf:
# Default WMM parameters (IEEE 802.11 draft; 11-03-0504-03-000e):
<source lang="text">
# for 802.11a or 802.11g networks
local-service
# These parameters are sent to WMM clients when they associate.
domain-needed
# The parameters will be used by WMM clients for frames transmitted to the
bogus-priv
# access point.
listen-address=192.0.2.1
#
dhcp-range=192.0.2.2,192.0.2.250,255.255.255.0,12h
# note - txop_limit is in units of 32microseconds
dhcp-range=2001:db8::1:2,2001:db8::1:0fff,112,12h
# 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 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
 
# Set of accepted cipher suites (encryption algorithms) for pairwise keys
# (unicast packets). This is a space separated list of algorithms:
# CCMP = AES in Counter mode with CBC-MAC [RFC 3610, IEEE 802.11i/D7.0]
# 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>
Параметр «interface=wlp3s2» не стоит использовать из-за того, что тогда dnsmasq будет слушать также и 127.0.0.1.<br>
<br>
Параметр «dhcp-range=2001:db8::2,2001:db8::0fff,112,12h» задаёт подсеть IPv6 (в примере указан префикс /112 как часть /64, обычно выделяемого хосту IPv4). Если IPv6 не используется, эту строку указывать не нужно.


===Кофигурирую dhcpd ===
=====Вариант с dhcp-server.=====
 
Создаём /etc/dhcp/dhcpd.conf
Редактирую или создаю  /etc/dhcp/dhcpd.conf
<source lang="text">
<source lang="text">
# See dhcpd.conf(5) for further configuration
ddns-update-style none;
ddns-update-style none;


subnet 192.168.133.0 netmask 255.255.255.0 {
subnet 192.0.2.0 netmask 255.255.255.0 {
         option routers                  192.168.133.1;
         option routers                  192.0.2.1;
         option subnet-mask              255.255.255.0;
         option subnet-mask              255.255.255.0;
 
         option domain-name-servers      198.51.100.2, 8.8.8.8, 8.8.4.4;
         option domain-name-servers      192.168.133.1, 8.8.8.8;
         range                           192.0.2.2 192.0.2.250;
 
         default-lease-time             21600;
         range dynamic-bootp 192.168.133.128 192.168.133.254;
         max-lease-time                 43200;
         default-lease-time 21600;
         max-lease-time 43200;
}
}
</source>
</source>
С такой конфигурацией клиенты будут работать с серверами DNS провайдера и публичными гуглевскими. Это может оказаться заметно медленнее, чем при использовании локального сервера DNS, но установка и настройка bind — отдельная тема.
===Настраиваем NAT===


===Указываю, что wlan0, используется как мост ===
==== Через Центр Управления системой ====
* Вариант настройки через Центр Управления: Для настройки NAT заходим в "Центр Управления Системы" -> "Внешние интерфейсы" (если такого пункта нет, устанавливаем alterator-net-iptables), указываем внешний интерфейс (например «enp1s0») и указываем, что компьютер выступает в роли "шлюза".


Через acc для интерфейса wlan0 указываю, что он используется как мост, управляется etcnet и имеет адрес 192.168.133.1,
[[Файл:Wlan bridge.jpg]]


===Указываю, что компьютер работает, как шлюз ===
==== Через iptables ====
  Там-же в асс  (Внешние сети) указываю, что компьютер работает как шлюз, и указаю внешний интерфейс (у меня сейчас это ppp0).
* Вариант настройки через iptables: Выполните команды (предполагается, что внешний интерфейс носит имя  {{term|enp1s0}}):
[[Файл:Ppp gate.jpg]]
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/net:===
Либо в файл /etc/sysconfig/iptables впишите строки:
<source lang="text">
<source lang="text">
# cat /etc/net/ifaces/wlan0/options
*nat
TYPE=eth
:PREROUTING ACCEPT [0:0]
BOOTPROTO=static
: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>
 
==== Через etcnet ====
* вариант настройки через {{term|etcnet}}. Правила вносятся не в файл сохранения настроек iptables, а используются средства настройки [[Etcnet/firewall| etcnet]].


# cat /etc/net/ifaces/brwlan0/ipv4address
Пример правил etcnet (такие правила создаёт Центр управления):
192.168.133.1/24


# cat /etc/net/ifaces/brwlan0/options
/etc/net/ifaces/default/fw/iptables/filter/FORWARD:
TYPE=bri
<source lang=text>
BOOTPROTO=static
-P ACCEPT
CONFIG_WIRELESS=yes
-f -j DROP
CONFIG_IPV4=yes
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
DISABLED=no
-m physdev --physdev-is-bridged -j ACCEPT
NM_CONTROLLED=no
-i enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
HOST=wlan0
-i enp1s0 -j DROP
</source>
</source>


==Предположение==
/etc/net/ifaces/default/fw/iptables/filter/INPUT:
Возможно в конфиге hostapd можно прописать ip адрес интерфейса, там в комментариях что-то такое есть :
(для доступа из интернета открыт порт 22, обычно используемый sshd)
<source lang=text>
-P ACCEPT
-f -j DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-i enp1s0 -p tcp --dport 22 -j ACCEPT
-i enp1s0 -p udp --dport 22 -j ACCEPT
-i enp1s0 -p icmp -j ACCEPT
-i enp1s0 -j DROP
</source>


<source lang="text">
/etc/net/ifaces/default/fw/iptables/filter/OUTPUT:
....
<source lang=text>
##### RADIUS client configuration #############################################
-P ACCEPT
# for IEEE 802.1X with external Authentication Server, IEEE 802.11
-f -j DROP
# authentication with external ACL for MAC addresses, and accounting
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 
</source>
# The own IP address of the access point (used as NAS-IP-Address)
own_ip_addr=127.0.0.1
.....
 
# Network Authentication Type
# This parameter indicates what type of network authentication is used in the
# network.
# format: <network auth type indicator (1-octet hex str)> [redirect URL]
# Network Authentication Type Indicator values:
# 00 = Acceptance of terms and conditions
# 01 = On-line enrollment supported
# 02 = http/https redirection
# 03 = DNS redirection
#network_auth_type=00
#network_auth_type=02http://www.example.com/redirect/me/here/


# IP Address Type Availability
# format: <1-octet encoded value as hex str>
# (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
/etc/net/ifaces/default/fw/iptables/nat/POSTROUTING
# format: <variable-octet str>[,<variable-octet str>]
(трансляция адреса источника для пакетов, выходящих через внешний интерфейс)
#domain_name=example.com,another.example.com,yet-another.example.com
<source lang=text>
-o enp1s0 -j MASQUERADE
</source>
</source>
но я с этим не разбирался.


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


* [[Madwifi|Настройка точки доступа WIFI с использованием madwifi]] — hostapd на физическом интерфейсе (без моста)
* [[Точка_доступа_для_Андроида|Создание точки доступа с помощью 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.


 
[[Категория:WiFi]]
[[Категория:HOWTO]]
{{Category navigation|title=Wi-Fi|category=WiFi|sortkey={{SUBPAGENAME}}}}

Текущая версия от 18:00, 2 июля 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

Через Центр Управления системой

  • Вариант настройки через Центр Управления: Для настройки NAT заходим в "Центр Управления Системы" -> "Внешние интерфейсы" (если такого пункта нет, устанавливаем alterator-net-iptables), указываем внешний интерфейс (например «enp1s0») и указываем, что компьютер выступает в роли "шлюза".


Через iptables

  • Вариант настройки через iptables: Выполните команды (предполагается, что внешний интерфейс носит имя 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

Через etcnet

  • вариант настройки через etcnet. Правила вносятся не в файл сохранения настроек iptables, а используются средства настройки etcnet.

Пример правил etcnet (такие правила создаёт Центр управления):

/etc/net/ifaces/default/fw/iptables/filter/FORWARD:

-P ACCEPT
-f -j DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-m physdev --physdev-is-bridged -j ACCEPT
-i enp1s0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-i enp1s0 -j DROP

/etc/net/ifaces/default/fw/iptables/filter/INPUT: (для доступа из интернета открыт порт 22, обычно используемый sshd)

-P ACCEPT
-f -j DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-i enp1s0 -p tcp --dport 22 -j ACCEPT
-i enp1s0 -p udp --dport 22 -j ACCEPT
-i enp1s0 -p icmp -j ACCEPT
-i enp1s0 -j DROP

/etc/net/ifaces/default/fw/iptables/filter/OUTPUT:

-P ACCEPT
-f -j DROP
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT


/etc/net/ifaces/default/fw/iptables/nat/POSTROUTING (трансляция адреса источника для пакетов, выходящих через внешний интерфейс)

-o enp1s0 -j MASQUERADE

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