Debian iwlwifi wifi настройка точки доступа

Форум Сервер Дома

[How To] Поднимаем полноценную Wi-Fi точку доступа на Debian 7

Правила форума
Условием использования нашего форума, является соблюдение настоящих Правил форума.

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам, а вы рискуете получить предупреждение.

[How To] Поднимаем полноценную Wi-Fi точку доступа на Debian 7

Поднимаем полноценную Wi-Fi точку доступа на Debian 7
Немного предыстории.
Озаботился я организацией точки доступа (далее просто ТД) давно, а у домашний роутер был без Wi-Fi. Была, конечно, мысль приобрести «навороченный» девайс, так сказать, «на вырост» и забыть. Поход по магазинам и etc. не увенчалась успехом — не позарился я на китайщину, а на топовые модели не глядел даже. Жаба не позволила.
И тут пришла в голову другая мысль. Ведь есть у меня PCI-карточки Wi-Fi и, если они могут принимать WiFi, значит должны его раздавать. Не долго думая, пошукал по сусекам и у меня оказалось в распоряжении 2 карточки:

Не буду описывать все этапы воплощения задуманного в жизнь. Поиск в интернете по фразе «создание точки доступа» давал много информации из которой я испробовал почти всё.
Первый заход был попыткой создания ТД на Windows 7 (XP устарела уже и, как оказалось, не умеет такого).
Результат в итоге плачевный. Слабый сигнал, в трёх метрах от ТД связь пропадала. Часто без причины падала сеть.

Второй заход, более удачный, был попыткой создания ТД на Debian 7.
Итог: Сигнал не пропадал по всей квартире. Сеть была стабильной. Интернет был доступен. Чего ещё надо-то?
А вот не угодил мне этот способ. Интернет есть, а ресурсы локальной сети напрямую недоступны, так как ТД имела свою сеть и была за NAT. непорядок.

Немного теории.
Совместимость оборудования
Как оказалось, не каждая карта Wi-Fi умеет работать в режиме Master, т.е. как ТД. Китайский noname сразу был назначен карточкой для проверки сети из-за невзрачного внешнего вида и хлипкой антеннки. А вот DWL-G550 и выглядела солидно на вид, и на деле имела нужное нам свойства — умела раздавать Wi-Fi.

А как определить уже установленное оборудование на предмет работы в AP (Acsses Point англ. — Точка Доступа)? Всё просто.
Идём в консоль (у нас же Debian, кстати, для Ubuntu тоже подходит ) и набираем команды:

$ lspci -vnn | grep Ethernet # или $ lspci -vnn | grep Wireless # или для usb адаптера $ lsusb -vnn | grep Wireless
 lspci -vnn | grep Wireless 00:0a.0 Ethernet controller [0200]: Atheros Communications Inc. AR5212/AR5213 Wireless Network Adapter [168c:0013] (rev 01) Subsystem: D-Link System Inc D-Link AirPremier DWL-G550 Wireless PCI Adapter [1186:3a18] 
dmesg | grep Atheros [ 6.671101] ath5k phy0: Atheros AR2414 chip found (MAC: 0x79, PHY: 0x45) 

ath5k и есть наш драйвер. Дальше идём на ресурс wireless.kernel.org (Users → Devices → PCI devices… и в списке Device list найти и выбрать ath5k.) и узнаем, что работает для нашего устройства, а что нет. Затем нужно обратиться к таблице «Currently supported PCI ID list with respective status report on basic-testing as defined above» в которой по своему значению PCI ID (то, что написано в квадратных скобках в выводе команды lspci -vnn | grep Wireless, т.е. в этом примере — 168c:0013) узнать, что ваш адаптер может, а что нет. Если вы обнаружили, что по той или иной причине ваш драйвер не поддерживает режим ТД — не стоит отчаиваться. В некоторых случаях, например, в случае с адаптерами от Atheros, вы можете использовать другой драйвер, например Madwifi, который скорее всего будет нормально работать в режиме ТД, но имеет ряд особенностей в настройке с hostapd.

Читайте также:  WiFi репитер: расширяем домашнюю сеть

Установка и настройка программ.
Нам понадобится минимум пакетов:

