Точка доступа wifi из ноутбука
Как то достался мне ASUS F5R с разбитой матрицей и нерабочей клавиатурой. Так как замена матрицы дорогостоющее дело, то было решено сделать домашний сервер-файлопомойку-торентокачалку + ко всему раздающий интернет на стационарный компьютер (по ethernet) и на ноутбук с телефоном (по wifi). В качестве ОС я выбрал ubuntu-server 11.04, так как мне нужна только консоль (матрица разбита) и в ubuntu я более менее разбираюсь, это было наиболее подходящим для меня решением. В данной статье я постараюсь описать действия по настройке программной точки доступа.
Установку и настройку самой системы я описывать не буду, а перейду сразу к делу.
В качестве точки доступа будет выступать встроенная в ноутбук wifi-карта. Стоит заметить, что не все устройства можно использовать в качестве точки доступа. Это в основном зависит от драйвера wifi-платы. К счастью драйвер моей карточки поддерживает режим точки доступа(AP-Mode).
Для начала нам нужно узнать с каким устройством мы имеем дело. Для этого выполним следующие команды:
lspci | grep Ethernet
или
lspci | grep Wireless
или
lsusb | grep Wireless
вывод будет примерно таким:
02:00.0 Ethernet controller: Atheros Communications Inc. AR5001 Wireless Network Adapter (rev 01)
06:00.0 Ethernet controller: Atheros Communications L2 Fast Ethernet (rev a0)
Как не трудно заметить моя карта на чипе Atheros. Смотрим какой драйвер используется:
dmesg | grep Atheros
Получаем:
[ 12.461222] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa0, PHY: 0x61)
В моём случае используется ath5k драйвер.
Идём Сюда и ищем в таблице наш драйвер. В моём случае драйвер ath5k поддерживает AP. Список устройств и используемых для них драйверов можно посмотреть здесь.
Устанавливаем необходимые пакеты (перед этим нужно обновиться apt-get update && apt-get upgrade):
sudo apt-get install wireless-tools bridge-utils hostapd dnsmasq iw
wireless-tools — уже был установлен.
bridge-utils — нужен для создание моста между wlan и eth интерфейсами (если вам не нужно раздавать интернет по eth то этот пакет можно не ставить).
hostapd — демон програмной точки доступа, без него ни как.
dnsmasq — будем использовать в качестве dhcp (вопрос вкуса, можете пользоваться другими dhcp-серверами).
iw — позволяет удалять старый интерфейс и создавать новый в режиме ТД.
Переводим карту в режим ТД:
sudo iw dev wlan0 del sudo iw phy phy0 interface add wlan0 type __ap
в конце второй строки перед ap 2 символа подчеркивания.
Смотрим iwconfig, значение Mode:Master, значит карта работает в режиме ТД.
Настройка моста и автоматического перевода карты в режим ТД:
sudo 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 eth1 iface eth1 inet static address 10.113.119.68 netmask 255.255.255.0 gateway 10.113.119.254 auto br0 wlan0 #Brige iface br0 inet static address 192.168.0.1 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 bridge_ports eth0 wlan0 #Wlan iface wlan0 inet manual pre-up iw dev wlan0 del pre-up iw phy phy0 interface add wlan0 type __ap
Настраиваем hostapd:
sudo nano /etc/hostapd/hostapd.conf
Приводим к виду:
interface=wlan0
bridge=br0
driver=nl80211
hw_mode=g
channel=3
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=habrahabr
ignore_broadcast_ssid=0
auth_algs=3
eapol_key_index_workaround=0
eap_server=0
wpa=3
wpa_psk_file=/etc/hostapd/wpa_psk
wpa_key_mgmt=WPA-PSK
rsn_pairwise=TKIP CCMP
В основном по названию понятно для чего какой пункт.
Опишу несколько:
interface — и так понятно.
bridge — тоже понятно (если не использовали мост, то параметр не нужен вообще).
hw_mode — режим работы.
channel — канал на котором будет работать ТД.
ssid — название ТД.
Создаём файл /etc/hostapd/wpa_psk и пишем в нем следующее:
00:00:00:00:00:00 password
Можно задать определенный пароль для определенного мак адреса.
Настроим автоматический запуск hostapd. В файле /etc/default/hostapd изменим закомментированные строки на:
RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Настроим dnsmasq:
sudo nano /etc/dnsmasq.conf
Пишем туда:
# Не обрабатывать адреса не содержашие доменной части.
domain-needed
# Не перенаправлять адреса, ведущие в немаршрутизируемое адресное пространство.
bogus-priv
# Ограничить работу dnsmasq определенным интерфейсом
interface=br0
# Включить DHCP сервер и задать диапазон назначаемых адресов.
dhcp-range=192.168.0.10,192.168.0.255,12h
Перезагружаемся и радуемся.