Hostapd: различия между версиями
Нет описания правки |
|||
(не показано 19 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
;Настройка компьютера в качестве точки доступа | |||
Инструкция переработана с учётом реалий седьмой платформы. | |||
==Введение== | |||
===Источники информации=== | |||
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 минуты] — Либератум | |||
=== Компоненты === | |||
# Демон hostapd, обеспечивающий работу точки доступа: пакет hostapd. | |||
# В репозитории есть несколько демонов для выдачи адресов IP. Самый удобный - dnsmasq из одноимённого пакета, он может выполнять две функции: DHCP и DNS. | |||
Более сложный вариант — демон dhcpd, выдающий адреса IP (пакет dhcp-server) и демон named, обслуживающий запросы к DNS (пакет bind). | |||
=== | === Примечания к настройке === | ||
На 2015 год наиболее защищённым для WiFi является протокол шифрования [https://ru.wikipedia.org/wiki/CCMP 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 в следующих параметрах: | |||
<source lang="text"> | |||
interface=wlp3s2 | |||
driver=nl80211 | |||
ssid="WiFi on Linux" | |||
country_code=RU | |||
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> | |||
=====Комментарии к параметрам.===== | |||
Драйвер «nl80211» подходит для большинства адаптеров WiFi, другие варианты для WiFi: hostap и madwifi. | |||
Конфигурация подразумевает, что адаптер 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") — в работе будет использована полоса первого и второго каналов. | |||
===Конфигурация интерфейса=== | |||
В 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: | |||
<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". | |||
Также создадим файл /etc/net/ifaces/wlp3s2/ipv4address, в котором назначим интерфейсу адрес IPv4: | |||
<source lang="text"> | |||
192.0.2.1/24 | |||
</source> | |||
Тут мы назначили сетевой карте первый адрес подсети. | |||
===Конфигурация DHCP и DNS=== | |||
=====Вариант с dnsmasq.===== | |||
Создаём файл конфигурации /etc/dnsmasq.conf: | |||
<source lang="text"> | |||
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 | |||
</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 не используется, эту строку указывать не нужно. | |||
=== | =====Вариант с dhcp-server.===== | ||
Создаём /etc/dhcp/dhcpd.conf | |||
<source lang="text"> | <source lang="text"> | ||
ddns-update-style none; | ddns-update-style none; | ||
subnet 192. | subnet 192.0.2.0 netmask 255.255.255.0 { | ||
option routers 192. | 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 | range 192.0.2.2 192.0.2.250; | ||
default-lease-time 21600; | |||
range | max-lease-time 43200; | ||
default-lease-time 21600; | |||
max-lease-time 43200; | |||
} | } | ||
</source> | </source> | ||
С такой конфигурацией клиенты будут работать с серверами DNS провайдера и публичными гуглевскими. Это может оказаться заметно медленнее, чем при использовании локального сервера DNS, но установка и настройка bind — отдельная тема. | |||
=== | ===Настраиваем NAT=== | ||
Через | ==== Через Центр Управления системой ==== | ||
* Вариант настройки через Центр Управления: Для настройки NAT заходим в "Центр Управления Системы" -> "Внешние интерфейсы" (если такого пункта нет, устанавливаем alterator-net-iptables), указываем внешний интерфейс (например «enp1s0») и указываем, что компьютер выступает в роли "шлюза". | |||
=== | ==== Через iptables ==== | ||
* Вариант настройки через iptables: Выполните команды (предполагается, что внешний интерфейс носит имя {{term|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 впишите строки: | |||
<source lang="text"> | <source lang="text"> | ||
*nat | |||
:PREROUTING ACCEPT [0:0] | |||
:INPUT ACCEPT [0:0] | |||
:OUTPUT ACCEPT [0:0] | |||
:POSTROUTING ACCEPT [0:0] | |||
192. | -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> | ||
==== Через etcnet ==== | |||
* вариант настройки через {{term|etcnet}}. Правила вносятся не в файл сохранения настроек iptables, а используются средства настройки [[Etcnet/firewall| etcnet]]. | |||
Пример правил etcnet (такие правила создаёт Центр управления): | |||
<source lang= | /etc/net/ifaces/default/fw/iptables/filter/FORWARD: | ||
<source lang=text> | |||
-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 | |||
</source> | |||
/etc/net/ifaces/default/fw/iptables/filter/INPUT: | |||
(для доступа из интернета открыт порт 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> | |||
/etc/net/ifaces/default/fw/iptables/filter/OUTPUT: | |||
<source lang=text> | |||
-P ACCEPT | |||
-f -j DROP | |||
-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT | |||
</source> | |||
/etc/net/ifaces/default/fw/iptables/nat/POSTROUTING | |||
(трансляция адреса источника для пакетов, выходящих через внешний интерфейс) | |||
<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]] | |||
[[Категория: | {{Category navigation|title=Wi-Fi|category=WiFi|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 18:00, 2 июля 2015
- Настройка компьютера в качестве точки доступа
Инструкция переработана с учётом реалий седьмой платформы.
Введение
Источники информации
Для справки:
- Беспроводная точка доступа, используя Linux — Хабрахабр
- Простая реализация криптостойкого шифрования WiFi с помощью hostapd — IBM
- Точка доступа Wi-Fi своими руками за 2 минуты — Либератум
Компоненты
- Демон hostapd, обеспечивающий работу точки доступа: пакет hostapd.
- В репозитории есть несколько демонов для выдачи адресов 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
Другие варианты настройки
- Настройка точки доступа WIFI с использованием madwifi — hostapd на физическом интерфейсе (без моста)
- Создание точки доступа с помощью NetworkManager
- Настройка программной точки доступа с нуля для ALT Linux KDesktop 6.0.2 на ноутбуке Acer Aspire 7540G-304G32Mi.