Такие производители, как Asus, D-Link, Tp-link и прочие выпускают прошивки на свою продукцию ограниченное количество времени. Это значит, что уязвимости и баги остаются на своем месте годами. Более того, родная прошивка вашего устройства может плохо работать.

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

У меня в распоряжении имеется 5 точек доступа Tp-link модели tl-wa901nd v2. Последняя прошивка для неё вышла 23.03.2012. Эта прошивка работает нестабильно. На английской версии сайта имеется бета-прошивка датируемая 1.11.2013, в changelog указано «Fixed the wireless instability and hang issue» — это не правда, с этой прошивкой точка всё так же нестабильно работает.

Но точки закуплены и они должны работать. Что же делать? Сдать обратно и купить UniFi Cтавить OpenWrt и надеется что с ней они будут стабильно обслуживать клиентов.

У проекта DD-WRT тоже есть прошивка на данную точку, но ставить её не рекомендую. Там имеется проблема с работой ethernet порта.

И так, проект OpenWrt примерно раз в год выпускает стабильные выпуски прошивок. На данный момент последний выпуск Barrier Breaker 14.07 вышел в октябре 2014.

Для того, что бы прошить нашу точку на сайте https://openwrt.org в каталоге https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/ находим модель точки и скачиваем файл с постфиксом factory

Заходим на точку через веб-интерфейс. System tools\Firmware upgrade выбираем скачанный файл с расширением .bin и нажимаем upgrade

tp-link

Через какое то время точка перезагрузится и OpenWrt будет готова к работе. Что бы нам получить доступ к командной строке ТД, нужно соединить интерфейс точки и компьютера. На интерфейсе компьютера должен быть статически задан адрес из подсети 192.168.1.0/24 и маска /24, например 192.168.1.2/24

Теперь подключаемся к точке с помощью telnet: telnet 192.168.1.1

Мы в командной строке точки доступа.

Чтобы иметь возможность управлять точкой доступа, нужно задать пароль суперпользователю. Командуем passwd, вводим пароль и подтверждаем его.

openwrt console

Теперь нужно изменить конфиг сети: vi /etc/network. У нас в сети используется DHCP-сервер и network обретет следующий вид:

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'lan'
        option ifname 'eth0'
        option proto 'dhcp'
        option type 'bridge'

Интерфейс loopback — кольцевой интерфейс. Оставим без изменений

От интерфейса lan нам нужно, что бы он получал настройки сети от DHCP сервера и работал в режиме моста.

Теперь следует перезапустить  lan интерфейс и выйти из telnet сессии. Проще всего это сделать послав точку в перезагрузку командой reboot.

Теперь нужно подключить точку доступа к рабочей сети и зайти на неё по ssh. На DHCP сервере привяжите mac адресс ТД к определенному ip адресу, для удобства дальнейшей работы. Например, мы выделим гостевой сети wi-fi отдельный vlan и повешаем на него сеть 192.168.5.0/24. И расположим точки доступа в конце адресного пула. Нашей точке на DHCP сервере зададим адрес 192.168.5.250

Заходим на нашу точку по ssh: на unix-подобных ОС команда в терминале: ssh root@192.168.5.250. На Windows для этого потребуется putty. Логин root, пароль заданный ранее.

В стандартной прошивке версии 14.07 для tl-wa901nd v2  в прошивку уже включен веб-интерфейс luci. Настройки можно проводить через него: http://192.168.5.250

Для русификации веб-интерфейса нужно установить пакет luci-i18n-russian:

opkg update — обновим список пакетов в репозитории OpenWrt. Если обновление не сработало, проверьте имеет ли устройство доступ в глобальную сеть.

opkg instal luci-i18n-russian —   установка русификатора

Так же это можно сделать через веб-интерфейс.

Далее описан способ настройки через командную строку c исправлением конфигов вручную. Веб-интерфейс отключен.

Мы хотим получить от нашей точки совсем немного: Чтоб wi-fi работал и был открытый, что бы время ТД синхронизировалось с ntp сервером и что бы наши гости из 192.168.5.0/24 подсети не имели доступа к командной строке нашей точки.

Продолжим. Настройки беспроводной сети хранятся в /etc/config/wireless и обретают следующий вид:

config wifi-device  radio0
        option type     mac80211
        option channel  11
        option hwmode   11ng
        option path     'platform/ath9k'
        option htmode   HT20
        # REMOVE THIS LINE TO ENABLE WIFI:
        #option disabled 1
        option country RU

