Метки
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
BPI-R1 — часть 3 — Bananian — настройка точки доступа WiFi
2015-03-26 19:23 | Автор: jekader | Filed under: FedoraMD
После неудачи с драйвером wifi в федоре я принял решение что лучше смириться со старым ядром и кривым драйвером, зато иметь рабочее устройство.
В связи с этим установил bananian с ядром 3.4.104+ из форка linux-suunxi - любимцем всех китайских производителей ARM железок.
Подробности конфигурации ниже.
Первые две главы практически идентичны федоре.
Глава 1: техзадание
Вот какую конфигурацию я хочу получить в итоге:
1-4 порты Ethernet: внутреняя сеть
5 порт Ethernet: uplink к провайдеру, IP получает по DHCP
wlan0 - интерфейс на котором будет точка доступа
lanbr0 - сетевой мост чтобы соединить LAN и WiFi пользователей в одну подсеть. На этом интерфейсе будет стоять внутренний IP 192.168.186.168 а также будет работать внутренний DHCP сервер.
пользователи будут подключаться к wifi сети по WPA2 и выходить в интернет через 5 порт свитча.
Глава 2: настраиваем свитч
Для настройки используется драйвер b53 из OpenWRT посредством утилиты swconfig
Конфигурация хранится в сетевых скриптах (/etc/network/if-pre-up.d/swconfig)
порты подключены следующим образом:
2-1-0-4-3
порт номер 8 подключён к процессору. Таким образом, план следующий:
порт 3 ставим во VLAN 101
порты 2 1 0 4 ставим во VLAN 102
порт 8 настраиваем на получение обоих VLAN'ов
полная конфигурация:
(в файле конфигурации закомментировать строку "exit 0" которая отключает скрипт по умолчанию)
swconfig dev eth0 set reset 1
swconfig dev eth0 set enable_vlan 1
swconfig dev eth0 vlan 101 set ports '3 8t'
swconfig dev eth0 vlan 102 set ports '4 0 1 2 8t'
swconfig dev eth0 set apply 1
Осторожно, после применения этих конфигураций сеть может и отвалиться так как на стороне ОС мы ещё не настроили VLAN'ы
Глава 3: Bananian
1) настраиваем сетевые интерфейсы
root@bananapi:~# cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0 eth0.101 eth0.102 lanbr0
# dhcp configuration on WAN port
iface eth0.101 inet dhcp
vlan-raw-device eth0
# no config on LAN ports
# this is attached to lanbr0
iface eth0.102 inet manual
vlan-raw-device eth0
iface lanbr0 inet static
bridge_ports wlan0 eth0.102
address 192.168.186.168
netmask 255.255.255.0
2) перезапускаем сеть чтобы применить настройки VLAN
# /etc/init.d/network restart
3) ставим нужные пакеты
# apt-get install isc-dhcp-server dnsmasq iptables-persistent
4) настраиваем DHCP - добавляем следующее в конец /etc/dhcp/dhcpd.conf
subnet 192.168.186.0 netmask 255.255.255.0 {
range 192.168.186.16 192.168.186.123;
option domain-name-servers 192.168.186.168;
option domain-name "banana.local";
option routers 192.168.186.168;
option broadcast-address 192.168.186.255;
default-lease-time 86400;
max-lease-time 1000000;
}
5) перезапускаем сервисы
# /etc/init.d/isc-dhcp-server restart
# /etc/init.d/dnsmasq restart
6) включаем NAT
# IPTABLES -t nat -I POSTROUTING -s 192.168.186.0/24 -o eth0.101 -j MASQUERADE
# /etc/init.d/iptables-persist save
7) удостоверяемся что включена маршрутизация в ядре
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
если выдаёт 0 - гуглим как поменять 😉
В результате этих операций, компы подключённые к LAN портам должны получать IP и иметь доступ в интернет.
Глава 4: hostapd
Переходим к весёлым пляском с бубном чтобы заставить работать драйвер 8192cu - у него свой режим работы с hostapd, но realtek опубликовал его для древней версии. Я взял патч и применил его на самый новый hostapd.
Результат на github: https://github.com/jekader/hostapd-rtl
1) качаем зависимости
# apt-get install git build-essential fakeroot devscripts
2) клонируем репозиторий
# git clone https://github.com/jekader/hostapd-rtl.git
3) собираем и ставим rostapd-rtl
# cd hostapd-rtl
# bash build.sh
# dpkg -i ../hostapd-rtl_2.4-2_armhf.deb
4) правим по вкусу файл /etc/hostapd/hostapd.conf
5) раскомментируем строку DAEMON_CONF в /etc/default/hostapd для активации службы
6) запускаем службу
# /etc/init.d/hostapd start
Глава 5: Итог
Точка доступа работает. Можно поиграться с настройками hostapd для правильной работы 802.11n на больших скоростях, но это выходит за рамки статьи.
Метки: bananaPI, bpi-r1, debian, hostapd
5, 2015 20:55
А можно попросить померять скорость с помощью iperf между бананой и лан клиентами?
А то у меня на дебиане всё отлично, куча приложений и сервисов крутятся, а вот скорость по гигабитным линкам до клиентов не больше 150-200 Мбит/с.
И это большой облом — ни самба, ни iptv, ни прочее, что нужно с бананы брать, нормально не работают…
Между клиентами нормально — 800-900 Мбит/с
6, 2015 9:44
Буду дома — измерю и поделюсь результатом.
6, 2015 17:43
WIFI корректно работает?
6, 2015 21:05
# iperf -c 192.168.186.168
————————————————————
Client connecting to 192.168.186.168, TCP port 5001
TCP window size: 85.0 KByte (default)
————————————————————
[ 3] local 192.168.186.18 port 59490 connected with 192.168.186.168 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 450 MBytes 377 Mbits/sec
Не гигабит конечно, но для моих нужд за глаза. WiFi работает с hostapd-rtl описанным выше, но только в режиме 20MHz. Вторичный канал подключаться отказывается на текущей версии драйвера.
8, 2015 8:55
Спасибо. Значит глюк платы.
Там ещё скорость разная в зависимости от направления — от бананы или к ней.
А hostapd из драйверов с сайта rtl нормально на 40 мгц работает. Или hostapd-rtl можно пропатчить на предмет проверки соседей — тоже 40 мгц начинают работать.
8, 2015 9:07
В том и дело что когда hostapd пытается запросить сканирование соседей драйвер отвечает ошибку. Причём я поглядел на код и ответственный за это кусок кода в версии от realtek аналогичен тому что в новой версии с патчами.
8, 2015 11:21
В файле src/ap/hw_features.c
ищем
if (ret < 0) {
wpa_printf(MSG_ERROR,
"Failed to request a scan of neighboring BSSes ret=%d (%s)",
ret, strerror(-ret));
И меняем следующую строку:
// return -1;
return 0;//ignore this error
40 мгц после этого работает.
8, 2015 11:31
Ха ха, такой костыль я тоже думал подставить но решил что такое потом стыдно будет на github заливать.
8, 2015 11:41
Ну я делал не заливать, а пользоваться… 🙂
8, 2015 22:27
Я правильно понял что hostapd от realtek тоже пришлось так патчить?
9, 2015 21:25
Нет, от realtek, который версии 0.8 работает сразу.
17, 2015 22:57
Видел, что для нового hostapd для 40 мгц нужен параметр
noscan=1
в конфиге. Сам не проверял, всё разломал пока.
17, 2015 23:07
Это не приняли в upstream и есть только в виде патча в дереве OpenWRT:
https://dev.openwrt.org/browser/trunk/package/network/services/hostapd/patches/300-noscan.patch
Попробую применить его к hostapd-rtl чтоб веселее работало, спасибо за идею!
1, 2015 22:58
Наложил патч, теперь работает и 40 МГц