Banana Pi 64 ááẠRaspberry Pi ááŸáá·áºáááºáá°áá±á¬ single-board computer ááŒá áºáá±á¬áºáááºáž Ethernet ports á¡áá»á¬ážá¡ááŒá¬ážáá«áááºáá±á¬ááŒá±á¬áá·áº áááºážá¡á¬áž áá±áá°áá»áááºááœááºáá»áẠLinux ááŒáá·áºááŒá°ážááŸá¯á¡áá±á«áºá¡ááŒá±áá¶á router á¡ááŒá áºááá¯á·ááŒá±á¬ááºážáá²ááá¯ááºá á±áááºá
áá¯ááºáá²á·á Openwrt ááŸáááŒá®ážá áá«áá±ááá·áº áá°á·ááŸá¬ ááá¯ááºááá¯ááºááŒá¿áá¬ááœá±á áá°á·áá²á· GUI áá²á· CLI ááŸááááºá Mikrotik ááŸááá«áááºá áá«áá±ááá·áº áá°á·ááŸá¬ ááá¯ááºááá¯áẠGUI/CLI áá«ááŸáááŒá®áž Wireguard á ááœááºáááºááŸá¬ á¡áá¯ááºááá¯ááºáá«áá°áž... áá±áá¯áá»á¡á¬ážááŒáá·áºá áááºá¡áá¯ááºáá¯ááºáá²á· Standard Linux áá±á¬ááºá¡ááœááºážááŸá¬ áá»ááºááŸááá±áá»áááºááŸá¬ ááŒá±á¬ááºážááœááºááŒááºááœááºááŸááá²á· router áá áºáá¯ááᯠááá¯áá»ááºáá«ááẠáá±á·ááá¯ááºážááŸáá·áºá
BPIá R64á single-board áá°áá±á¬á¡áááºáá»á¬ážá¡á±á¬ááºááœáẠáá±á¬ááºážáá«ážááœááºá Banana Pi R64 single-board ááá¯ááºááá¯ááºááᯠááá¯ááá¯áá«áááºá
áá¯á¶áá áºáá¯ááœá±ážáá»ááºááŒááºážá eMMC ááŸáááá·áºáá±á«ááºážáá¯ááºáá¯ááºáá«á
áá¯ááºáááºážááœááºááœáẠáááºáááŸáááẠááááá¯á¶áž áá»áœááºážáá»ááºááŸá¯
USB-UART ááŸáá áºááá·áº R64 ááá¯á· áá»áááºáááºáááºá¡ááœáẠá¡ááºáááá¯áá®áááº-
- USB-UART áá±áááºáẠ(PL2303á Serial-to-USB) á¡ááœáẠáá±áá®ááᯠá¡á áááºá¡ááá¯ááºážáá»á¬áž á ááá¯ážááá¯ááºááá¯á· áá»áœááºá¯ááºááá¯á· áááºáááºáá«áááºá
- USB á¡áá¯á¶ážáá áºáááºááᯠááœááºáá»á°áá¬ááŸáá·áº áá»áááºáááºááŒá®ážá áá±á¬ááºáá áºáá¯á UARTá R64 ááá¯á· á¡á±á¬ááºáá¯á¶áá«á¡ááá¯ááºáž ááá¯ááºáá¬ááŒáá¯áž áá±ážáá¯á¡ááẠáá¯á¶ážáá¯ááᯠáá»áááºáááºáá«á
- computer console ááœáẠrun áá«á
sudo minicom
á€ááŒá®ážáá±á¬ááºá ááá
á¹á
á¡áá»á¬ážá
á¯ááœáẠsingle-board console = á¡á±á¬ááºááŒááºááŸá¯áá±á«áºáá¬áááá·áºáááºá
á¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠáááºááá¯ááá¯ááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
ááá¯á·áá±á¬ááºá á¡ááœááºáá¯á¶ážáááºážáááºážááŸá¬ SD áááºá០áááºáááºááŸá¯á
áá
áºááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºááŒá
áºáááºá
unzip -p 2019-08-23-ubuntu-16.04-lite-preview-bpi-r64-sd-emmc.img.zip | pv | sudo dd of=/dev/mmcblk0 bs=10M status=noxfer
áá»áœááºá¯ááºááá¯á·ááẠáááºááᯠR64 SD á¡áá±á«ááºáá²ááá¯á· ááá·áºáá«á áááºážááá¯ááœáá·áºáᬠáá»áááºáááºáá¬ážáá±á¬ ááœááºááá¯ážááºááᯠááááá¯á¶áž uboot ááœáá·áºááŒááºážá ááá¯á·áá±á¬áẠáá¯á¶ááŸáẠLinux ááœáá·áºááŒááºážááᯠá á±á¬áá·áºááŒáá·áºáá«á
á¡ááŒá¬ážááœá±ážáá»ááºá
áá¬áá
áºáá¯ááẠeMMC áá¯áá±á«áºáá±á¬ R64 ááœáẠáááºáá±á¬ááºáá¬ážááŒá®ážááŒá
áºáá±á¬ 8Gb áááºááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá áá®áá®ááŸá áááºážááœáŸááºáá»ááºáá»á¬ážá¡áá áá»áœááºá¯ááºááá¯á·ááẠáá¯á¶á¡á¬áž á
ááºááá¯á· áá°ážáá°áá«áááºá
/dev/mmcblk0 BPI ááá¯á· BPIá ááŒááºááœáá·áºáá«á SD áááºááᯠáááºááŸá¬ážáá«á BPI ááᯠáááºáá¶ááœáá·áºáá«... ááá¯á·áá±á¬áẠá¡áá¯ááºááá¯ááºáá«á á¡ááŒááºááŒááºá¡ááŸááºááŸááºáá¯ááºáááºáž Boot select
áááŸá±á¬ááºááŸááºáá«áá²á·á
á¡ááŸááºááŸá¬ á¡áááºážáá¯á¶áž BPI á¡ááœáẠinternal flash drive á០boot áá¯ááºááá¯ááºá á±áááºá¡ááœáẠá¡áá°ážá¡áá¶áá áºáᯠáááºááŸááºááẠááá¯á¡ááºáááº-
root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x00]
root@bpi-r64:~# ./mmc bootpart enable 1 1 /dev/mmcblk1
root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x48]
ááá¯á·áá±á¬ááºá áááºááẠá¡áá°áž boot partition ááœáẠpreloader ááá¯áá±ážáááºááá¯á¡ááºáááºá
root@bpi-r64:~# echo 0 > /sys/block/mmcblk0boot0/force_ro
root@bpi-r64:~# dd if=preloader_evb7622_64_foremmc.bin of=/dev/mmcblk0boot0
áá¯ááºáá¯ááºáá° R64 (China) ááẠá€ááœáá
á¯á¶ááᯠáááºáá²á·áááºá
áá±áá¯áá»á¡á¬ážááŒáá·áºá á€ááŒá®ážáá±á¬ááºá áá¯á¶áá»á¬ážááẠeMMC ááŸá
áááºáááºá áááºážááᯠáá¯á¶áá±á¬áºááŒá®áž áá¯á¶áá»á¬ážááᯠá¡á
á០áááºáá®ážááá¯áá«áá ááŒá
áºáááºááŸá
áºáá¯á
áá¯á¶ážá¡ááœáẠ(SD/eMMC) ááá¯ááºá¡áá»á¬ážá¡ááŒá¬áž (SD áááºá¡ááœáẠááŒáá¯áááºááá·áºááœááºážááŒááºážá ATFá u-boot) ááá¯ááºáá»á¬ážááᯠkernel ááá¯ááœáá·áºáááºá¡ááœááºáᬠáá±ážáááºááá¯á¡ááºáá«áááºá áá®á¡ááŒá±á¬ááºážá¡áá¬á ááŸááá±áá¯ááºážáá²á
á¡áᯠáá»áœááºáá±á¬áº eMMC ááá áºááá·áº áá±á«ááºážáá¯ááºáá¯ááºááá¯ááºáááºá ááá¯ážááá¯ážáá¬ážáá¬ážááŒá±á¬áááẠáá»áœááºáá±á¬áº á¡á²áá«ááᯠááá¯á¶ážáá«áá°ážá SD áááºáá áºáá¯á áá¯á¶áá±á¬ááºáá«áááºá áá«áá±ááá·áº á¡á²áá«ááᯠá¡áá¯ááºáá¯ááºááá¯á· á¡áá»áááºáá±á¬áºáá±á¬áºáá¯ááºááœá¬ážáááºá áá«ááŒá±á¬áá·áº áá±á¬ááºážáá«ážáá²ááŸá¬ ááá·áºáá¬ážááá¯ááºáá«á
áááºáááºááŸá¯á áá áºáá áºáá¯ááᯠááœá±ážáá»ááºááŒááºážá Armbian
ááááá¯á¶áž á¡ááá®áá±ážááŸááºážáá¬áááºááŸá¬ ááá¬áá¡ááá¯ááºáž Wireguard VPN ááá¯ááœáá·áºáááºááŒá áºáááºá kernel áááºááœáẠáááºážááẠá á¯á ááºážááá¬ážááŒááºážááŒá áºááŒá®áž áá±á«ááºážá á®ážáá»á¬ážááá«ááŸáááŒá±á¬ááºáž áá»ááºáá»ááºážááœá±á·ááŸááá²á·áááºá áá»áœááºá¯ááºááẠkernel ááᯠááŒááºáááºáááºáá±á¬ááºááŒá®áž x86 ááŒáá·áº áá»áœááºá¯ááºáá¡áá±á·á¡áá¡ááá¯ááºáž DKMS ááᯠá¡áá¯á¶ážááŒá¯á kernel module ááᯠá á¯á ááºážáá¬ážáááºá ááá¯á·áá±á¬áºáááºáž arm64 ááœáẠáá±ážáááºáá±á¬ á¡áá¯á¶ážá¡áá±á¬ááºáá á¹á ááºážáá»á¬ážááá¯ááẠáááºáá±á¬ááºááŒááºážá á¡ááŸáááºááẠáá»áœááºá¯ááºá¡á¬áž áááŸá áºááŒáá¯á·ááœáẠá¡á¶á·ááŒá á±áá«áááºá ááá¯á·áá±á¬áẠá¡ááŒá¬áž kernel module áá áºáᯠááá¯á¡ááºááẠá áá±áá¯áá»á¡á¬ážááŒáá·áºá kernel ááŸáá·áºáááºáááºááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠááœá±ážááœá±ážáá±á¬ x86 áááºááºáá±á¬á·ááœáẠá¡áá±á¬ááºážáá¯á¶ážá á¯á ááºážáá¬ážááŒá®áž ááá¯ážááá¯ážáá°ážáá°ááŒááºážá ááŒááºáááºá áááºááŒá®áž á ááºážáááºááŒááºážááŒáá·áº R64 ááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážááŒá±á¬ááºáž ááœááºáá±á«áºáá¬áá«áááºá
áá±á¬ááºáá áºáá¯ááá±á¬á· userspace á¡ááá¯ááºážáá«á Debian ááá¯ááœá±ážáá»ááºááá·áºááá á¹á ááœááºá arm64 áááá¯áá¬á¡ááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠpackages.debian.org ááœááºááŸáááŒá®ážááŒá áºááŒá®áž áááºááá·áºá¡áá¬ááá¯áá»áŸ ááŒááºáááºáááºáá±á¬ááºááẠáááá¯á¡ááºáá«á
áá±á¬ááºáááºá
ááºáá®ážááá¯ááºáá¯ááºááá¯ááºá
á±áááºá
áá«ááŸááá¯ááºá áá«á- userspace á¡ááá¯ááºážáᬠArmbian ááŒá
áºááŒá®ážá kernel ááᯠrepository ááá± áá°áá«áááºá
R64 á áá±á¬á·ááºáá²ááºááá¯ááºáž ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠáá±á«áºááœáẠáá±á¬ááºááœááºáááºá
á¡áá¯ááºááœááºá¡ááœá²á·á¡á ááºáž- áá«áá¬ááŒáá¯ážáá»á¬áž
áá®ážááŒá¬ážá á®á ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯/á ááºážáááºáá±á ááºá¡ááœááºážá Ethernet áá±áááºááºáá áºáá¯á¡á¬áž á¡áááºáž/áá¯á¶ážáááºážáá áºáá¯áá¯á¶ážááŸá á¡ááºáá¬áááºá¡áááºážá¡ááŒá áºá០áááºážáá¶ááá¯á· ááááºáááºá á±ááẠSBC (BPI áá áºáá¯áááºážáááºááá¯ááºáá²) á á¬ážááœá²áá±á«áºááœáẠSBC (BPI áá áºáá¯áááºážáááºááá¯ááº) ááᯠáááºááá¯á·áá¬ážááááºááᯠááá·áºá¡á¬áž ááŒá±á¬ááŒááá¯áá«áááºá á¡ááŸááºááŸá¬á áá áºáááºááœááºá áááºááẠá¡ááºáá¬áááºááŒáá·áº áá¬á·ááºáá²áá áºááá¯ááºážááᯠáá±ážáá±á¬ááºááẠááá¯á¡ááºáá±á¬áºáááºáž á¡ááŒá¬ážáá áºáááºááœááºá á¡ááá¯áá« áá¬á·ááºáá²á¡ááá¯ááºážááŸá á¡áá¬á¡á¬ážáá¯á¶ážááẠáá»ááºááœá¬ážááá¯ááºááŒá®áž áááá¡áá»ááºááŸá¬ Wifi ááŒá áºáááºá
ááááŠážá áœá¬á áá»áœááºá¯ááºáááºá á»á±ážáá±á«áá±á¬ USB-Wifi âáá®á á®â ááá¯áááºáááºáá¯á¶ážááŒááºááá¯ááºááŒá®áž BPI ááŸááá áºáá¯áááºážáá±á¬á¡áá±á«ááºááœááºáááºááŒá®áž ááá¯ááºáá¬ááŒáá¯ážáá»á¬ážááá¯áá±á·ááœá¬ážáá²á·áááºá áá«ááá¯áá¯ááºááá¯á·á á á»á±ážáááŒá®ážáá²á· TP-LINK TL-WN725N USB 2.0 ááá¯áááºáá²á·áááºá áá«áá±ááá·áº ááááºáááŒá¬áááºááŸá¬ ááŒááºááœá¬ážáá±á¬á·ááŸá¬ááá¯ááºáá°ážááá¯áᬠáááá¬áááºááŸá¬ážáá¬áá²á·áááº- áá®á á®á¡áá¯ááºáá¯ááºááá¯á·á¡ááœááºá á¡á²áá®ááŸá¬áááŸááá²á·áá²á· kernel driver áá áºáá¯ááá¯áááºá (áá±á¬ááºááá¯ááºážááœáẠáá»áœááºá¯ááºááẠááá¯á¡ááºáá±á¬ RTL8XXXU áááá¯ááºáá¬ááᯠáááºáááºáá²á·áá±á¬áºáááºáž áááºááœá±á·ááá»áá±ážáá«)á ááŒá®ážáá±á¬á· Ethernet ááŒáá¯ážá á¡áááºážáá²á· á¡ááœááºá¡ááŒááºááᯠáááᬠáá»ááºá á®ážááœá¬ážáááºá
ááááºá¡áá±ááŒáá·áº Tenda MW3 (Wifi mesh system) áá¡áá°á¡áá®ááŒáá·áº áá±áááºááºááᯠáááºááŸá¬ážááá¯ááºáá²á·áááº- áá»áœááºá¯ááºááẠá á¬ážááœá²á¡á±á¬ááºááœáẠááá¯ážááá¯ážáá±ážáá áºáá¯á¶ážááᯠáá»áá¬ážáᬠBPI ááᯠáá®áá¬ááŸááºáá±á¬ Ethernet áá±áááºááŒáá¯ážááŒáá·áº áá±á¬ááºáá¯á¶áž LAN port ááá¯á· áá»áááºáááºáá¬ážáááºá á¡á±á¬ááºááŒááºááŸá¯á
Wireguardá RKNá ááŸááº
Banana PI ááá¯á¡áá¯á¶ážááŒá¯ááá¯ááá·áºá¡áá¬áá»á¬ážáá²ááŸáá
áºáá¯ááŸá¬ á¡áá°ážáááŒáá·áº RKN ááŸááááºááá¯á·áá¬ážáá±á¬ááá¯ááºáá»á¬ážááá¯á·á¡ááá²á·áááºáá±á¬ááºááœáá·áºááŸááááºá ááá¯á·ááŸáᬠTelegram ááŸáá·áº Slack áá±á«áºááá¯ááŸá¯áá»á¬ážá¡áá¯ááºáá¯ááºááá¯ááºáááºááŒá
áºáááºá Habré ááá¯ááºáᬠáá±á¬ááºážáá«ážáá»á¬ážááᯠá€á¡ááŒá±á¬ááºážá¡áá¬ááŸáá·áº áááºáááºá á¡ááá¯ááŒá¯áá¬ážááŒá®ážááŒá
áºáááº-
Ansible ááá¯áá¯á¶ážááŒá®áž áá®ááŒá±ááŸááºážáá»ááºááᯠá¡ááá¡áá» á¡áá¯á¶ážáá»áá²á·áááº
VPS ááẠUbuntu 18.04 ááᯠá¡áá¯á¶ážááŒá¯áá±áááºáᯠáá°áááááºá Europe ááŸá hosters ááŸá áºáá¯ááŒá áºááá·áº Amazon ááŸáá·áº Digital Ocean ááœáẠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáá»áœááºá¯ááºá á áºáá±ážáá²á·áááºá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡áááºáá±á¬áºááŒáá« Armbian ááᯠR64 ááœáẠááá·áºááœááºážáá¬ážáá±á¬ááŒá±á¬áá·áº áááºážááᯠssh á¡áááºááŒáá·áº ááá°ááá¯ááºáááºá hm-bananapi-1
ááŸáá·áºá¡ááºáá¬áááºá¡áá¯á¶ážááŒá¯ááœáá·áºááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠAnsibleá automation scripts áá»á¬ážááᯠá¡ááŒá²áá
á± á¡áá¯á¶ážáá»ááŒá®áž R64 ááœáẠáááºáááºááŸá¯ááá¯ááºááá¯áẠá
áááºáá¯ááºáá±á¬ááºáááº-
# завОÑОЌПÑÑО ÐŽÐ»Ñ Debian-based ЎОÑÑÑОбÑÑОвПв
$ sudo apt install --no-install-recommends python3-pip python3-setuptools python3-wheel git
$ which pip3
/usr/bin/pip3
# ansible Ñ pybook, ÑкÑОпÑПваМОе Ма Python
$ pip3 install https://github.com/muravjov/ansible/archive/ansible-2.10.0.dev0-pybook2019.tar.gz
$ export PATH=~/.local/bin:$PATH
$ which ansible-playbook
/home/sa/.local/bin/ansible-playbook
$ git clone https://github.com/muravjov/ansible-bpi-r64.git
$ cd ansible-bpi-r64
$ git submodule update --init
# ÑбежЎаеЌÑÑ Ð² ЎПÑÑÑпМПÑÑО hm-bananapi-1
$ ssh hm-bananapi-1 which python3
/usr/bin/python3
# ÑПбÑÑвеММП ÑÑÑаМПвка
$ ansible-playbook ./router.py -l hm-bananapi-1
ááá¯á·áá±á¬ááºá áááºááẠáá»áœááºá¯ááºááá¯á·á VPN ááᯠVPS ááá¯á· á¡áá¬ážáá°áááºážáááºážááŒáá·áº á¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáááº-
ansible-playbook ./router.py -l current-vpn
á€áá±áá¬ááœáẠá¡ááŒááºážá¡áá¯á¶ááẠá¡ááŒá²áááºáž áááºááŸá-vpn ááŒá áºááŒá®ážá á¡ááŸááºáááẠVPS á¡áááºááᯠááááºážááŸááºáá áºáá¯ááŒáá·áº ááŒááºáááºáááºááŸááºáá¬ážááẠ(á€ááá á¹á ááœáẠáááºážááŸá¬ paris-vpn-aws-t2-micro-1 ááŒá áºáááº)á
$ grep current_vpn group_vars/all
current_vpn: paris-vpn-aws-t2-micro-1
#current_vpn: frankfurt-vpn-d0-starter-1
á¡áá¯áž áá¯ááºáá«áááºá áá®áá¯ááºáá±á¬ááºáá»ááºááœá±áááŒá®ážáááºááŸá¬ ááá¯áá«áá²ááᯠáá»áŸáá¯á·ááŸááºáá»áẠ(á¡áá°ážáááŒáá·áº Wireguard áá±á¬á·áá»á¬áž) ááá¯áá¯ááºáá±ážááá¯á· ááá¯áá«áááºá ./secrets
á áááºážááœáŸááºáá²á·ááá¯á·ááŒá
áºááá·áºáááºá
Python ááœáẠAnsible Automation
YAML áá±á¬áºáááºá¡á á¬áž Ansible command áá»á¬ážááᯠPython script áá»á¬ážááœáẠáá¯ááºáá¯ááºáá¬ážáááºááᯠáááºáááááŒá¯áááá±áááºá ááŸáá¯ááºážááŸááºáááºá¡ááœááºá áá¯á¶ááŸááºáááºážá¡ááá¯ááºáž bird daemon ááᯠáááºááá¯á·ááœáá·áºááááºáááºážá
- name: start bird
systemd:
name: bird
state: started
enabled: yes
Python ááŸáááá·áº á¡áá¬ážáá°ááŒá¯áá¯ááºáááºážá
with mapping:
append("name", "start bird")
with mapping("systemd"):
append("name", "bird")
append("state", "started")
append("enabled", "yes")
Python ááœáẠAnsible command áá»á¬ážááá¯áá±ážááŒááºážááẠáá¯ááºááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááẠááœáá·áºááŒá¯áá±ážááŒá®áž áá±áá¯áá»á¡á¬ážááŒáá·áº áá±áá¯áá»áááºááœááºáá»ááºáá¬áá¬á áá¬ážá ááŒá áºááá¯ááºááŒá±á¡á¬ážáá¯á¶ážááᯠááœáá·áºáá±ážáááºá á¥ááá¬á¡á¬ážááŒáá·áº R64 ááŸáá·áº VPS ááœáẠbird ááá¯ááá·áºááœááºážááŒááºáž-
install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")
function code ááá¯ááŒáá·áºáá«á
á€á¡ááºá¹áá«áááºáá¯áá±á«áºáááºá pybook
á¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
áá°áááºááá¯áááºáá²á
á á±á¬áá·áºááŒáá·áºáá±ážá Prometheus
á á¯á á¯áá±á«ááºáž- ááŒá±ážáááºážá á¬á linkedin ááŸáá·áº pornhub ááá¯á·áááºáž á¡áá¯ááºáá¯ááºáááºá áá±áá°áá»á¡á¬ážááŒáá·áº á¡áá¯á¶ážááŒá¯áá°á¡ááœá±á·á¡ááŒá¯á¶ááẠáá±á¬ááºážáá«áááºá áá«áá±ááá·áº ááá¯ááºáá¬á·ááºáá² á¡áá«á¡ááẠá¡áá¬á¡á¬ážáá¯á¶áž áá»ááºááœá¬ážááá¯ááºáá«áááºá
Kernel á¡ááºááááºáá»á¬ážáááºáááºáž á áááºáááºá á¬ážááœááºááŒá áºááá¯ááºáááº- á¥ááá¬á¡á¬ážááŒáá·áºá áá»áœááºá¯ááºááẠkernel 5.4 => 5.6 ááᯠá¡ááºááááºáá¯ááºáá»ááºáááºá áá±á¬ááºážááŒá®á Wireguard ááẠáá±á¬ááºá áºáá²ááœáẠááŸááá±áááºá áá¬áá±ážááẠáááá¯á¡ááºáá«... ááŒá®ážáááºááẠá á±á¬áá±áá±ážáááº- 5.4 á០áááºááºáá»á¬ážááᯠááŒááºážááŒááºážáááºááẠááœáŸá²áá±ážááá¯ááºáá«áááºá 5.6 ááá¯á·á kernel ááẠá áááºáá²á·ááŒá®ážá VPS ááá¯á· á¥áááºááá¯ááºáá±á«ááºážááᯠpinged áá¯ááºáá¬ážáá±á¬áºáááºáž bird ááẠerror "BGP Error" ááŸáá·áº áá»áááºáááºááááá«... "ááááºááá·áºá áœá¬ ááŒááºááŸáá·áºááœá¬ážáááº" (c) á០5.4; TODO ááœáẠ5.6 ááá¯á·ááœáŸá±á·áááºá
ááá¯á·ááŒá±á¬áá·áºá Router ááŸáá·áº VPS ááá¯ááá·áºááœááºážááŒááºážá¡ááŒááºá á¡á±á¬ááºáá«á¡á áááºá¡ááá¯ááºážáá»á¬ážáá«ááŸááá±á¬ áá®ážááŒá¬áž host áá áºáá¯ááœáẠááá·áºááœááºážáá¬ážáá±á¬ á á±á¬áá·áºááŒáá·áºááŒááºáž (x86 Ubuntu 18.04) ááᯠáááºáá±á¬ááºážááá¯ááºáá«áááºá
- prometheusá alertmanagerá blackbox_exporter - á¡á¬ážáá¯á¶ážááẠdocker ááœááºááŒá áºáááºá
- Docker ááœááºáááºáž metalmatze/alertmanager-bot bot ááᯠá¡áá¯á¶ážááŒá¯á ááááá±ážáá»ááºáá»á¬ážááᯠááŒá±ážáááºážááá¯ááºážááá¯á· áá±ážááá¯á·áááº
- bot á¡ááœáẠtorá ááá¯á·ááŒá±á¬áá·áº bot ááẠá¡ááºáá¬áááºááŸáááá·áºá¡áá« á¡ááŒá±á¡áá±áá»á¬ážááᯠááááá±ážááá¯ááºáá±á¬áºáááºáž Telegram ááẠá¡áá¯ááºááá¯ááºáá±ážááá·áºá¡ááŒáẠbot ááá¯ááºááá¯ááºáááºáž áá»áááºáááºááááá«á
- áá»áŸá±á¬ááºáá¬ážáááºá
ááááá±ážáá»ááºáá»á¬áž â NodeVPNT ááŒá¿áá¬áá»á¬áž (VPS ááá¯á· ping áááŸáááŒááºáž)á BirdVPNT ááŒá¿áá¬áá»á¬áž (ááŸááºá ááºááŸááºáááŸáááŒááºáž)á AntifilterDownloadTroubles (ááááºááá¯á·áá¬ážáá±á¬ IP ááááºá á¬áá»á¬ážááᯠáááºáá¬ááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬áž)á SiteTroubles (áá¶ááŒáá¹áá¬ááá¯ážááŒáá·áº ááŒá±ážáááºážááááŸáááá¯ááºáá«) - á áá áºááááá±ážáá»ááºáá»á¬ážá á¥ááá¬á HostGrowingDiskReadLatency (á á»á±ážáá±á«áá±á¬ SD áááºááẠáááºááááá¯ááºááŒá áºáá¬áááº)
á á±á¬áá·áºááŒáá·áºáááºáááºááŸá¯ ááá°áá¬-
ansible-playbook ./monitoring.py -l monitoring-preprod
Prometheus á¡ááœáẠAuto Discovery ááᯠ/etc/prometheus/auto_http ááá¯ááºááœá²ááœáẠááŒááºáááºáááºááŸááºáá¬ážááŒá®ážá á á±á¬áá·áºááŒáá·áºááŒááºážááá¯á· host áá áºáá¯áá±á«ááºážááá·áºááŒááºážá á¥ááá¬áá áºáᯠ( host áá»á¬ážááᯠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº á á±á¬áá·áºááŒáá·áºáááºááá¯ááºáá«)
bash << 'EOF'
HOSTNAME=hm-bananapi-1
IP_ADDRESS=`ssh -G $HOSTNAME | awk '/^hostname / { print $2 }'`
ssh monitoring-preprod sudo sponge /etc/prometheus/auto_http/$HOSTNAME.json << EOF2
[
{
"targets": ["$IP_ADDRESS:9100"],
"labels": {
"env": "prod",
"hostname": "$HOSTNAME"
}
}
]
EOF2
EOF
TODO- áá¶á·ááá¯ážáá±ážáá° 2 áá¯á BPI 2 áá¯á áá¬á áºáá»á¬áž áá»ááºááœááºááŸá¯
á¡áá¬á¡á¬ážáá¯á¶ážá¡ááŒááºá áááºáá±á¬ááºááŸá¯áá±ážáá°áá ẠáŠáž á ááœááºáááºáá²á· ááŒá¿áá¬ááŸáá áá«ááŸááá¯áẠá¡ááºáá¬áááºá¡ááœáẠáá±ážáá±á¬ááºááá¯á· áá±á·ááœá¬ážáá¬áá»áá¯ážá á áá¬ááœá±áá²á· á¡ááŒá¬ážáá°á·á¡áá»ááºáá»á¬áž áá«áá²á·áááºáá±á¬ááºá០á¡ááºáá¬ááẠáááºááŒá®áž á¡áá¯ááºáá¯ááºááá¯ááºá á±ááá¯á· áá¶á·ááá¯ážáá±ážáá° ááŸá áºáá±á¬ááºáá²á· áá»áááºáááºááá¯á· á á®á ááºáá¬ážáá«áááºá
Multi-wan áá±á«ááºážá
ááºááœáẠá¡ááá·áºááŒáá·áºáá¯á¶áž á¡áá¯á¶ážááŒá¯áá°á¡ááœá±á·á¡ááŒá¯á¶ááᯠáá±á¬áºááŒáá¬ážáá«áááºá
áá®á¡ááœá±á·á¡ááŒá¯á¶ááᯠááá·áºááœááºážá ááºážá á¬ážááŒá®áž Multihoming áᬠââáŠážá á¬ážáá±ážááá¯ááºáá±ážáá«áá°ážá ááŸá¯á¶ážáááá·áºááŒááºážáá¬ááŒá áºáááºááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá Linux ááá±á¬ááºáá¯á¶ážááœááºáá¬ážááŸááºážáá»á¬ážááœáẠá¡áá¬á¡á¬ážáá¯á¶ážááẠcommand áá áºáá¯áááºážááŒáá·áº á¡áá¯ááºáá¯ááºááá·áºáááºáᯠáááºááá±á¬áºáááºážá
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5
ááá¯á·ááŒá±á¬áá·áº ááŸá¯á¶ážáááá·áºááŸá¯áá áºáá¯á០ááŸá±á¬ááºááŸá¬ážáááºá¡ááœáẠBPI 2 áá¯ááᯠáá°áᬠáááºáá±á¬ááºááŸá¯áá±ážáá°áá áºáŠážáᶠáá»áááºáááºáᬠáááºážááá¯á·ááᯠáá áºáá¯ááŸáá·áºáá áºáᯠáá»áááºáááºáᬠbird/OSPF ááŸáá áºááá·áº áá áºáá¯ááŸáá·áºáá áºáᯠáá»áááºáááºááŸá¯ááŒá¯áá¯ááºáá«á
ááá¯á·áá±á¬ááºá áááºáá±á¬ááºááŸá¯áááŸáááá¯ááºáá«á (á¡ááºáá¬áááºá DNS) áá
áºáá¯á
á®ááœáẠáá°áá®áá±á¬ IP ááááºá
á¬ááᯠááŒá±á¬áºááŒá¬áá«áááºá ááá¯ááá¯áááºááŸá¬á áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááá¯ááºááá¯áẠáá¯á¶áá±áááºážááŒá±á¬ááºážááᯠááááºááŸááºáá²á ááŸááºááŸáááá·áº áááºážááŒá±á¬ááºážááᯠáááºááŸááºáááºááŒá
áºáááºá áá«ááŒá±ááŸááºážáá»ááºááá¯á
á°ážá
ááºáž
á€áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá±á¬ááºá¡áááºááá±á¬áºáá±ážáá«á ááá¯ážááœá¬ážááŸáá±á¬ ááá¯ááá¯áá¬ááá¯ááºážáááºááẠá€áá±áá¬ááœáẠááŸáá·áºááœááºáá áºáá¯á¡ááŒá Ạáá á¬ážáá²á·ááẠ(Aliexpress á០áá±á¬ááºááŸááá¬áá±á¬ á¡áá¬á¡á¬ážáá¯á¶ážááá¯ááºáá«á á¡ááŒá¬ážá¡áœááºááá¯ááºážá ááá¯ážá Layta á áá áºáááºá¡ááœááºáž ááá¯á·áá±á¬ááºáá±ážáááºáᯠáááááŒá¯áá¬ážáá±á¬áºáááºáž áá áºááá»á±á¬áºááœá¬ážááŒá®á áá¯ááááá¶á·ááá¯ážáá°ááŸá¬ á¡áá»áááºáááŸááá« quarantine ááá¯ááºáá® áá±áááºááᯠááá¯ážáá»á²á·áááºá áá±áááºá¡ááœáẠáá¶áá¶ááœáẠáá°ážáá¬ážáá±á¬ á¡áá±á«ááºáá áºáá¯áᬠáááá¯ááºáááº)á
R64 ááá¯áááºááá¯ááŸá¬áá°áááá²
áá¯ááºááá¯ááºááá¯ááºá ááá¬ážáááºá
ááá¯ážááŸá¬ááŸááááºá
áá»ááºáá»ááºážá¡á±á¬áºáá«ááŸá¬áᬠááá¯áá±á¬ááºážáá«áááºá
á¡á ᬠ+ EU ááá¯á·ááá¯áẠUS plug standard ááá¯á¡ááŒá±á¬ááºážááŒá¬ážáá«á- á¡áá°á á¯ááºááœááº- áá±ááá¯ááºáá®/áááºáá¬áá»á¬ážá CPU ááŸáá·áº switch chip ááŸá áºáá¯áá¯á¶áž áá°áá±áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
- wifi á¡ááºáááºáá¬á
á¥ááá¬á¡á¬áž
ááœá²ááœá²áá»ááºáá áºáá¯ááŸááá«ááẠ- ááá¬ážáááºá ááá¯ážááœáẠááá¯á·áá±á¬ááºáááẠá¡áá»áááºá¡áááºááŒá¬á¡á±á¬áẠáá¯á¶áá±á¬ááºááŸá¯áááŸááá² ááŒáá·áºáá¬ážáá¬áááºá áááºáá±áá»á¬ Judy Huang ááẠá¡ááŸá¬ážá¡ááœááºážáááŸááᯠáá»áœááºá¯ááºá¡á¬áž áá¯á¶ááŒááºáá²á·ááŒá®áž ePacket ááᯠ$5 ááŒáá·áº áááºááœá±ážáá»ááºááá¯ááºáá±á¬áºáááºáž áá¯ááŸá¬ážá¡ááœáẠEMS ááŸá¬ >$33 áá¬ááŸááááºááᯠáá»áœááºá¯ááºááŒááºáááºá áááŸá áºááŒáá¯á·ááœááºáá±á¬ááºážáá±á¬áºáááºáž áá áá¯ážááááºááá«á ááá¯á·á¡ááŒááºá áááºááẠááá¯á·áá±á¬ááºááŸá¯á¡ááœáẠá¡ááŒá¬ážááá¯ááºáá¶ááᯠááœá±ážáá»ááºáá«á (ááá¯ááºááŒá®ážá¡á¬ážáá¯á¶ážááᯠááŒááºááœá¬ážáááº)á ááá¯á·áá±á¬ááºáááŸá¬ ~$5 ááŒá áºáááºá Russophobes?.. áá«áá±ááá·áº ááŒááºáá áºá¡ááœáẠááá¯á·áá±á¬ááºáá ~30$ áá² ááŸááá¬ááᯠááœá±á·ááá¯ááºááá±á¬á· á áááºá¡á±ážááœá¬ážáááºá
ááááºá¡áá±áá²á· Judy á á¡áááá·áºáá¯ááºááá¯á· áááºážááŸááºážáá²á·áá±ááá·áº áá±ážáá»á±ááŒááºážáááŒá¯áá²á·áá«áá°ážááá²ááœááºá á¡ááá¯á¡áá»á±á¬ááºááœá±áá±ážáá»á±ááŸá¯ áá¡á±á¬ááºááŒááºá á±ááẠáááºáá±á«áºááœáẠáá»áŸá±á¬á·ááá·áºáá«á áá°ááᶠá á¬áá±ážááŒá®áž ááá¯á·áááᯠáá¯á¶ááŸááºá¡ááá¯ááºáž áá»áŸá±á¬á·áá±ážáááºá á¡á±á¬ááºááŒááºááŸá¯á
ááá á¹á áááºáá»á¬ážááá¯
á¡áá¬á¡á¬ážáá¯á¶áž ááŒá®ážááŒáá·áºá á¯á¶á áœá¬ á¡áá¯ááºáááŒá áºáá±ážáá«áá°ážá
ááœááºááá¯ááºáá±áž
Ansible=Python command áá»á¬ážááᯠ20-30 á áá¹ááá·áºááŒá¬á¡á±á¬áẠááŒááºážááŒááºážáá»ááºáž áá¯ááºáá±á¬ááºáá«áááºá x86 áááºááºáá±á¬á·áá áºáá¯á¶ážááẠááá¯ááŸááºáá±á¬ á¡ááá¯ááºážá¡áá¬áá áºáá¯á ááá¯á·á¡ááŒááºá á¡á ááá¯ááºážááœáẠáááºážááá¯á·ááᯠá á áá¹ááá·áº áá»áŸááºááŒááºá áœá¬ áááºááŒá®ážáá±á¬áẠáááááá¬áᬠááŸá±ážááœá±ážááœá¬ážáááºá CPU á¡áá°áááºááŒááºáž (throttling) ááŒá±á¬áá·áº ááŒá áºááá¯ááºáááºá Go áá¯ááºááẠá¡áá¯ááºáá¯ááºááẠá¡áá»áááºááŒá¬áááº-
# запÑÐŸÑ ÐŒÐµÑÑОк ÐŽÐ»Ñ Ð¿ÑПЌеÑÐµÑ ÐžÐ· node_exporter Ма Go
$ time curl -s http://172.30.1.1:9100/metrics > /dev/null
real 0m6,118s
user 0m0,005s
sys 0m0,009s
# ПЎМакП ÑеЌпеÑаÑÑÑа 51 гÑаЎÑÑ, Ме Ñак О ЌМПгП
sa@bananapir64:~$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
51700
ááá¯ááºááá¯ááº
Wifi á¡áá¯ááºáá¯ááºáá±á¬áºáááºáž Armbian ááœáẠáá áºáááºááá·áºááŒá¬ááŒá®ážáá±á¬áẠáááºááœá¬ážááẠáᯠáá±ážáá¬ážáá¬ážáááº-
sa@bananapir64:~$ dmesg | grep -E 'mt7622_wmac.*timeout'
[470303.802539] mt7622_wmac 18000000.wmac: Message 38 (seq 3) timeout
[470314.042508] mt7622_wmac 18000000.wmac: Message 50 (seq 4) timeout
...
ááŒááºáááºá
áááºááŒááºážáááºáᬠá¡áá±á¬ááºá¡áá°ááŒá
áºáááºá ááŸá±á·áááºááá¯á· ááá¯áááºá
Ethernet
Ethernet á¡áá¯ááºáá¯ááºáááºá ááá¯á·áá±á¬áº ~64 áá¬áá®á¡ááŒá¬ááœáẠRXNUMX á០packets (DHCP) áááºááá·áºááœá¬ážáááºá
á¡ááºáá¬áá±á·á
áºááᯠááŒááºáááºá
áááºááŒááºážááẠáá°áá®áá±ážáááº-
ifdown br0; sleep 30; ifup br0
áááá¯ááºáá¬áááºá¡áá
áºááŒá
áºáááºá áááºážááᯠkernel ááœááºáááºááá¶áá±ážáá«á áááºážáááºááá¯áẠLanden Chao ááŒá
áºáááº
source: www.habr.com