Пошаговая инсталляция TBNG на OrangePi Zero

Похоже, настал момент описания пошаговой инсталляции TBNG на микрокомпьютер Orange Pi Zero. Рассмотрен самый простой вариант -- "интернеты" приходят по  проводному интерфейсу, раздаются через точку доступа по беспроводному. Никаких дополнительных устройств не требуется. Достаточно иллюстративно.

Второй момент -- OrangePi Zero имеет набортный WiFi, совместимый с драйвером nl80211, так что хаки с реалтеком тоже не потребуются.

Итак, начинаем. Остальной текст будет практически потоком сознания с минимальными комментариями, так что ознакомьтесь с документацией

Используем Debian Stretch с mainline-ядром.

Страница

Прямая ссылка на образ, который использовался для работы

Распаковываем, на microSD пишем img файл -- инструкций "как записать образ на флешку" предостаточно.

Вставляем карту в устройство.

Подключаем ETHERNET и питание.

Ждем загрузки.

Соединяемся с устройством по ssh, согласно мануалу для Armbian, используем root/1234.

ssh root@orangepizero  

Возможно потребуется указать ip адрес вместо имени - его можно подсмотреть на роутере.

Сразу после входа у нас просят сменить пароль root.

Changing password for root.  
(current) UNIX password: 
Enter new UNIX password:  
Retype new UNIX password:  

На вопрос "current password" нужно писать "1234", на вопрос New - новый пароль. Я использовал root123456.

Дальше нас просят ввести имя пользователя:

Please provide a username (eg. your forename): johndoe  

Я использовал johndoe и пароль 123456

Когда появится приглашение командной строки -- даем команду reboot и уже логинимся с новым пользователем -- johndoe/123456.

Тут важный момент -- ваша система может уйти в обновление пакетов. В любом случае надо обновиться до последних версий. Дожидаемся окончания автообновления а потом даем ещё такую команду:

johndoe@orangepizero:~$ sudo apt-get update && sudo apt-get upgrade -y  

Если видим такую ошибку:

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?  

Значит, процесс еще не закончен и нужно просто ждать. И да, это может затянуться, особенно с медленной microSD.

Опять перезагружаемся -- может обновиться ядро.

johndoe@orangepizero:~$ sudo reboot  

Теперь можно приступать к установке.

johndoe@orangepizero:~$ git clone https://github.com/znoxx/tbng  

В домашней директории рождается папка "tbng".

johndoe@orangepizero:~$ sudo run-parts tbng/setup/apt  

Когда команда отработает -- первый этап в виде подготовки пакетов завершен.

Но тут нужно проверить работу TOR, ибо в FAQ описана пара возможных проблем.

Пару раз с интервалом в 10 секунд даем команду ps -ef | grep tor.

johndoe@orangepizero:~$ ps -ef | grep tor  
debian-+  9843     1  8 17:41 ?        00:00:10 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /etc/tor/torrc --RunAsDaemon 0  
johndoe   9951  1503  0 17:43 pts/0    00:00:00 grep tor  
johndoe@orangepizero:~$ ps -ef | grep tor  
debian-+  9843     1  8 17:41 ?        00:00:10 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /etc/tor/torrc --RunAsDaemon 0  
johndoe   9953  1503  0 17:43 pts/0    00:00:00 grep tor  

В нашем случае всё ОК -- tor работает и процесс не уходит в циклический рестарт.

Время конфигурировать продукт.

Давайте определимся с сетью. Мы устанавливаем TBNG на "голую" плату, то есть никакие USB WiFi у нас не торчат. То есть два интерфейса -- eth0 и wlan0.

До изменения конфигурации у нас вот такая картина:

johndoe@orangepizero:~$ ip addr  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000  
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000  
    link/ether 02:42:6c:0d:2a:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.104/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:6cff:fe0d:2aa8/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000  
    link/ether 12:42:6c:0d:2a:a8 brd ff:ff:ff:ff:ff:ff

Eth0  получает адрес по DHCP и таки да, это нас устраивает, а вот конфигурацию wlan0 надо править. Смотрим на файл /etc/network/interfaces

# Wireless adapter #1
# Armbian ships with network-manager installed by default. To save you time
# and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings
# manually. The below lines are only meant as an example how configuration could
# be done in an anachronistic way:
# 
#allow-hotplug wlan0
#iface wlan0 inet dhcp
#address 192.168.0.100
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# Disable power saving on compatible chipsets (prevents SSH/connection dropouts over WiFi)
#wireless-mode Managed
#wireless-power off

Давайте договоримся, что новая сеть у нас будет вида 192.168.225.x -- это то, куда будут подключаться WiFi клиенты.

Меняем конфиг на такое:

# Wireless adapter #1
# Armbian ships with network-manager installed by default. To save you time
# and hassles consider using 'sudo nmtui' instead of configuring Wi-Fi settings
# manually. The below lines are only meant as an example how configuration could
# be done in an anachronistic way:
# 

allow-hotplug wlan0  
iface wlan0 inet static  
address 192.168.225.1  
netmask 255.255.255.0

#gateway 192.168.0.1
#dns-nameservers 8.8.8.8 8.8.4.4
#   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
# Disable power saving on compatible chipsets (prevents SSH/connection dropouts over WiFi)
#wireless-mode Managed
#wireless-power off

Перезапускаем NetworkManager, чтобы он "отстал" от wlan0, подкнимаем руками wlan0 и смотрим результат:

