αžšαŸ‰αŸ„αžαž‘αŸαžš Banana Pi R64 - Debian, Wireguard, RKN

Banana Pi 64 αž‚αžΊαž‡αžΆαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž”αž“αŸ’αž‘αŸ‡αžαŸ‚αž˜αž½αž™αžŠαŸ‚αž›αžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„ Raspberry Pi αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž…αŸ’αžšαž€ Ethernet αž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžœαžΆαž’αžΆαž…αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αžœαžΆαž‘αŸ…αž‡αžΆ Router αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎαž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž›αžΈαž“αž»αž…αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž‡αžΆαž‘αžΌαž‘αŸ…αŸ”

αžšαŸ‰αŸ„αžαž‘αŸαžš Banana Pi R64 - Debian, Wireguard, RKN

αž”αžΆαž‘ αž˜αžΆαž“ Openwrt αžšαž½αž…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“ GUI αž“αž·αž„ CLI αžšαž”αžŸαŸ‹αžœαžΆαŸ” αž˜αžΆαž“ Mikrotik αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αŸ’αžαž„αž‘αŸ€αžαžœαžΆαž˜αžΆαž“ GUI/CLI αžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™ Wireguard αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹... αž‡αžΆαž‘αžΌαž‘αŸ… αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αžΆαž“αžšαŸ‰αŸ„αžαž‘αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž”αžαŸ‹αž”αŸ‚αž“αž”αžΆαž“ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž“αŸƒαž›αžΈαž“αž»αž…αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αŸ’αžœαžΎαž€αžΆαžšαŸ” αž‡αžΆαž˜αž½αž™αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž€αŸ’αžšαŸ„αž˜αžˆαŸ’αž˜αŸ„αŸ‡ BPI, R64, single-board, αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž˜αžΆαž“αž“αŸαž™αžŠαžΌαž…αž‚αŸ’αž“αžΆ - Banana Pi R64 single-board αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžšαžΌαž”αž—αžΆαž–αŸ” αž‘αžΆαž‰αž™αž€αžαžΆαž˜αžšαž™αŸˆ eMMC

αž‡αŸ†αž“αžΆαž‰αžŠαŸ†αž”αžΌαž„αž”αŸ†αž•αž»αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ αž’αž“αžΆαž‚αžΆαžš SBC αž‡αžΆαž‘αžΌαž‘αŸ… αž“αž·αž„αž‡αžΆαž–αž·αžŸαŸαžŸαž‡αžΆαž˜αž½αž™ R64 αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αžšαŸ€αž“αž–αžΈαžšαž”αŸ€αž”αž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž αžΎαž™αž’αžΆαž…αž’αŸ’αžœαžΎαž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αžœαžΆαž”αžΆαž“ αž–αŸ’αžšαŸ„αŸ‡ R64 αž˜αž·αž“αž˜αžΆαž“αž…αŸ’αžšαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΌαž“αžΈαž‘αŸαžš (αž§αž‘αžΆαž αžšαžŽαŸ HDMI) αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αžœαžΈαŸ—αž”αžΆαž“αžšαž›αžαŸ‹ - Wifi, Ethernet, Bluetooth, USB αž‡αžΆαžŠαžΎαž˜αž”αžΆαž“αžˆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž˜αžΆαž“ UART αžαžΆαž˜αžšαž™αŸˆαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αžƒαžΎαž‰αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαž»αžŸ αž αžΎαž™αžαŸ‚αž˜αž‘αžΆαŸ†αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž–αžΈαžšαž”αžΈαž–αžΈαž€αž»αž„αžŸαžΌαž›αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ… R64 αžαžΆαž˜αžšαž™αŸˆ USB-UARTαŸ–

  • αž™αžΎαž„αžšαžαŸ‹αž‘αŸ…αž αžΆαž„αž›αž€αŸ‹αž‚αŸ’αžšαžΏαž„αž”αž“αŸ’αž›αžΆαžŸαŸ‹αžœαž·αž‘αŸ’αž™αž»αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžŸαŸ‚ USB-UART (PL2303, Serial-to-USB)
  • αž—αŸ’αž‡αžΆαž”αŸ‹αž…αž»αž„ USB αž˜αž½αž™αž‘αŸ…αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš αž“αž·αž„αž˜αž½αž™αž‘αŸ€αž UART αž‘αŸ… R64 αžŠαŸ„αž™αž˜αžΆαž“αžαŸ’αžŸαŸ‚αž”αžΈαž€αŸ’αž“αž»αž„αž…αŸ†αž“αŸ„αž˜αž”αž½αž“αžŠαžΌαž…αž€αŸ’αž“αž»αž„αžšαžΌαž”αž—αžΆαž–αžαžΆαž„αž€αŸ’αžšαŸ„αž˜
  • αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžŸαžΌαž›αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžš sudo minicom

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž€αž»αž„αžŸαžΌαž›αž€αŸ’αžαžΆαžšαžαŸ‚αž˜αž½αž™αž“αžΉαž„αž›αŸαž…αž‘αžΎαž„ = αž‡αŸ„αž‚αž‡αŸαž™αŸ”
αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜ αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αžšαŸ‰αŸ„αžαž‘αŸαžš Banana Pi R64 - Debian, Wireguard, RKN

αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžœαž·αž’αžΈαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž”αŸ†αž•αž»αžαž‚αžΊαžαŸ’αžšαžΌαžœαž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž–αžΈαž€αžΆαžαž’αŸαžŸαžŒαžΈαŸ– αž‘αžΆαž‰αž™αž€αžŠαŸ„αž™ αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹ αžšαžΌαž”αž—αžΆαž–αž αžΎαž™αž”αŸ†αž–αŸαž‰αžœαžΆαŸ–

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 αžŠαŸ†αž”αžΌαž„ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž›αžΈαž“αž»αž…αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ”

αž‡αž˜αŸ’αžšαžΎαžŸαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‡αŸ†αž“αž½αžŸαž˜αž½αž™αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎαž€αžΆαž 64Gb αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžšαž½αž…αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„ R8 αžŠαŸ‚αž›αž αŸ…αžαžΆ eMMCαŸ” αž™αŸ„αž„αžαžΆαž˜αž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΈαž‚αžΈ αž™αžΎαž„αž…αž˜αŸ’αž›αž„αžšαžΌαž”αž—αžΆαž–αž‘αŸ…αž§αž”αž€αžšαžŽαŸ
/dev/mmcblk0 αž‘αŸ… BPI, αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰, αžŠαž€ SD card, αž”αžΎαž€ BPI αž˜αŸ’αžαž„αž‘αŸ€αž... αž αžΎαž™αžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ” αž’αŸ’αžœαžΎβ€‹αž˜αŸ‰αŸαž…β€‹αž‘αŸ…β€‹αžœαž·αž‰β€‹αž‘αŸ…β€‹αž˜αž€ Boot select αž€αž»αŸ†αžšαŸ†αžαžΆαž“αŸ”

αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ BPI αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αŸ†αžŽαžαŸ‹αž‘αž„αŸ‹αž–αž·αžŸαŸαžŸαž˜αž½αž™ αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž–αžΈ flash drive αžαžΆαž„αž€αŸ’αž“αž»αž„αž”αžΆαž“αŸ–

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]

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‘αž»αž€αž‡αžΆαž˜αž»αž“αž‘αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž‚αžαžΆαžŸαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž–αž·αžŸαŸαžŸ

root@bpi-r64:~# echo 0 > /sys/block/mmcblk0boot0/force_ro 
root@bpi-r64:~# dd if=preloader_evb7622_64_foremmc.bin of=/dev/mmcblk0boot0

αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αž R64 (αž…αž·αž“) αž”αžΆαž“αžŠαžΆαž€αŸ‹αž”αŸ’αžšαž€αžΆαžŸαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αž–αžΈαžšαž“αŸαŸ‡αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡. αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžœαžΆαž’αŸ’αžœαžΎαž‚αžΊαž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹ (αž˜αž·αž“αž˜αžΆαž“αž€αžΌαžŠαž”αŸ’αžšαž—αž–) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αžΉαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžœαžΆαž‘αŸαŸ”

αž‡αžΆαž‘αžΌαž‘αŸ…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αžšαžΌαž”αž—αžΆαž–αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž•αŸ’αž‘αž»αž€αž–αžΈ eMMC αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αž—αžΆαž–αž–αžΈαž‘αž‘αŸ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžšαžŽαžΈαž‘αžΆαŸ†αž„αž–αžΈαžš (SD/eMMC) αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŸαžšαžŸαŸαžšαž―αž€αžŸαžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αž‘αž»αž€αž‡αžΆαž˜αž»αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαž SD, ATF, u-boot) αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αž‘αŸ…αž•αŸ’αž‘αž»αž€αžαžΊαžŽαŸ‚αž›αŸ” αž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αž“αŸ…αžαŸ‚αž˜αžΆαž“ αž€αŸ†αž–αž»αž„αž’αž—αž·αžœαžŒαŸ’αžαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž™αžΎαž„ αžšαžΏαž„αžŸαŸ†αžαžΆαž“αŸ‹αž‚αžΊαžαžΆαžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αžΎαž™αž˜αž·αž“αž’αžΈαž‘αŸαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž‘αžΆαž‰αž™αž€αžαžΆαž˜αžšαž™αŸˆ eMMC αž“αž·αž™αžΆαž™αž±αŸ’αž™αžαŸ’αžšαž„αŸ‹αž‘αŸ… αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž”αŸ’αžšαžΎαžœαžΆαž‘αŸ αž€αžΆαž SD αž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ„αž™αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž±αŸ’αž™αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αŸ”

αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαŸ” αž’αžΆαž˜αž”αŸŠαžΈαž“

