Как создавать точку доступа на домашнем шлюзе, я уже описывал ранее. Теперь хотелось бы описать более конкретный случай поднятия "оперативной" точки доступа из соответствующего USB-адаптера (например с "рабочей" машины необходимо обеспечить доступ в интернет с телефона или планшета, а корпоративной точки доступа нет, ну или банально перекинуть файлы на эти устройства, а кабеля под рукой нет). Ну что ж, приступим. Все операции проводятся на системе Ubuntu 12.04 (т.е. все операции будут полностью совместимы с любыми Debian-based дистрибутивами).
В качестве USB-свистка использовался Edimax EW-7722UTn. Обратите внимание на то, что чип в адаптере обязательно должен поддерживать режим AP. Узнать это можно, вставив сам адаптер и выполнив в консоли:
$ sudo apt-get install iw
$ iw phy
Найдя строку "Supported interface modes:", посмотрите, есть ли там "AP". Если есть, то адаптер поддерживает необходимый нам режим работы. Для примера, для нашего адаптера этот список выглядит следующим образом:
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* WDS
* monitor
* mesh point
* IBSS
* managed
* AP
* AP/VLAN
* WDS
* monitor
* mesh point
Убедившись в поддержке режима, можно приступать к конфигурации. Она не займет много времени. Для начала установим необходимые пакеты:
$ sudo apt-get install udhcpd hostapd
Далее настроим WiFi-интерфейс на работу со статической конфигурацией.
$ nano /etc/network/interfaces
И добавляем туда такие строки:
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.139.1
netmask 255.255.255.0
iface wlan0 inet static
address 192.168.139.1
netmask 255.255.255.0
Обратите внимание, что ваш интерфейс может быть и не wlan0 (обычно в случае, если в компьютере уже были когда-либо установлены другие wifi-адаптеры), но в большинстве случаев адрес именно wlan0.
Теперь можно приступить к настройке фаервола на работу с NAT, а также IP-форвардинг. Делается это очень просто:
$ sudo iptables -t nat -A POSTROUTING -s 192.168.139.0/24 -j MASQUERADE
$ sudo iptables -t mangle -A FORWARD -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1440:65495 -j TCPMSS --clamp-mss-to-pmtu
eth0 - это адрес сетевого интерфейса, с которого машина выходит в интернет; 192.168.139.0/24 - сеть для которой будет разрешен NAT. Разумеется, что вы можете вписать сюда какую угодно сеть, которая Вам будет удобна (например чтобы избежать конфликтов маршрутизации в вашей корпоративной сети, если она сконфигурирована на эту же подсеть) из частного диапазона адресов (10.*.*.*, 192.168.*.*, 172.16.*.*, 169.254.*.*). Дабы правила фаервола не потерялись после перезагрузки, их можно сохранить с помощью:
$ sudo iptables-save >/etc/iptables.conf
И добавить в /etc/rc.local (перед exit 0) следующее:
/sbin/iptables-restore </etc/iptables.conf
Далее настроим IP-форвардинг:
$ sudo nano /etc/sysctl.conf
Раскомментируем строки: net.ipv4.ip_forward=1 и net.ipv4.tcp_syncookies=1, сохраняем файл. Применяем изменения:
$ sudo sysctl -p
Теперь приступим к настройке hostapd (программы точки доступа). Редактируем конфиг:
$ sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=inox_ap
hw_mode=g
channel=7
wpa=3
wpa_passphrase=muzon8850
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
ieee80211n=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+][TX-STBC][RX-STBC12]
wpa_group_rekey=3600
driver=nl80211
ssid=inox_ap
hw_mode=g
channel=7
wpa=3
wpa_passphrase=muzon8850
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
ieee80211n=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+][TX-STBC][RX-STBC12]
wpa_group_rekey=3600
Параметры описывать не буду, т.к. они уже были описаны мною ранее в статье по настройке шлюза на базе Linux. Теперь нам осталось только настроить DHCP-сервер udhcpd.
$ sudo nano /etc/udhcpd.conf
start 192.168.139.2
end 192.168.139.12
interface wlan0
opt dns 10.128.8.1 8.8.8.8
option subnet 255.255.255.0
opt router 192.168.139.1
option dns 8.8.4.4 # Третий DNS (если нужен)
option lease 86400
На последок включаем сервисы (показано верное содержимое файлов).
$ cat /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
$ cat /etc/default/udhcpd
DHCPD_ENABLED="yes"
И создаем удобный скрипт для запуска и остановки точки доступа:
$ cat ~/wifiap
#!/bin/bash
case "$1" in
start)
echo "Configuring WLAN interface..."
sudo ifconfig wlan0 down && sleep 1 && sudo ifup -v wlan0
echo "Starting needed services...."
sudo /etc/init.d/hostapd start
sudo /etc/init.d/udhcpd start
;;
stop)
echo "Stopping needed services..."
sudo /etc/init.d/hostapd stop
sudo /etc/init.d/udhcpd stop
echo "Deconfiguring WLAN interfaces..."
sudo ifdown wlan0
;;
*)
echo "WLAN FastAP v0.1"
echo "Valid script parameters are: start, stop"
;;
esac
case "$1" in
start)
echo "Configuring WLAN interface..."
sudo ifconfig wlan0 down && sleep 1 && sudo ifup -v wlan0
echo "Starting needed services...."
sudo /etc/init.d/hostapd start
sudo /etc/init.d/udhcpd start
;;
stop)
echo "Stopping needed services..."
sudo /etc/init.d/hostapd stop
sudo /etc/init.d/udhcpd stop
echo "Deconfiguring WLAN interfaces..."
sudo ifdown wlan0
;;
*)
echo "WLAN FastAP v0.1"
echo "Valid script parameters are: start, stop"
;;
esac
Сохраняем его в удобном месте и делаем ссылку в /usr/bin чтобы можно было запускать в любом месте, а также делаем его исполняемым.
$ chmod +x /full/path/to/script && sudo ln -s /full/path/to/script /usr/bin/wifiap
/full/path/to/script - соответственно ПОЛНЫЙ путь к данному скрипту.
Теперь можно точку доступа можно запускать так:
$ wifiap start
Останавливать так:
$ wifiap stop
Комментариев нет:
Отправить комментарий