config wifi-iface
        option device   radio0
        option network  lan
        option mode     ap
        option ssid     OpenWrt
        option encryption none

Здесь нас интересуют:

option channel — номер канала на котором будет работать ТД

option hwmode — режим работы ТД. Для общественной точки лучше оставить режим 11ng.

country — страна в которой находится ТД.

option disabled 1 — запрет работы wi-fi прямо в конфиге. Для разрешения работы wi-fi нужно удалить\закомментировать эту строку.

option ssid — ssid нашей сети

option encryption — выбор метода шифрования ТД. В нашем примере точка доступа открытая

Системные настройки хранятся в /etc/config/system

config system
        option hostname 'OpenWrt'
        option zonename 'Asia/novosibirsk'
        option timezone 'NOVT-6'

config timeserver 'ntp'
        list server 'time.nstu.ru'
        list server '1.openwrt.pool.ntp.org'
        list server '2.openwrt.pool.ntp.org'
        list server '3.openwrt.pool.ntp.org'
        option enabled '1'
        option enable_server '0'

config led 'led_wlan'
        option name 'WLAN'
        option sysfs 'tp-link:green:wlan'
        option trigger 'phy0tpt'

option hostname — зададим сетевое имя нашего устройства

option zonename — зададим часовой пояс

option timezone — Новосибирск нынче GMT +6

в config timeserver ‘ntp’ прописаны серверы времени, с которыми будет происходить синхронизация времени

option enabled — включить(1)\выключить(0) ntp клиент

option enable_server — включить(1)\выключить(0) ntp сервер. т.е. при включении этого параметра ТД становится ntp сервером

Настройка фаервола. Ничего особенного нам от него не нужно, потому что все ограничения для 192.168.5.0/24 заданы на маршрутизаторе. Мы лишь добавим в конфиг /etc/config/firewall одно правило, блокирующее доступ к порту 22 нашей ТД:

config rule
        option enabled '1'
        option proto 'tcp'
        option name 'shh block'
        option family 'ipv4'
        option src '*'
        option src_ip '192.168.5.0/24'
        option dest_ip '192.168.5.250'
        option dest_port '22'
        option target 'REJECT'

option name — имя правила

option proto — протокол с которым оно работает

option src — источник. Здесь можно поставить зону, интерфейс. Звездочка означает «любой»

option src_ip — ip адрес источника. У нас это вся подсеть гостевого wi-fi.

option dest_ip — ip адрес назначения. Адрес нашей точки

option dest_port — порт назначения. Нам требуется закрыть доступ по ssh, порт по умолчанию 22.

option target — действие «что сделать?». Значение REJECT — четко дает понять нашему гостю, что здесь доступа нет. Можно поставить DROP и получить атмосферу загадочности.

Таким образом у нас получается такой /etc/config/firewall:

config defaults
        option syn_flood        1
        option input            ACCEPT
        option output           ACCEPT
        option forward          REJECT
# Uncomment this line to disable ipv6 rules
#       option disable_ipv6     1

config zone
        option name             lan
        list   network          'lan'
        option input            ACCEPT
        option output           ACCEPT
        option forward          ACCEPT

config zone
        option name             wan
        list   network          'wan'
        list   network          'wan6'
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
        option masq             1
        option mtu_fix          1

config forwarding
        option src              lan
        option dest             wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
        option name             Allow-DHCP-Renew
        option src              wan
        option proto            udp
        option dest_port        68
        option target           ACCEPT
        option family           ipv4
# Allow IPv4 ping
config rule
        option name             Allow-Ping
        option src              wan
        option proto            icmp
        option icmp_type        echo-request
        option family           ipv4
        option target           ACCEPT

# Allow DHCPv6 replies
# see https://dev.openwrt.org/ticket/10381
config rule
        option name             Allow-DHCPv6
        option src              wan
        option proto            udp
        option src_ip           fe80::/10
        option src_port         547
        option dest_ip          fe80::/10
        option dest_port        546
        option family           ipv6
        option target           ACCEPT

config rule
        option enabled '1'
        option proto 'tcp'
        option name 'shh block'
        option family 'ipv4'
        option src '*'
        option src_ip '192.168.5.0/24'
        option dest_ip '192.168.5.250'
        option dest_port '22'
        option target 'REJECT'

# include a file with users custom iptables rules
config include
        option path /etc/firewall.user

В итоге у нас есть точка доступа с OpenWrt, которой мы можем управлять через командную строку и веб-интерфейс (если вы его не отключили).

Полезные ссылки:

  1. Страница точки tl-wa901nd на wiki OpenWrt