αž—αžΆαžšαž€αž·αž…αŸ’αž…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž”αžΌαž„αž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš VPN αžαžΆαž˜αž’αž˜αŸ’αž˜αž‡αžΆαžαž· Wireguard αŸ” αžœαžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αžšαž€β€‹αžƒαžΎαž‰β€‹αž—αŸ’αž›αžΆαž˜β€‹αžαžΆβ€‹αž“αŸ…β€‹αžαžΆαž„β€‹αžαžΊαžŽαŸ‚αž›β€‹αžœαžΆβ€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‡αž½αž”β€‹αž”αŸ’αžšαž‡αž»αŸ†β€‹αž‚αŸ’αž“αžΆβ€‹αž“αž·αž„β€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž”αž‹αž˜αž€αžαžΆβ€‹αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αžŸαžΆαž„αžαžΊαžŽαŸ‚αž›αž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αžŠαžΌαž…αž‘αž˜αŸ’αž›αžΆαž”αŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž‡αžΆαž˜αž½αž™ x86 αž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž˜αŸ‰αžΌαžŒαž»αž›αžαžΊαžŽαŸ‚αž›αžŠαŸ„αž™αž”αŸ’αžšαžΎ DKMS αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαžŸαžΆαž„αžŸαž„αŸ‹αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΌαž…αŸ—αž“αŸ…αž›αžΎ arm64 αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžαŸ’αž‰αž»αŸ†αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αŸ‰αžΌαžŒαž»αž›αžαžΊαžŽαŸ‚αž›αž˜αž½αž™αž‘αŸ€αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαŸ”αž›αŸ” αž‡αžΆαž‘αžΌαž‘αŸ…αžœαžΆαž”αž„αŸ’αž αžΆαž‰αžαžΆαž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αžαžΊαžŽαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαž˜αžΌαž›αž•αŸ’αžαž»αŸ†αž™αŸ‰αžΆαž„αž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ x86 αž€αŸ’αžαŸ…αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž•αŸ’αž‘αŸαžšαž‘αŸ… R64 αžŠαŸ„αž™αž€αžΆαžšαž…αž˜αŸ’αž›αž„αžŸαžΆαž˜αž‰αŸ’αž‰ αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αŸ”

αžšαžΏαž„αž˜αž½αž™αž‘αŸ€αžαž‚αžΊαž•αŸ’αž“αŸ‚αž€ userspace αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ Debian αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ arm64 αž˜αžΆαž“αžšαž½αž…αž αžΎαž™αž“αŸ…αž›αžΎ packages.debian.org αž αžΎαž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž„αŸ’αž€αžΎαžαž’αŸ’αžœαžΈαž‘αžΎαž„αžœαž·αž‰αž‘αŸαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αž•αž›αž·αžαž€αž„αŸ‹αž˜αž½αž™αž‘αŸ€αž I αž…αŸ’αžšαž€ ធរ αž“αŸ…αž›αžΎ BPI R64 αŸ”
αž¬αž•αŸ’αž‘αž»αž™αž‘αŸ…αžœαž·αž‰ αž“αŸαŸ‡αŸ– αž•αŸ’αž“αŸ‚αž€ userspace αž‚αžΊ Armbian αž αžΎαž™αžαžΊαžŽαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„ αž›αŸ„αž€ Frank- αž€. αžšαžΌαž”αž—αžΆαž–αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž’αžΆαž…αž‘αžΆαž‰αž™αž€αž”αžΆαž“αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡.

αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž›αžΎαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž•αŸ’αž“αŸ‚αž€αž‘αž“αŸ‹αž“αŸƒ R64 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž›αžΎ αžœαŸαž‘αž·αž€αžΆ. αž“αž·αž™αžΆαž™αž‡αžΆαž‘αžΌαž‘αŸ… αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž•αž›αž·αžαžαŸ’αž›αž½αž“αž―αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž±αŸ’αž™αžšαŸ‰αŸ„αžαž‘αŸαžšαž–αŸαž‰αž“αž·αž™αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Openwrt αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αžŸαžΆαžšαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸ Frank αž˜αž€αž–αžΈαž”αŸ’αžšαž‘αŸαžŸαž’αžΆαž‘αžΊαž˜αŸ‰αž„αŸ‹ αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž™αŸ‰αžΆαž„αž›αžΏαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžαžΊαžŽαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Debian αŸ” αž‚αž½αžšαž±αŸ’αž™αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž› Frank αž‚αžΊαžŸαž€αž˜αŸ’αž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž‚αŸ’αžšαž”αŸ‹αžœαŸαž‘αž·αž€αžΆαžœαŸαž‘αž·αž€αžΆαŸ”

αž’αž„αŸ’αž‚αž€αžΆαžšαž€αž“αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž€αžΆαžšαŸ– αžαŸ’αžŸαŸ‚αž—αŸ’αž›αžΎαž„

αžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž” αž€αŸ†αž‘αž»αž„αž–αŸαž›αž’αž—αž·αžœαžŒαŸ’αž/αžŸαžΆαž€αž›αŸ’αž”αž„ αžŠαžΆαž€αŸ‹ SBC (αž˜αž·αž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆ BPI) αž“αŸ…αž›αžΎαžαž» αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžŸαŸ‚ Ethernet αž‘αŸ…αž€αžΆαž“αŸ‹αžœαžΆαž–αžΈαž”αŸ’αžšαž—αž–αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž“αŸ…αž‘αžΌαž‘αžΆαŸ†αž„αž”αž“αŸ’αž‘αž”αŸ‹/αž€αžΆαžšαž·αž™αžΆαž›αŸαž™αž‘αžΆαŸ†αž„αž˜αžΌαž›αŸ” αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆ αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αžαž›αŸ‹αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‡αžΆαž˜αž½αž™αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž“αŸ„αŸ‡αž’αžΆαž…αžαžΌαž… αž αžΎαž™αž‡αžΆαžŠαŸ†αž”αžΌαž„ Wifi αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αžŠαŸ†αž”αžΌαž„ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž‘αž·αž‰ USB-Wifi β€œwhistle” αžŠαŸ‚αž›αž˜αžΆαž“αžαž˜αŸ’αž›αŸƒαžαŸ„αž€ αžŠαŸ„αžαžœαžΆαž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž…αŸ’αžšαž€αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸ…αž›αžΎ BPI αž αžΎαž™αž—αŸ’αž›αŸαž…αž’αŸ†αž–αžΈαžαŸ’αžŸαŸ‚αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‘αž·αž‰ TP-LINK TL-WN725N USB 2.0 αžŠαŸ‚αž›αž˜αž·αž“αž™αžΌαžšαž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαžœαžΆαž“αžΉαž„αž˜αž·αž“αžšαž›αžαŸ‹αž‘αŸαŸ– αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž•αŸ’αž›αž»αŸ†αž€αž‰αŸ’αž…αŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαžαžΊαžŽαŸ‚αž› αžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” (αž€αŸ’αžšαŸ„αž™αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆ RTL8XXXU αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž“αŸ…αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž’αž“αž»αžœαžαŸ’αžαž”αžΆαž“ ) αž αžΎαž™αžαŸ’αžŸαŸ‚αž’αŸŠαžΈαžŸαžΊαžšαžŽαž·αžαž’αŸ’αžœαžΎαž±αŸ’αž™αžαžΌαž…αžšαžΌαž”αžšαžΆαž„αž”αž“αŸ’αž‘αž”αŸ‹αž˜αž½αž™αžšαž™αŸˆαŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž€αž˜αŸ’αž…αžΆαžαŸ‹αžαŸ’αžŸαŸ‚αžŠαŸ„αž™αž˜αžΆαž“αž‡αŸ†αž“αž½αž™αž–αžΈ Tenda MW3 (αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Wi-Fi Mesh)αŸ– αžαŸ’αž‰αž»αŸ†αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαžΆαž€αŸ‹αž‚αžΌαž”αž˜αž½αž™αž“αŸ…αž€αŸ’αžšαŸ„αž˜αžαž» αž αžΎαž™αž—αŸ’αž‡αžΆαž”αŸ‹ BPI αž‘αŸ…αž…αŸ’αžšαž€ LAN αžšαž”αžŸαŸ‹αž€αŸ’αžšαŸ„αž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαŸ’αžŸαŸ‚ Ethernet αž”αŸ’αžšαžœαŸ‚αž„αž˜αž½αž™αž˜αŸ‰αŸ‚αžαŸ’αžšαŸ” αž‡αŸ„αž‚αž‡αŸαž™αŸ”

Wireguard, RKN, αž”αž€αŸ’αžŸαžΈ

αžšαžΏαž„αž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž”αŸ’αžšαžΎ Banana PI αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αžΊαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαž‘αŸ…αž€αžΆαž“αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„αžŠαŸ„αž™ RKN αž‡αžΆαž–αž·αžŸαŸαžŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžαžΆαž˜ Telegram αž“αž·αž„ Slack αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αŸ” αž’αžαŸ’αžαž”αž‘αž’αŸ†αž–αžΈ Habre αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αžšαž½αž…αž αžΎαž™αŸ– αžŠαž„, Π΄Π²Π°, αž”αžΈ.

αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž™αŸ‰αžΆαž„αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαžŠαŸ„αž™αž”αŸ’αžšαžΎ AnsibleαŸ– αžαŸ†αžŽ.

VPS αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Ubuntu 18.04αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αž˜αž»αžαž„αžΆαžšαž“αŸ…αž›αžΎ hosters αž–αžΈαžšαž“αŸ…αž’αžΊαžšαŸ‰αž»αž”αŸ– Amazon αž“αž·αž„ Digital Ocean αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„ Armbian αžαžΆαž„αž›αžΎαž“αŸ…αž›αžΎ R64 αžœαžΆαž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ ssh αž€αŸ’αžšαŸ„αž˜αžˆαŸ’αž˜αŸ„αŸ‡ hm-bananapi-1 αž“αž·αž„αž˜αžΆαž“αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ” αž™αžΎαž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™ Ansible αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž‡αžΆαž”αŸ‹αž›αžΆαž”αŸ‹ αž“αž·αž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž“αŸ…αž›αžΎ 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αžαžαž‚αž½αžšαžαŸ‚αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž… αžŠαžΌαž…αŸ’αž“αŸαŸ‡.

αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜ Ansible αž“αŸ…αž€αŸ’αž“αž»αž„ Python

αž’αŸ’αž“αž€αž’αžΆαž…αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαžΎαž‰αžαžΆαž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ YAML αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Ansible αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸŠαž·αž“αž€αžΌαžŠαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž” Python αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαŸ€αž”αž’αŸ€αž” αžšαž”αŸ€αž”αž”αžΎαž€αžŠαŸαž˜αž·αž“αž”αž€αŸ’αžŸαžΈαžαžΆαž˜αžšαž”αŸ€αž”αž’αž˜αŸ’αž˜αžαžΆαŸ–

- 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")

αž€αžΆαžšαžŸαžšαžŸαŸαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Ansible αž“αŸ…αž€αŸ’αž“αž»αž„ Python αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž€αžΌαžŠαž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αž‡αžΆαž‘αžΌαž‘αŸ…αž”αžΎαž€αž›αž‘αŸ’αž’αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž—αžΆαžŸαžΆαž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ…αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αž€αŸ’αžŸαžΈαž“αŸ…αž›αžΎ R64 αž“αž·αž„ VPS:

install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")

αž˜αžΎαž›αž€αžΌαžŠαž˜αž»αžαž„αžΆαžš install_bird().

αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ pybook αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž αž“αŸ…αž‘αžΈαž“αŸαŸ‡. αž˜αž·αž“αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎ pybook αž“αŸ…αž‘αžΎαž™αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ”

αžαžΎαž‚αžΆαžαŸ‹αž‚αž·αžαž™αŸ‰αžΆαž„αžŽαžΆ αžαŸ’αžŸαŸ‚αž‘αžΉαž€ αž€αŸ’αž“αž»αž„αž±αž€αžΆαžŸαž“αŸαŸ‡αŸ”

αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αŸ” Prometheus

αžŸαžšαž»αž”αŸ– αžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŒαžΈαž“ αž“αž·αž„ αž•αž“αž αžΊαž αž•αž„αžŠαŸ‚αžš αž‡αžΆαž‘αžΌαž‘αŸ…αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‚αžΊαž˜αž·αž“αž’αžΈαž‘αŸαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž’αžΆαž…αž”αŸ†αž”αŸ‚αž€αž”αžΆαž“αžšαž½αž˜αž‘αžΆαŸ†αž„αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžšαž”αžŸαŸ‹αž…αž·αž“αŸ”

αž€αžΆαžšαž’αžΆαž”αŸ‹αžŠαŸαžαžαžΊαžŽαŸ‚αž›αž€αŸαž’αžΆαž…αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž•αž„αžŠαŸ‚αžšαŸ– αž§αž‘αžΆαž αžšαžŽαŸ αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž’αžΆαž”αŸ‹αžŠαŸαžαžαžΊαžŽαŸ‚αž› 5.4 => 5.6 αž’αž‰αŸ’αž…αžΉαž„ Wireguard αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αž αžΎαž™ αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‡αž½αžŸαž‡αž»αž›αž‘αŸ... αžŠαž›αŸ‹ 5.4 αžαžΊαžŽαŸ‚αž›αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„ αž•αŸ’αž›αžΌαžœαžšαžΌαž„αž€αŸ’αžšαŸ„αž˜αžŠαžΈαž‘αŸ…αž€αžΆαž“αŸ‹ VPS pinged αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž€αŸ’αžŸαžΈαž˜αž·αž“αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž€αŸ†αž αž»αžŸ "BGP Error" ... "αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžœαž·αž›αžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αžŠαŸ„αž™αž—αžΆαž–αž—αŸαž™αžšαž“αŸ’αž’αžαŸ‹" (c) αž‘αŸ… 5.6; αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ… 5.4 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž“αŸ’αž™αžΆαžšαž–αŸαž›αž“αŸ…αž€αŸ’αž“αž»αž„ TODO αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžšαŸ‰αŸ„αžαž‘αŸαžš αž“αž·αž„ VPS αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ (αž“αŸ…αž›αžΎ x86 αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ 18.04) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸˆ

  • prometheus, alertmanager, blackbox_exporter - αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ docker
  • αž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‰αžΎαž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ‰αž»αžŸαŸ’αžαž·αŸαž‘αžΌαžšαž›αŸαžαžŠαŸ„αž™αž”αŸ’αžšαžΎ metalmatze/alertmanager-bot bot - αž•αž„αžŠαŸ‚αžšαž“αŸ…αž€αŸ’αž“αž»αž„ Docker
  • tor αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ bot αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ bot αž’αžΆαž…αžŠαžΆαžŸαŸ‹αžαžΏαž“αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸ…αž–αŸαž›αž˜αžΆαž“αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸαž‘αŸαž€αŸ’αžšαžΆαž˜αž“αŸ…αžαŸ‚αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž αžΎαž™ bot αžαŸ’αž›αž½αž“αžœαžΆαž˜αž·αž“αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž”αžΆαž“αž‘αŸαŸ”
  • αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αž αž€αžΆαžšαž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αŸ– NodeVPNT αž”αž‰αŸ’αž αžΆ (αž‚αŸ’αž˜αžΆαž“ ping αž‘αŸ… VPS), BirdVPNT αž”αž‰αŸ’αž αžΆ (αž˜αž·αž“αž˜αžΆαž“αžœαž‚αŸ’αž‚αž”αž€αŸ’αžŸαžΈ), AntifilterDownloadTroubles (αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„), SiteTroubles (αž‘αžΌαžšαž›αŸαžαž˜αž·αž“αž›αŸ’αž’αž‚αžΊαž˜αž·αž“αž˜αžΆαž“αž‘αŸ)
  • αž€αžΆαžšαžŠαžΆαžŸαŸ‹αžαžΏαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž§αž‘αžΆαž αžšαžŽαŸ HostGrowingDiskReadLatency (αž€αžΆαž SD αžαŸ„αž€αž€αŸ’αž›αžΆαž™αž‡αžΆαž˜αž·αž“αž’αžΆαž…αž’αžΆαž“αž”αžΆαž“)

αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž§αž‘αžΆαž αžšαžŽαŸαŸ–

ansible-playbook ./monitoring.py -l monitoring-preprod

Auto Discovery αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Prometheus αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αžαž /etc/prometheus/auto_http αžŠαŸ‚αž›αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‘αŸ…αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ (αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜)αŸ–

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, 2 BPI, αž—αžΆαž–αž”αžšαžΆαž‡αŸαž™αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™αŸ”

αž”αž“αŸ’αžαŸ‚αž˜αž–αžΈαž›αžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„ αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αžΈαžš αžŠαžΎαž˜αŸ’αž”αžΈαž²αŸ’αž™αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž”αž“αŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž”αžŽαŸ’αžαžΆαž‰ αž¬αž–αž½αž€αž‚αŸαž—αŸ’αž›αŸαž…αž”αž„αŸ‹αžαŸ’αž›αŸƒαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž‡αžΆαžŠαžΎαž˜ αž“αž·αž„αž€αžαŸ’αžαžΆαž˜αž“αž»αžŸαŸ’αžŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αž”αŸ†αž•αž»αžαž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸƒ multi-wan αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆ αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ Mwan3 αž€αŸ’αžšαŸ„αž˜ Openwrt αŸ” αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž˜αžΆαž“αž˜αž»αžαž„αžΆαžšαžŸαž˜αŸ’αž”αžΌαžšαž”αŸ‚αž” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ αž“αž·αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαž‡αžΆαž‘αžΌαž‘αŸ…αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ multi-wan αž‚αžΊαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαžŽαžΆαžŸαŸ‹αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž˜αž½αž™αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž€αž‚αŸαž αž‘αŸ†αž–αŸαžšαžαŸ’αž›αŸ‡αž–αžΈαž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αž–αžΈαžšαž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™ αž–αž½αž€αž‚αŸαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž…αžΌαž›αž…αž·αžαŸ’αžαž‘αŸ αž–αž½αž€αž‚αŸαž“αžΉαž„αžˆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš => "αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ"αŸ”

αžŠαŸ„αž™αž‚αž·αžαž–αžΈαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαžΆ multihoming αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αžΆαž‘αž·αž—αžΆαž–αž“αŸ…αž‘αžΎαž™αž‘αŸ αž˜αžΆαž“αžαŸ‚αž”αžšαžΆαž‡αŸαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ, αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαž“αŸƒαž›αžΈαž“αž»αž…αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αžŠαžΌαž…αž‡αžΆ:

ip route add default 
    nexthop via 192.168.1.1 weight 10 
    nexthop via 192.168.2.1 weight 5

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž…αŸ†αžŽαž»αž…αž“αŸƒαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αžαŸ‚αž˜αž½αž™ αž™αžΎαž„αž™αž€ 2 BPIs αž—αŸ’αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆαž‘αŸ…αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž˜αž½αž™ αž—αŸ’αž‡αžΆαž”αŸ‹αž–αž½αž€αžœαžΆαž‘αŸ…αž‚αŸ’αž“αžΆαž‘αŸ…αžœαž·αž‰αž‘αŸ…αž˜αž€ αž“αž·αž„αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αžšαžœαžΆαž„αž‚αŸ’αž“αžΆαž“αžΉαž„αž‚αŸ’αž“αžΆαžαžΆαž˜αžšαž™αŸˆ bird/OSPF αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž™αžΎαž„αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IP αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž›αžΎαž“αžΈαž˜αž½αž™αŸ— αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αžΆαž“ (αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž DNS)αŸ” αž“αŸ„αŸ‡αž‚αžΊαž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž€αŸ†αžŽαžαŸ‹αž•αŸ’αž›αžΌαžœαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αžšαž™αŸˆαž”αž€αŸ’αžŸαžΈαŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž“αŸ…αž‘αžΈαž“αŸαŸ‡ .

