vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2016-04-10 07:50 pm

Banana PI R1 как wifi роутер

Banana PI R1 обладает всем необходимым железом для того, чтобы сделать из нее точку доступа - пятипортовый гигабитный свитч, который можно программным способом поделить на WAN и LAN, и Wi-Fi адаптер, который можно перевести в режим инфраструктурной точки доступа.

К сожалению, это добро крайне хреново документировано, а сделано местами несколько нелогично.

Начнем с конфигурирования свитча. Это более-менее настоящий свитч с поддержкой vlan-ов. У него есть пять портов (пронумерованных от 0 4) торчащих наружу и шестой (под номером 8) соедениенный с собственно SoC.

Если смотреть со стороны портов, порты слева направо расположены в следующем порядке:

2 1 0 4 | 3

Причем порт 3 это тот, разъем которого расположен в отдельном корпусе. То есть WAN-порт.

При включении питания эта конструкция стартует в режиме когда все порты объединены в тупой cвитч, который просто передает все пакеты насквозь. Обычно это не то, что нам надо.

Стандартная конфигурация выглядит так - четыре LAN-порта и WiFi объединены в общую сеть, а WAN-порт - отдельно и пакеты в него попадают только через файрволл в ядре операционки, выполняющейся на SoC роутера.

Поэтому надо организовать два VLAN-а. Один будет включать третий порт и 8й как транковый, а второй - порты 0 1 2 4 и 8-й как транковый. А в Linux-е поднять два vlan-овских интерфейса, один из которых будет внешним, а второй - включен в бридж вместе с Wi-Fi.

Управляется свитч утилитой swconfig. Синтаксис у нее довольно странный, но данная задача решается прямолинейно. Более того в образе bananian linux уже лежит готовый скрипт /etc/network/ifpre-up.d/swconfig, в котором написаны все нужные команды, и надо только закоментарить команду exit в начале скрипта.

# Reset switch, counter and enable vlan mode
device=eth0
swconfig dev $device set reset 1
swconfig dev $device set reset_mib 1
swconfig dev $device set enable_vlan 1
# configure vlans
swconfig dev $device vlan 101 set ports "3 8t"
swconfig dev $device vlan 102 set ports "2 1 0 4 8t"
# activate new config
swconfig dev $device set apply 1




Сконфигурировать vlan-интерфейсы можно разными способами - и специфически- дебиановским через /etc/network/interfaces, и "вручную" через утилиту vconfig, и через стандартную утилиту ip.

По конфигурированию vlan-ов в Linux-е есть куда больше литературы, в том числе и внятной, чем по конфигурированию этого свитча.

Что касается включения Wi-fi в режим точки доступа, то начав рыться на этот предмет в сети я обнаружил инструкции перекомпилировать ядро, скомпилирвоать патченный hostapd и еще кучу подобного рода советов. Все эти советы устарели как минимум на год. Разработчиками bananian Linux все необходимое уже сделано. Ядро там содержит работоспособный драйвер этого wifi-чипа, а в репозитории есть отдельный пакет hostapd-rtl,который надо поставить вместо стандартного дебиановсколго hostapd. Он, кстати, принесет с собой и готовый к употреблению конфиг.

Так что если бы это было чуточку получше документировано, то и возиться выяснением вопрсоов бы не пришлось.

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting