Hostapd
Материал из ALT Linux Wiki
(→Другие варианты настройки) |
(Инструкция переработана с учётом реалий седьмой платформы. Убрано неверное "предположение".) |
||
Строка 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 | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | ssid= | + | |
- | + | ||
- | country_code= | + | |
- | + | ||
hw_mode=g | hw_mode=g | ||
- | |||
channel=1 | channel=1 | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
wpa=2 | wpa=2 | ||
- | + | wpa_passphrase="Many-many secret+password*phrase" | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
wpa_key_mgmt=WPA-PSK | wpa_key_mgmt=WPA-PSK | ||
- | + | wpa_pairwise=CCMP | |
- | + | wps_state=0 | |
- | + | ieee80211n=1 | |
- | + | ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40] | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
</source> | </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"> | <source lang="text"> | ||
- | |||
TYPE=eth | TYPE=eth | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
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 | ||
- | |||
</source> | </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"> | <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> | ||
+ | Параметр «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"> |
+ | 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; | |
- | + | } | |
- | + | </source> | |
- | + | С такой конфигурацией клиенты будут работать с серверами 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 впишите строки: | ||
+ | <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. | ||
- | |||
- | |||
- | |||
[[Категория:HOWTO]] [[Категория:WiFi]] | [[Категория:HOWTO]] [[Категория:WiFi]] |
Версия 15:20, 25 мая 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
Самое простое - в графическом интерфейсе в "Центре управления системой" укажите режим работы «Шлюз» и выберите внешний интерфейс «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
Другие варианты настройки
- Настройка точки доступа WIFI с использованием madwifi — hostapd на физическом интерфейсе (без моста)
- Создание точки доступа с помощью NetworkManager
- Настройка программной точки доступа с нуля для ALT Linux KDesktop 6.0.2 на ноутбуке Acer Aspire 7540G-304G32Mi.