αž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž‘αžΎαž™ αž˜αŸαžšαŸ„αž‚αž†αŸ’αž›αž„αž˜αŸαžšαŸ„αž‚αžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αž”αžΆαž“αž›αŸαž„αž›αŸ’αž”αž·αž…αž˜αž½αž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡ (αž˜αž·αž“αž˜αŸ‚αž“αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž”αžΆαž“αž˜αž€αž–αžΈ Aliexpress αž‘αŸ αž αžΆαž„αž’αž“αž‘αžΆαž‰αž˜αž½αž™αž‘αŸ€αž Layta αž”αžΆαž“αžŸαž“αŸ’αž™αžΆαžαžΆαž“αžΉαž„αž…αŸ‚αž€αž…αžΆαž™αž€αŸ’αž“αž»αž„αž˜αž½αž™αžŸαž”αŸ’αžαžΆαž αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‡αžΆαž„αž˜αž½αž™αžαŸ‚αž”αžΆαž“αž€αž“αŸ’αž›αž„αž•αž»αžαž‘αŸ…αž αžΎαž™ αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αž‘αžΈαž–αžΈαžšαž˜αž·αž“αž˜αžΆαž“αž–αŸαž›αž‘αŸ αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΈαž€αžαŸ’αžŸαŸ‚αž˜αž»αž“αž–αŸαž›αžŠαžΆαž€αŸ‹αž±αŸ’αž™αž“αŸ…αžŠαžΆαž…αŸ‹αž–αžΈαž‚αŸ αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αžΆαž“αžαŸ‚αžšαž“αŸ’αž’αžαž½αž„αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž‡αž‰αŸ’αž‡αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αžŸαŸ‚)αŸ”

αžšαž”αŸ€αž”αž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰ R64

αž”αž“αŸ’αž‘αŸ‡αžαŸ’αž›αž½αž“αž―αž„αž‚αžΊαž“αŸ…αž€αŸ’αž“αž»αž„αž αžΆαž„αž•αŸ’αž›αžΌαžœαž€αžΆαžš αžŸαŸŠαžΈαžŽαžΌαžœαŸ‰αžΌαž”.
αžœαžΆαž€αŸαž›αŸ’αž’αž•αž„αžŠαŸ‚αžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αž—αŸ’αž›αžΆαž˜αŸ—αŸ–

  • αž’αžΆαž αžΆαžšαžΌαž”αžαŸ’αžαž˜αŸ’αž— + αž‡αžΌαž“αžŠαŸ†αžŽαžΉαž„αžŠαž›αŸ‹ EU αž¬αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαžŠαŸ„αžαžšαž”αžŸαŸ‹αžŸαž αžšαžŠαŸ’αž‹αž’αžΆαž˜αŸαžšαž·αž€
  • αž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž€αŸ†αžŠαŸ…: αžœαž·αž‘αŸ’αž™αž»αžŸαž€αž˜αŸ’αž˜ / αž€αž„αŸ’αž αžΆαžš; αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‘αžΆαŸ†αž„ CPU αž“αž·αž„ Switch chip αž€αŸ†αž–αž»αž„αž‘αžΎαž„αž€αŸ†αžŠαŸ…
  • αž’αž„αŸ‹αžαŸ‚αž“ wifi, αž§αž‘αžΆαž αžšαžŽαŸ

αž˜αžΆαž“αž—αžΆαž–αžαž»αžŸαž”αŸ’αž›αŸ‚αž€αž‚αŸ’αž“αžΆαž˜αž½αž™ - αžαž˜αŸ’αž›αŸƒαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‘αŸ…αž‡αžΆαžαŸ’αž–αžŸαŸ‹αž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž αžΆαž„αž•αŸ’αž›αžΌαžœαž€αžΆαžšαž˜αž½αž™αžšαž™αŸˆαŸ” αž’αŸ’αž“αž€αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„ Judy Huang αž”αžΆαž“αž”αž‰αŸ’αž…αž»αŸ‡αž”αž‰αŸ’αž…αžΌαž›αžαŸ’αž‰αž»αŸ†αžαžΆαž˜αž·αž“αž˜αžΆαž“αž€αŸ†αž αž»αžŸαž‘αŸ αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ ePacket αž€αŸ’αž“αž»αž„αžαž˜αŸ’αž›αŸƒ 5 αžŠαž»αž›αŸ’αž›αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αžƒαžΎαž‰αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž‘αŸαžŸαžšαž»αžŸαŸ’αžŸαŸŠαžΈαž˜αžΆαž“ EMS αžαŸ’αžšαžΉαž˜αžαŸ‚> 33 αžŠαž»αž›αŸ’αž›αžΆαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž˜αž·αž“αžŸαž”αŸ’αž”αžΆαž™αž…αž·αžαŸ’αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αžšαž·αŸ‡αž‚αž“αŸ‹αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž”αŸ’αžšαž‘αŸαžŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™ (αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž‘αŸ’αžœαžΈαž”αž‘αžΆαŸ†αž„αž’αžŸαŸ‹) αž€αžΆαžšαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž“αžΉαž„αžαŸ’αžšαžΌαžœαž…αŸ†αžŽαžΆαž™αž’αžŸαŸ‹ ~ 5 αžŠαž»αž›αŸ’αž›αžΆαžšαŸ” Russophobes?.. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžšαž€αžƒαžΎαž‰αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž‘αŸαžŸαž”αžΆαžšαžΆαŸ†αž„αžαž˜αŸ’αž›αŸƒαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž‚αžΊ ~ 30 αžŠαž»αž›αŸ’αž›αžΆαžšαž αžΎαž™αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž„αž”αŸ‹αžŸαŸ’αž„αžΆαžαŸ‹αŸ”