apt-get install wireless-tools bridge-utils hostapd iw
nano /etc/network/interfaces 
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback #Это старые настройки, я их #закомментировал #------------------------------------------------------------------------------------------- #auto eth0 #iface eth0 inet static # address 192.168.1.122 # netmask 255.255.255.0 # network 192.168.1.0 # broadcast 192.168.1.255 # gateway 192.168.1.1 # # dns-* options are implemented by the resolvconf package, if installed # dns-nameservers 192.168.1.1 # dns-search lan #------------------------------------------------------------------------------------------- # С этого места начинаются наши настройки для ТП auto eth0 iface eth0 inet manual auto wlan0 br0 # Беспроводной интерфейс iface wlan0 inet manual pre-up iw dev wlan0 del pre-up iw phy phy0 interface add wlan0 type __ap # Мост. iface br0 inet static address 192.168.1.122 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns-nameservers 192.168.1.1 bridge_ports eth0 wlan0 

Если вы настраиваете это дело удалённо, будьте внимательны, ибо после перезагрузки сервера в случае ошибки придётся цеплять к серверу монитор, клавиатуру и исправлять.

Теперь настроим hostapd, который «рулит» нашей картой Wi-Fi.
Укажем путь к конфигу

# Defaults for hostapd initscript # # See /usr/share/doc/hostapd/README.Debian for information about alternative # methods of managing hostapd. # # Uncomment and set DAEMON_CONF to the absolute path of a hostapd configuration # file and hostapd will be started during system boot. An example configuration # file can be found at /usr/share/doc/hostapd/examples/hostapd.conf.gz # DAEMON_CONF="/etc/hostapd/hostapd.conf" # Additional daemon options to be appended to hostapd command:- # -d show more debug messages (-dd for even more) # -K include key data in debug messages # -t include timestamps in some debug messages # # Note that -B (daemon mode) and -P (pidfile) options are automatically # configured by the init.d script and must not be added to DAEMON_OPTS. # #DAEMON_OPTS="" 
nano /etc/hostapd/hostapd.conf
# Интерфейс нашей карточки interface=wlan0 # Имя используемого моста bridge=br0 # Имя драйвера driver=nl80211 # Код страны country_code=RU # Включаем интернациональные # роуминговые расширения ieee80211d=1 # Режим работы hw_mode=g # Номер канала channel=11 # Логи всех модулей logger_syslog=-1 # Только информация logger_syslog_level=2 # Логи всех модулей logger_stdout=-1 # Только информация logger_stdout_level=2 # dump_file=/tmp/hostapd.dump # ctrl_interface=/var/run/hostapd # ctrl_interface_group=0 # Имя нашей ТД ssid=My Wlan # Если надо скрыть определение # имени ТД, выставить 1 ignore_broadcast_ssid=0 # auth_algs=3 # eapol_key_index_workaround=0 # eap_server=0 # wpa=3 # rsn_pairwise=CCMP #Пароль от 8 до 63 символов wpa_passphrase=My_Big_Secret wpa_key_mgmt=WPA-PSK #необязательная часть #включаем фильтрацию по MAC, это необязательная опция macaddr_acl=1 #указываем файл со списком разрешенных MAC #подключиться к нашей ТД #смогут только клиенты из списка accept_mac_file=/etc/hostapd/accept # 

На самом деле настроек в файле hostapd.conf может быть на много больше и в разных вариантах.
Насколько смог, собрал основные параметры и настройки с таблицу.
Смотрите под спойлером.

Читайте также:  Ближайший пароль от вай фай

Кстати, на будущее, если что-то «наколбасили» в конфиге и hostapd категорически не желает запускаться, не отчаивайтесь. Если hostapd запустить с ключом -d и указать наш многострадальный конфиг, то можно увидеть где засела ошибка. Например:

 service hostapd restart [ ok ] Stopping advanced IEEE 802.11 management: hostapd. [FAIL] Starting advanced IEEE 802.11 management: hostapd failed!
 hostapd -d /etc/hostapd/hostapd.conf random: Trying to read entropy from /dev/random Configuration file: /etc/hostapd/hostapd.conf WPA-PSK enabled, but PSK or passphrase is not configured. 1 errors found in configuration file '/etc/hostapd/hostapd.conf' 

Оказалось, то забыл дописать строку wpa_passphrase с паролем.

Настройка iptables и ip форвардинга
Далее, нам нужно настроить хождение всех сетевых пакетов между интерфейсами в правильном направлении. Для этого создадим файл с правилами:

nano /etc/network/if-up.d/firewall
#! /bin/sh # ####################### # Настройка интерфейсов ####################### # Internet (Поменяйте на ваш интернет-интерфейс) Inet_Interface="eth0" # Lan (поменяйте на ваш интерфейс сетевого моста) Lan_Interface="br0" # Lo (локальный интефейс - петля) Lo_Interface="lo" # Описываем путь до iptables IPT="/sbin/iptables" # Очищаем текущие правила (если вдруг есть какие-то правила) $IPT -F $IPT -t nat -F $IPT -t mangle -F $IPT -X $IPT -t nat -X $IPT -t mangle -X # Задаем политики по умолчанию $IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT DROP # Создаем цепочку для обработки неправильных пакетов. # bad_packets $IPT -N bad_packets $IPT -A bad_packets -p tcp --tcp-flags SYN,ACK SYN,ACK \ -m state --state NEW -j REJECT --reject-with tcp-reset $IPT -A bad_packets -p tcp ! --syn -m state --state NEW \ -j LOG --log-prefix "New not syn:" $IPT -A bad_packets -p tcp ! --syn -m state --state NEW -j DROP # Создаем цепочку для обработки входящих (из интернета) tcp соединений. # tcp_p $IPT -N tcp_p # Чтобы, например, разрешить подключаться к нашему шлюзу из интернета по ssh: ##ssh="22" ##ssh_ip_allowed="0/0" ##$IPT -A tcp_p -p tcp -s $ssh_ip_allowed --dport $ssh -j ACCEPT $IPT -A tcp_p -p tcp -s 0/0 -j DROP # Создаем цепочку для обработки входящих (из интернета) udp соединений. # udp_p $IPT -N udp_p $IPT -A udp_p -p udp -s 0/0 -j DROP # Создаем цепочку для обработки входящих (из интернета) icmp соединений. # icmp_p $IPT -N icmp_p # Разрешаем "пинговать" наш шлюз из интернета: $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 8 -j ACCEPT $IPT -A icmp_p -p icmp -s 0/0 --icmp-type 11 -j ACCEPT $IPT -A icmp_p -p icmp -s 0/0 -j DROP # Цепочка INPUT $IPT -A INPUT -p tcp -j bad_packets $IPT -A INPUT -p all -i $Lan_Interface -j ACCEPT $IPT -A INPUT -p all -i $Lo_Interface -j ACCEPT $IPT -A INPUT -p all -i $Inet_Interface -m state --state \ ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -p tcp -i $Inet_Interface -j tcp_p $IPT -A INPUT -p udp -i $Inet_Interface -j udp_p $IPT -A INPUT -p icmp -i $Inet_Interface -j icmp_p # Цепочка FORWARD $IPT -A FORWARD -p tcp -j bad_packets $IPT -A FORWARD -p all -i $Lan_Interface -j ACCEPT $IPT -A FORWARD -p all -i $Lo_Interface -j ACCEPT $IPT -A FORWARD -p all -i $Inet_Interface -m state \ --state ESTABLISHED,RELATED -j ACCEPT # Цепочка OUTPUT $IPT -A OUTPUT -p tcp -j bad_packets $IPT -A OUTPUT -p all -o $Inet_Interface -j ACCEPT $IPT -A OUTPUT -p all -o $Lan_Interface -j ACCEPT $IPT -A OUTPUT -p all -o $Lo_Interface -j ACCEPT # Цепочка POSTROUTING (таблица nat) $IPT -t nat -A POSTROUTING -o $Inet_Interface -j MASQUERADE # Включаем перенаправление ipv4. echo "1" > /proc/sys/net/ipv4/ip_forward echo "Firewall started" exit 0 
chmod +x /etc/network/if-up.d/firewall

В принципе, на этом наши мучения заканчиваются. Перепроверьте все файлы, где делали правки и можете смело перезагружать сервер.
После перезарузки сервера наша ТД поднимется автоматически и будет находиться в адресном пространстве локальной сети.

Читайте также:  Класс устройства wi fi

Windows 7 2014-10-11 12-06-22 Центр управления сетями и общим доступом.png (11.23 КБ) 9680 просмотров

Источник

Оцените статью
Adblock
detector