johndoe@orangepizero:~$ sudo systemctl restart network-manager  
johndoe@orangepizero:~$ sudo ifup wlan0  
johndoe@orangepizero:~$ ip addr  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000  
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000  
    link/ether 02:42:6c:0d:2a:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.104/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:6cff:fe0d:2aa8/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000  
    link/ether 12:42:6c:0d:2a:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.1/24 brd 192.168.225.255 scope global wlan0
       valid_lft forever preferred_lft forever

Отлично, wlan0 теперь со статическим адресом.

Ставим hostapd и dnsmasq.

Hostapd будем ставить, считая что у нас чип WiFi XR819 и он будет работать с дефолтным драйвером nl80211, а не хаком для реалтек.

johndoe@orangepizero:~$ sudo tbng/setup/configure_hostapd.py -a armhf -i wlan0  

Указываем архитектуру (armhf), и интерфейс. Логин-пароль будут сгенерены автоматом и показаны в выводе команды. Драйвер тоже по-умолчанию.

….
INFO: Static version of hostapd binary installed to /home/johndoe/tbng/bin/hostapd-tbng.  
Configuration located at /home/johndoe/tbng/config/hostapd-tbng.conf.  
Your AP name: TypicalBite  
Your password: TypicalBite141827  
SystemD service hostapd-tbng is registered and enabled by default.  
Don' forget to confgure dhcp service for wlan0 or use static IPs. Current IP of wlan0 is 192.168.225.1  

 Сохраняем наши новые логин-пароль для точки доступа -- в данный момент это:

Your AP name: TypicalBite

Your password: TypicalBite141827

Дальше ставим dnsmasq:

johndoe@orangepizero:~$ sudo tbng/setup/configure_dnsmasq.py -i wlan0 -s apt -b 192.168.225.10 -e 192.168.225.30 -m 255.255.255.0  

Скрипту установки передаем опять интерфейс (wlan0), источник (apt) начальный адрес (192.168.225.10), конечный адрес (192.168.225.30) и маску сети (255.255.255.0) -- будьте внимательны ибо эти параметры НЕ проверяются при установке.

Последний этап -- конфигурация и установка непосредственно tbng.

Подготавливаем конфигурацию:

johndoe@orangepizero:~$ cd tbng/config/  
johndoe@orangepizero:~/tbng/config$ ls *.example  
tbng.json.example  torcountry.json.example  user.json.example  
johndoe@orangepizero:~/tbng/config$ cp tbng.json.example tbng.json  
johndoe@orangepizero:~/tbng/config$ cp torcountry.json.example torcountry.json  
johndoe@orangepizero:~/tbng/config$ cp user.json.example user.json  

Нужно отредактировать tbng.json для соответствия нашим интерфейсам wlan0 и eth0:

{ 
  "cputemp": "default",
  "wan_interface": [
   {
     "name": "eth0"  
   }
    ],
  "lan_interface": [
    {
      "name": "wlan0",
      "wireless": true
    }
  ],

  "allowed_ports_tcp" : [22,3000,7657,9050,8118,4200],
  "allowed_ports_udp" : [53],
  "lock_firewall": false
}

После редактирования проверям целостность конфига:

johndoe@orangepizero:~/tbng/config$ cd ..  
johndoe@orangepizero:~/tbng$ sudo engine/tbng.py chkconfig  
INFO: Runtime updated called  
INFO: Check config called  

Установка tbng:

johndoe@orangepizero:~$ sudo tbng/setup/configure_componetns.py -u johndoe  

В качестве параметра передаем имя пользователя, которого мы создали в самом начале (johndoe) и с помощью которого выполняли все предыдущие этапы. Процесс не очень быстрый и опять-таки зависит от скорости microSD.

В принципе на этом этапе можно и остановиться, но мы сделаем ещё один маленький штрих:

johndoe@orangepizero:~/tbng$ sudo apt-get clean

Это почистит кэш apt и освободит какое-то количество свободного места. Теперь отключаем систему, обесточиваем и перезапускаем.

johndoe@orangepizero:~/tbng$ sudo shutdown -h now  

После включения через пару минут будет видна беспроводная сеть "TypicalBite". Система готова к использованию.

Доступ к web-ui: http://192.168.225.1:3000 Логин/пароль дефолтный webui/webui.

Посмотрим на информацию о системе -- если температура процессора не отображается -- изменим настройку в tbng.conf:

Было:

"cputemp": "default"

Стало:

"cputemp": "armbian"

Вроде всё. Я осознанно не включал firewall (lock_firewall) в конфигурации, чтобы оставить возможность поотлаживать систему в случае чего.

Чуть позже в этом же посте выложу готовый образ для Orange Pi Zero (для этой и только для этой конфигурации исключительно в ознакомительных целях).

Большое спасибо читателям, которые "сподвигли" на этот текст, ибо благодаря им была найдена (и немедленно исправлена) досадная ошибка в скриптах установки.

Update

Образ для 8Gb карты, получившийся в результате вышеописанных действий (к сожалению, не было меньшего объема).

Подходит только для Orange Pi Zero (H2+). Другие образы не планируются ни под каким видом, ибо разброс железа очень большой.

Логины/пароли

  • root/root123456
  • johndoe/123456
  • Wifi: TypicalBite (имя сети)/TypicalBite141827 (пароль)
  • Webui: webui/webui

Firewall не закрыт.

После записи и первого прогона рекомендуется поменять все пароли, а также перегенерить ssh-ключи.

На корм коту

Магазин открыт!

ещё