αž‡αžΆαž›αž‘αŸ’αž’αž•αž› Judy αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž‘αž·αž‰αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž”αž„αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹ (αž–αŸαžαŸŒαž˜αžΆαž“αž‡αŸ†αž“αž½αž™: αžŠαžΆαž€αŸ‹αžαž·αž…αž‡αžΆαž„αž“αŸ…αž›αžΎαž€αžΆαžαžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαž‘αžΌαž‘αžΆαžαŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž˜αž·αž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹); αžŸαžšαžŸαŸαžšαž‘αŸ…αž“αžΆαž„ αž αžΎαž™αž“αžΆαž„αž“αžΉαž„αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αžαž˜αŸ’αž›αŸƒαžŠαžΉαž€αž‡αž‰αŸ’αž‡αžΌαž“αž˜αž€αž’αž˜αŸ’αž˜αžαžΆαŸ” αž‡αŸ„αž‚αž‡αŸαž™αŸ”

αž”αž‰αŸ’αž αžΆ

αž’αŸ’αžœαžΈαŸ—αž˜αž·αž“αž‘αžΆαž“αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αŸ’αž’αž₯αžαžαŸ’αž…αŸ„αŸ‡αž“αŸ…αž‘αžΎαž™αž‘αŸαŸ”

αž•αž›αž·αžαž—αžΆαž–

Ansible=αž–αžΆαž€αŸ’αž™β€‹αž”αž‰αŸ’αž‡αžΆ Python αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž™αžΊαžαŸ— αž‘αŸ„αŸ‡β€‹αž‡αžΆβ€‹αž“αŸ…β€‹αž‘αŸ†αž“αŸαžšβ€‹αž€αŸβ€‹αžŠαŸ„αž™ αžšαž™αŸˆβ€‹αž–αŸαž› 20-30 αžœαž·αž“αžΆαž‘αžΈ; αž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαžšαŸ‰αž·αž…αž‘αŸαžšαž™αžΌαžšαž‡αžΆαž„αž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ x86 αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžŠαŸ†αž”αžΌαž„αž–αž½αž€αž‚αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž™αŸ‰αžΆαž„αž›αžΏαž“ ~ 3 αžœαž·αž“αžΆαž‘αžΈ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž–αž½αž€αž‚αŸαž”αž“αŸ’αžαž™αž›αŸ’αž”αžΏαž“αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αŸ” αž“αŸαŸ‡αž’αžΆαž…αž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈ CPU αž‘αžΎαž„αž€αŸ†αžŠαŸ… (αž”αž·αž‘αž”αžΎαž€)αŸ” αž›αŸαžαž€αžΌαžŠ 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
...

αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž’αžΆαž…αž‡αž½αž™αž”αžΆαž“αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαž‘αŸ…αž˜αž»αžαž‘αŸ€αžαŸ” αžαž˜αŸ’αžšαŸ€αž”αž…αŸαž‰.

ធ៊ីសឺរណិត

αž’αŸŠαžΈαžŸαžΊαžšαžŽαž·αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ ~ 64 αž˜αŸ‰αŸ„αž„αž€αž‰αŸ’αž…αž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“ (DHCP) αž–αžΈ RXNUMX αžˆαž”αŸ‹αž˜αž€αžŠαž›αŸ‹αŸ”
αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αž‘αžΎαž„αžœαž·αž‰αž’αžΆαž…αž‡αž½αž™:

ifdown br0; sleep 30; ifup br0

αž’αŸ’αž“αž€αž”αžΎαž€αž”αžšαž‚αžΊαžαŸ’αž˜αžΈ αžœαžΆαž˜αž·αž“αž‘αžΆαž“αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αž‘αž½αž›αž™αž€αž‘αŸ…αž€αŸ’αž“αž»αž„αžαžΊαžŽαŸ‚αž›αž“αŸ…αž‘αžΎαž™αž‘αŸ αžαŸ’αž‰αž»αŸ†αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαžœαžΆαž‡αžΆ Chinese Landen Chao αž”αž‰αŸ’αž…αž”αŸ‹αžœαžΆαŸ”.

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