Apr. 10th, 2016
Banana PI R1 как wifi роутер
Apr. 10th, 2016 07:50 pmBanana 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 в начале скрипта.
Сконфигурировать vlan-интерфейсы можно разными способами - и специфически- дебиановским через /etc/network/interfaces, и "вручную" через утилиту vconfig, и через стандартную утилиту ip.
По конфигурированию vlan-ов в Linux-е есть куда больше литературы, в том числе и внятной, чем по конфигурированию этого свитча.
Что касается включения Wi-fi в режим точки доступа, то начав рыться на этот предмет в сети я обнаружил инструкции перекомпилировать ядро, скомпилирвоать патченный hostapd и еще кучу подобного рода советов. Все эти советы устарели как минимум на год. Разработчиками bananian Linux все необходимое уже сделано. Ядро там содержит работоспособный драйвер этого wifi-чипа, а в репозитории есть отдельный пакет hostapd-rtl,который надо поставить вместо стандартного дебиановсколго hostapd. Он, кстати, принесет с собой и готовый к употреблению конфиг.
Так что если бы это было чуточку получше документировано, то и возиться выяснением вопрсоов бы не пришлось.
К сожалению, это добро крайне хреново документировано, а сделано местами несколько нелогично.
Начнем с конфигурирования свитча. Это более-менее настоящий свитч с поддержкой 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. Он, кстати, принесет с собой и готовый к употреблению конфиг.
Так что если бы это было чуточку получше документировано, то и возиться выяснением вопрсоов бы не пришлось.