Бортовой журнал PHP кодера
Точка доступа wifi из ноутбука
  1. Бортовой журнал PHP кодера
  2. / В помощь
  3. /

    Точка доступа 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


Перезагружаемся и радуемся.