Banana Pi 64 рд╣рд╛ Raspberry Pi рд╕рд╛рд░рдЦрд╛рдЪ рдПрдХрд▓-рдмреЛрд░реНрдб рд╕рдВрдЧрдгрдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрдиреЗрдХ рдЗрдерд░рдиреЗрдЯ рдкреЛрд░реНрдЯрд╕рд╣, рдЬреЗ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд░рд╛рдЙрдЯрд░рдордзреНрдпреЗ рдмрджрд▓рдгреЗ рд╢рдХреНрдп рдХрд░рддреЗ.

рд╣реЛ, рдУрдкрдирдбрдмреНрд▓реВрдЖрд░рдЯреА (Openwrt) рдЖрд╣реЗ, рдкрдг рддреНрдпрд╛рдЪреА рд╕реНрд╡рддрдГрдЪреА рдХрд╛рд╣реА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ, рд╕реНрд╡рддрдГрдЪрд╛ рдЬреАрдпреВрдЖрдп (GUI) рдЖрдгрд┐ рд╕реАрдПрд▓рдЖрдп (CLI) рдЖрд╣реЗ; рдорд╛рдпрдХреНрд░реЛрдЯрд┐рдХ (Mikrotik) рдЖрд╣реЗ, рдкрдг рддреНрдпрд╛рдЪрд╛рд╣реА рд╕реНрд╡рддрдГрдЪрд╛ рдЬреАрдпреВрдЖрдп/рд╕реАрдПрд▓рдЖрдп рдЖрд╣реЗ, рдЖрдгрд┐ Wireguard рддреЗ рдереЗрдЯ рд╡рд╛рдкрд░рддрд╛ рдпреЗрдд рдирд╛рд╣реА... рдереЛрдбрдХреНрдпрд╛рдд, рдорд▓рд╛ рдПрдХ рдЕрд╕рд╛ рд░рд╛рдЙрдЯрд░ рд╣рд╡рд╛ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рд▓рд╡рдЪрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЕрд╕рддреАрд▓ рдЖрдгрд┐ рдЬреЛ рдореА рджрд░рд░реЛрдЬ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕рдЪреНрдпрд╛ рдЪреМрдХрдЯреАрддрдЪ рд░рд╛рд╣реАрд▓.
рдмреАрдкреАрдЖрдп, рдЖрд░ 64, рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рдирд╛рд╡рд╛рдВрдЦрд╛рд▓реАрд▓ рд▓реЗрдЦрд╛рдд, рдорд╛рдЭрд╛ рдЕрд░реНрде рдПрдХрдЪ рдЕрд╕реЗрд▓ - рдХреЗрд│реА рдкреА рдЖрд░ 64 рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рд╕реНрд╡рддрдГ.
рдкреНрд░рддрд┐рдорд╛ рдирд┐рд╡рдбрдд рдЖрд╣реЗ. eMMC рджреНрд╡рд╛рд░реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛
рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рдХреМрд╢рд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрдГ R64 рд╕рд╣, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреНрдпрд╛рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╢реА рд▓реЛрдб рдХрд░рд╛рдпрдЪреА рд╣реЗ рд╢рд┐рдХрдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ, рдХрд╛рд░рдг R64 рдордзреНрдпреЗ рдореЙрдирд┐рдЯрд░рд╕рд╛рдареА рдкреЛрд░реНрдЯ рдирд╛рд╣реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде HDMI). рдЬреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рдмрдВрдж рд╣реЛрддреЗ - рд╡рд╛рдпрдлрд╛рдп, рдЗрдерд░рдиреЗрдЯ, рдмреНрд▓реВрдЯреВрде, рдпреВрдПрд╕рдмреА, рдЗрддреНрдпрд╛рджреАрдВрдиреА рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рд▓реЗ. рдПрдХ рдпреВрдПрдЖрд░рдЯреА рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рдЖрдкрдг рдиреЗрд╣рдореА рдХрд╛рдп рдЪреВрдХ рдЭрд╛рд▓реА рддреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХрдиреНрд╕реЛрд▓рдордзреВрди рджреЛрди рдХрдорд╛рдВрдб рджреЗрдЦреАрд▓ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛.
USB-UART рджреНрд╡рд╛рд░реЗ R64 рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо:
- рдЖрдореНрд╣реА USB-UART рдХреЗрдмрд▓ (PL2303, Serial-to-USB) рд╕рд╛рдареА рд░реЗрдбрд┐рдУ рдкрд╛рд░реНрдЯреНрд╕рдЪреНрдпрд╛ рджреБрдХрд╛рдирд╛рдд рдзрд╛рд╡рддреЛ.
- рдЦрд╛рд▓реА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЪрд┐рддреНрд░рд╛рдкреНрд░рдорд╛рдгреЗ рдЪрд╛рд░рдкреИрдХреА рддреАрди рд╡рд╛рдпрд░рд╕рд╣ рдПрдХ USB рдЯреЛрдХ рд╕рдВрдЧрдгрдХрд╛рд▓рд╛ рдЖрдгрд┐ рджреБрд╕рд░рд╛ UART рд▓рд╛ R64 рд▓рд╛ рдЬреЛрдбрд╛
- рд╕рдВрдЧрдгрдХ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рд╛
sudo minicom
рдпрд╛рдирдВрддрд░, рдмрд╣реБрддреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рдХрдиреНрд╕реЛрд▓ рджрд┐рд╕реЗрд▓ = рдпрд╢.
рддреБрдореНрд╣реА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкрд╛рд╣реВ рд╢рдХрддрд╛ .

рдкреБрдвреЗ, 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 рд▓реЛрдбрд┐рдВрдЧрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЛ.
рдкрд░реНрдпрд╛рдпреА рдмреВрдЯ рдкрд░реНрдпрд╛рдп R64 рдордзреНрдпреЗ рдЖрдзреАрдкрд╛рд╕реВрди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реЗ 8Gb рдХрд╛рд░реНрдб рд╡рд╛рдкрд░рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рд▓рд╛ eMMC рдореНрд╣рдгрддрд╛рдд. рд╡рд┐рдХреАрдордзреАрд▓ рд╕реВрдЪрдирд╛рдВрдиреБрд╕рд╛рд░, рдЖрдореНрд╣реА рдкреНрд░рддрд┐рдорд╛ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕рд╡рд░ рдХреЙрдкреА рдХрд░рддреЛ
/dev/mmcblk0 рд╡рд░ BPI, рд░реАрдмреВрдЯ рдХрд░рд╛, SD рдХрд╛рд░реНрдб рдХрд╛рдврд╛, BPI рдкреБрдиреНрд╣рд╛ рдЪрд╛рд▓реВ рдХрд░рд╛... рдЖрдгрд┐ рддреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА. рдкреБрдвреЗ рдорд╛рдЧреЗ рдХрд╕реЗ рдЬрд╛рдпрдЪреЗ Boot select рддреНрд░рд╛рд╕ рджреЗрдК рдирдХрд╛.
рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА рдХрд┐рдорд╛рди рдмреАрдкреАрдЖрдпрд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдВрддрд░реНрдЧрдд рдлреНрд▓реЕрд╢ рдбреНрд░рд╛рдЗрд╡реНрд╣рд╡рд░реВрди рдмреВрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:
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 рдХрд╛рд░реНрдб рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореА рддреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛, рдореНрд╣рдгреВрди рддреЗ рд▓реЗрдЦрд╛рдд рдЕрд╕реВ рджреНрдпрд╛.
рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд╡рдбрдд рдЖрд╣реЗ. рдЖрд░реНрдореНрдмрд┐рдпрди
рдкрд╣рд┐рд▓реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рдо рдореНрд╣рдгрдЬреЗ рдЕрд░реНрдерд╛рддрдЪ рд╡реНрд╣реАрдкреАрдПрди рд╕реБрд░реВ рдХрд░рдгреЗ. Wireguardрдорд╛рдЭреНрдпрд╛ рд▓рдЧреЗрдЪ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдХреА рдХрд░реНрдирд▓ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрдВрдкрд╛рдЗрд▓ рдЭрд╛рд▓реЗ рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдд рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реНрд╕рд╣реА рдирд╡реНрд╣рддреНрдпрд╛. рдореА рдХрд░реНрдирд▓ рдкреБрдиреНрд╣рд╛ рдмрд┐рд▓реНрдб рдХреЗрд▓реЗ рдЖрдгрд┐ x86 рдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рдорд╛рдЭреНрдпрд╛ рд╕рд╡рдпреАрдкреНрд░рдорд╛рдгреЗ, DKMS рд╡рд╛рдкрд░реВрди рдПрдХ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рддрдпрд╛рд░ рдХреЗрд▓реЗ. рддрдерд╛рдкрд┐, ARM64 рд╡рд░, рдЕрдЧрджреА рд▓рд╣рд╛рди рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬрд╕рд╛рдареА рд╕реБрджреНрдзрд╛, рдмрд┐рд▓реНрдбрдЪрд╛ рд╡реЗрдЧ рдЕрдирдкреЗрдХреНрд╖рд┐рддрдкрдгреЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рд╣реЛрддрд╛. рдордЧ рдЖрдгрдЦреА рдПрдХрд╛ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓рдЪреА рдЧрд░рдЬ рднрд╛рд╕рд▓реА, рдЖрдгрд┐ рдЕрд╕реЗрдЪ рдкреБрдвреЗ рдЪрд╛рд▓реВ рд░рд╛рд╣рд┐рд▓реЗ. рдереЛрдбрдХреНрдпрд╛рдд рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рдХрд░реНрдирд▓рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХреЛрдгрддреАрд╣реА рдЧреЛрд╖реНрдЯ рдПрдХрд╛ рдЬреБрдирд╛рдЯ x86 рд▓реЕрдкрдЯреЙрдкрд╡рд░ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдгреЗ, рдирдВрддрд░ рдлрдХреНрдд ARM64 рд╡рд░ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд░рдгреЗ, рд░реАрдмреВрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рддрдкрд╛рд╕рдгреЗ рд╣реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдард░рддреЗ.
рд╡рд╛рдкрд░-рдЬрд╛рдЧреЗрдЪрд╛ рднрд╛рдЧ рд╣реА рдПрдХ рд╡реЗрдЧрд│реА рдмрд╛рдм рдЖрд╣реЗ. рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдирд┐рд╡рдб Debianarm64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЖрдзреАрдЪ рдкреЕрдХреЗрдЬреЗрд╕рдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ.debian.org рдЖрдгрд┐ рдХрд╛рд╣реАрд╣реА рдкреБрдиреНрд╣рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.
рджреБрд╕рд░реА рд╕рд╛рдпрдХрд▓ рддрдпрд╛рд░ рдХрд░реВ рдирдпреЗ рдореНрд╣рдгреВрди, рдЖрдп BPI R64 рд╡рд░.
рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдРрд╡рдЬреА, рд╣реЗ: рдпреБрдЬрд░рд╕реНрдкреЗрд╕ рднрд╛рдЧ рдЖрд░реНрдореНрдмрд┐рдпрди рдЖрд╣реЗ рдЖрдгрд┐ рдХрд░реНрдирд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдШреЗрддрд▓реЗ рдЖрд╣реЗ -рдП. рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ .
R64 рдЪреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рднрд╛рдЧрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╡рд░реАрд▓ рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рдЪрд╛рд▓реВ рдЖрд╣реЗрдд рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдирд┐рд░реНрдорд╛рддрд╛ рд╕реНрд╡рддрдГ OpenWrt рд╕рд╛рдареА рд░рд╛рдЙрдЯрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЬрд░реНрдордиреАрддреАрд▓ рдбреЗрд╡реНрд╣рд▓рдкрд░ рдлреНрд░рдБрдХрдЪреНрдпрд╛ рд╕рдХреНрд░рд┐рдпрддреЗрдореБрд│реЗ, рд╕рд░реНрд╡ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд▓рд╡рдХрд░рдЪ рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рд╣реЛрддрд╛рдд. DebianрдЖрд╢реНрдЪрд░реНрдпрд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ, рдлреНрд░рдБрдХ рдкреНрд░рддреНрдпреЗрдХ рдлреЛрд░рдо рдереНрд░реЗрдбрдордзреНрдпреЗ рд╕рдХреНрд░рд┐рдп рдЕрд╕рддреЛ.
рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕рдВрдШрдЯрдирд╛: рд╡рд╛рдпрд░реНрд╕
рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА, рд╡рд┐рдХрд╛рд╕/рдЪрд╛рдЪрдгреА рджрд░рдореНрдпрд╛рди, рдЯреЗрдмрд▓рд╡рд░ SBC (рдХреЗрд╡рд│ BPI рдирд╛рд╣реА) рдХрд╕реЗ рдареЗрд╡рд╛рд╡реЗ рдЬреЗрдгреЗрдХрд░реВрди рд╕рдВрдкреВрд░реНрдг рдЦреЛрд▓реА/рдСрдлрд┐рд╕рдордзреНрдпреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реНрддреНрд░реЛрддрд╛рдХрдбреВрди рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓ рдЪрд╛рд▓рд╡реВ рдирдпреЗ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА, рдПрдХреАрдХрдбреЗ, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЗрдВрдЯрд░рдиреЗрдЯрд╕рд╣ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдЪрд╛ рддреБрдХрдбрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рджреБрд╕рд░реАрдХрдбреЗ, рддреНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рддреАрд▓ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЦрд░рд╛рдм рд╣реЛрдК рд╢рдХрддреЗ рдЖрдгрд┐ рд╕рд░реНрд╡ рдкреНрд░рдердо рд╡рд╛рдпрдлрд╛рдп.
рдкреНрд░рдердо, рдореА рдПрдХ рд╕реНрд╡рд╕реНрдд рдпреВрдПрд╕рдмреА-рд╡рд╛рдпрдлрд╛рдп тАЬрд╢рд┐рдЯреНрдЯреАтАЭ рд╡рд┐рдХрдд рдШреЗрдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ, рддреЗ рдмреАрдкреАрдЖрдпрд╡рд░реАрд▓ рдПрдХрдореЗрд╡ рдкреЛрд░реНрдЯрдордзреНрдпреЗ рдкреНрд▓рдЧ рдХрд░рд╛ рдЖрдгрд┐ рд╡рд╛рдпрд░ рд╡рд┐рд╕рд░реВрди рдЬрд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдПрдХ рд╕реНрд╡рд╕реНрдд TP-LINK TL-WN725N USB 2.0 рдЦрд░реЗрджреА рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рд▓рд╡рдХрд░рдЪ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рддреЗ рдмрдВрдж рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА: рд╢реАрд│ рд╡рд╛рдЬрд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд░реНрдирд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдЬреЛ рдЕрд░реНрдерд╛рддрдЪ рддреЗрдереЗ рдирд╡реНрд╣рддрд╛. (рдирдВрддрд░ рдореА рдЖрд╡рд╢реНрдпрдХ RTL8XXXU рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдПрдХрддреНрд░ рдХреЗрд▓реЗ, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рдЕрд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдЖрд╣реЗ). рдЖрдгрд┐ рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓рдиреЗ рдХрд╛рд╣реА рдХрд╛рд│ рдЦреЛрд▓реАрдЪреЗ рд╕реНрд╡рд░реВрдк рдЦрд░рд╛рдм рдХреЗрд▓реЗ.
рдкрд░рд┐рдгрд╛рдореА, рдореА Tenda MW3 (рд╡рд╛рдпрдлрд╛рдп рдЬрд╛рд│реА рдкреНрд░рдгрд╛рд▓реА) рдЪреНрдпрд╛ рдорджрддреАрдиреЗ рдХреЗрдмрд▓ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ: рдореА рдлрдХреНрдд рдПрдХ рдХреНрдпреВрдм рдЯреЗрдмрд▓рдЦрд╛рд▓реА рдареЗрд╡рд▓рд╛ рдЖрдгрд┐ BPI рд▓рд╛ рдирдВрддрд░рдЪреНрдпрд╛ LAN рдкреЛрд░реНрдЯрд▓рд╛ рдореАрдЯрд░-рд▓рд╛рдВрдм рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓рдиреЗ рдЬреЛрдбрд▓реЗ. рдпрд╢.
Wireguard, рдЖрд░рдХреЗрдПрди, рдкрдХреНрд╖реА
рдорд▓рд╛ Banana PI рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЕрд╢рд╛ рдЧреЛрд╖реНрдЯреАрдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ RKN рджреНрд╡рд╛рд░реЗ рдЕрд╡рд░реЛрдзрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯреНрд╕рд╡рд░ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдкреНрд░рд╡реЗрд╢ рдЕрд╕рдгреЗ, рд╡рд┐рд╢реЗрд╖рдд: рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрдгрд┐ рд╕реНрд▓реЕрдХ рдХреЙрд▓реНрд╕ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛рдд. рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ Habr├й рд╡рд░реАрд▓ рд▓реЗрдЦ рдЖрдзреАрдЪ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд: , , .
рдореА Ansible рд╡рд╛рдкрд░реВрди рдиреЗрдордХреЗ рд╣реЗ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЬрд┐рдд рдХреЗрд▓реЗ: .
рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реЗ рдЖрд╣реЗ рдХреА рд╡реНрд╣реАрдкреАрдПрд╕ рдЪрд╛рд▓реВ рдЖрд╣реЗ Ubuntu резрео рдПрдкреНрд░рд┐рд▓. рдореА рдпреБрд░реЛрдкрдордзреАрд▓ рджреЛрди рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддреНрдпрд╛рдВрд╡рд░, ре▓рдореЗрдЭреЙрди рдЖрдгрд┐ рдбрд┐рдЬрд┐рдЯрд▓ рдУрд╢рдирд╡рд░, рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪреА рдЪрд╛рдЪрдгреА рдХреЗрд▓реА.
рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА R64 рд╡рд░ рд╡рд░реАрд▓ рдЖрд░реНрдореНрдмрд┐рдпрди рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ, рддреЗ рдирд╛рд╡рд╛рдЦрд╛рд▓реА ssh рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╡реЗрд╢рдпреЛрдЧреНрдп рдЖрд╣реЗ hm-bananapi-1 рдЖрдгрд┐ рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╕рд╛рддрддреНрдпрд╛рдиреЗ рдЙрддреНрддрд░рджрд╛рдпреА, рдСрдЯреЛрдореЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдЙрдкрдпреЛрдЬрд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ 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 рдордзреНрдпреЗ рдЙрддреНрддрд░рджрд╛рдпреА рдСрдЯреЛрдореЗрд╢рди
рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓ рдХреА YAML рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдЕрд╕рдгреНрдпрд╛рдРрд╡рдЬреА, Ansible рдХрдорд╛рдВрдбреНрд╕ Python рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдПрдиреНрдХреЛрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдкрдХреНрд╖реА рдбрд┐рдорди рдХрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рд╛рд╡реЗ:
- name: start bird
systemd:
name: bird
state: started
enabled: yesрдЖрдгрд┐ рдкрд╛рдпрдерди рджреНрд╡рд╛рд░реЗ рддреЗ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ:
with mapping:
append("name", "start bird")
with mapping("systemd"):
append("name", "bird")
append("state", "started")
append("enabled", "yes")Python рдордзреНрдпреЗ рдЙрддреНрддрд░рджрд╛рдпреА рдЖрджреЗрд╢ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдбрдЪрд╛ рдкреБрдирд░реНрд╡рд╛рдкрд░ рдХрд░рддрд╛ рдпреЗрддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реАрдп рднрд╛рд╖реЗрдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╢рдХреНрдпрддрд╛ рдЙрдШрдбрддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, R64 рдЖрдгрд┐ VPS рд╡рд░ рдмрд░реНрдб рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ:
install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")рдлрдВрдХреНрд╢рди рдХреЛрдб рдкрд╣рд╛ .
рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгрддрд╛рдд pybook рд▓рд╛рдЧреВ рдХреЗрд▓реЗ . рдкрд╛рдпрдмреБрдХрд╡рд░ рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреЗрд╣реА рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдирд╛рд╣реА, рдкрд░рдВрддреБ рдореА рдирдВрддрд░ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реЗрди.
рддреНрдпрд╛рд▓рд╛ рдХрд╛рдп рд╡рд╛рдЯрддрдВ рдпрд╛ рдкреНрд░рд╕рдВрдЧреА.
рджреЗрдЦрд░реЗрдЦ. рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕
рдПрдХреВрдг: рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдХрд╛рд░реНрдп рдХрд░рддреЗ, рд▓рд┐рдВрдХреНрдбрдЗрди рдЖрдгрд┐ рдкреЙрд░реНрдирд╣рдм рджреЗрдЦреАрд▓, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдареАрдХ рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЪреАрдиреА рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рд╕рд╣ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЦрдВрдбрд┐рдд рд╣реЛрдК рд╢рдХрддреЗ.
рдХрд░реНрдиреЗрд▓ рдЕрдкрдбреЗрдЯреНрд╕ рджреЗрдЦреАрд▓ рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реВ рд╢рдХрддрд╛рдд: рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд▓рд╛ рдХрд░реНрдиреЗрд▓ рел.рек рд╡рд░реВрди рел.рем рд╡рд░ рдЕрдкрдбреЗрдЯ рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ, рддрд░, рддрд┐рдереЗ Wireguard рдореВрд│ рд╕реНрдерд┐рддреАрдд, рдкреЕрдЪ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА... рдмреЛрд▓рд▓реНрдпрд╛рдмрд░реЛрдмрд░рдЪ рдХреГрддреА рдЭрд╛рд▓реА: рдореА рдореЛрдареНрдпрд╛ рдХрд╖реНрдЯрд╛рдиреЗ 5.4 рд╡рд░реВрди 5.6 рд╡рд░ рдкреЕрдЪреЗрд╕ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ, рдХрд░реНрдирд▓ рд╕реБрд░реВ рдЭрд╛рд▓реЗ, VPS рдХрдбреЗ рдЬрд╛рдгрд╛рд░рд╛ рдЯрдиреЗрд▓ рдкрд┐рдВрдЧ рд╣реЛрдд рдЖрд╣реЗ, рдкрдг "BGP Error" рдпрд╛ рддреНрд░реБрдЯреАрдореБрд│реЗ рдмрд░реНрдб рдХрдиреЗрдХреНрдЯ рд╣реЛрдК рд╢рдХрдд рдирд╛рд╣реА... "рднрдпрдВрдХрд░рдкрдгреЗ, рдореА (c) 5.4 рд╡рд░ рд░реЛрд▓рдмреЕрдХ рдХреЗрд▓реЗ; 5.6 рд╡рд░ рдЬрд╛рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо TODO рдордзреНрдпреЗ рдЯрд╛рдХрд▓реЗ рдЖрд╣реЗ.
рддреНрдпрд╛рдореБрд│реЗ, рд░рд╛рдЙрдЯрд░ рдЖрдгрд┐ рд╡реНрд╣реАрдкреАрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдореА рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ (x86 рд╡рд░) рдЬреЛрдбрд▓реЗ. Ubuntu 18.04), рдЬреЗ рдЦрд╛рд▓реАрд▓ рдШрдЯрдХрд╛рдВрд╕рд╣ рдПрдХрд╛ рд╡реЗрдЧрд│реНрдпрд╛ рд╣реЛрд╕реНрдЯрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ:
- prometheus, alertmanager, blackbox_exporter - рд╕рд░реНрд╡ рдбреЙрдХрд░рдордзреНрдпреЗ
- рдореЗрдЯрд▓рдореЕрдЯрдЭреЗ/рдЕреЕрд▓рд░реНрдЯрдореЕрдиреЗрдЬрд░-рдмреЙрдЯ рд╡рд╛рдкрд░реВрди рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреЕрдиреЗрд▓рд╡рд░ рдЕрд▓рд░реНрдЯ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рддрд╛рдд - рдбреЙрдХрд░рдордзреНрдпреЗ рджреЗрдЦреАрд▓
- рдмреЙрдЯрд╕рд╛рдареА tor, рдЬреЗрдгреЗрдХрд░реВрди рдмреЙрдЯ рдЗрдВрдЯрд░рдиреЗрдЯ рдЕрд╕рддрд╛рдирд╛ рдкрд░рд┐рд╕реНрдерд┐рддреАрдЪреА рд╕реВрдЪрдирд╛ рджреЗрдК рд╢рдХреЗрд▓, рдкрд░рдВрддреБ рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЕрджреНрдпрд╛рдк рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА рдЖрдгрд┐ рдмреЙрдЯ рд╕реНрд╡рддрдГ рдХрдиреЗрдХреНрдЯ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА
- рд▓рд╛рдЧреВ рдХреЗрд▓реЗ : NodeVPNtroubles (VPS рд▓рд╛ рдкрд┐рдВрдЧ рдирд╛рд╣реА), BirdVPNtroubles (рдкрдХреНрд╖реА рд╕рддреНрд░ рдирд╛рд╣реА), AntifilterDownloadTroubles (рдмреНрд▓реЙрдХ рдХреЗрд▓реЗрд▓реЗ IP рдкрддреНрддреЗ рд▓реЛрдб рдХрд░рддрд╛рдирд╛ рддреНрд░реБрдЯреА), SiteTroubles (рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЕрдиреБрдкрд▓рдмреНрдз рдЖрд╣реЗ)
- рд╕рд┐рд╕реНрдЯрдо рдЕрд▓рд░реНрдЯ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, HostGrowingDiskReadLatency (рд╕реНрд╡рд╕реНрдд SD рдХрд╛рд░реНрдб рд╡рд╛рдЪрдгреНрдпрд╛рдпреЛрдЧреНрдп рдирд╛рд╣реА)
рджреЗрдЦрд░реЗрдЦ рдкреНрд░рддрд┐рд╖реНрдард╛рдкрди рдЙрджрд╛рд╣рд░рдг:
ansible-playbook ./monitoring.py -l monitoring-preprodрдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд╕рд╛рдареА рдСрдЯреЛ рдбрд┐рд╕реНрдХрд╡реНрд╣рд░реА /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
EOFTODO: 2 рдкреНрд░рджрд╛рддрд╛, 2 BPI, anycast рдлреЗрд▓рдУрд╡реНрд╣рд░
рд╕рд░реНрд╡рдХрд╛рд╣реА рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдореА рджреЛрди рдкреНрд░рджрд╛рддреНрдпрд╛рдВрд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдпреЛрдЬрдирд╛ рдЖрдЦрд▓реА рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛рд░реНрдп рдХрд░рдд рд░рд╛рд╣реАрд▓, рдЬрд░реА рдПрдХрд╛ рдкреНрд░рджрд╛рддреНрдпрд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рд╕рдорд╕реНрдпрд╛ рдЖрд▓реА рдХрд┐рдВрд╡рд╛ рддреЗ рдЗрдВрдЯрд░рдиреЗрдЯрд╕рд╛рдареА рдкреИрд╕реЗ рджреЗрдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░рд▓реЗ, рдЗрддреНрдпрд╛рджреА рдЖрдгрд┐ рдЗрддрд░ рдорд╛рдирд╡реА рдШрдЯрдХ.
рдорд▓реНрдЯреА-рд╡реЕрди рд╡рд┐рд╖рдпрд╛рд╡рд░реАрд▓ рд╕рд░реНрд╡рд╛рдд рдкреНрд░рдЧрдд рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ Openwrt рдЕрдВрддрд░реНрдЧрдд Mwan3 рдкреНрд░рдгрд╛рд▓реАрд╕рд╛рдареА. рдпрд╛ рд╕реЛрд▓реНрдпреВрд╢рдирдордзреНрдпреЗ рд╕рдореГрджреНрдз рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдмрд╣реБ-рд╡реЕрдирд╕рд╛рдареА рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рддреЗ рд╕реЗрдЯ рдХрд░рдгреЗ рдЖрдгрд┐ рдСрдкрд░реЗрдЯ рдХрд░рдгреЗ рдЦреВрдк рддреНрд░рд╛рд╕рджрд╛рдпрдХ рдЖрд╣реЗ. рдлрдХреНрдд рдПрдХ рдЙрджрд╛рд╣рд░рдг: рдЬрд░ рддреБрдореНрд╣реА рдПрдХрд╛рдЪ рд╡реЗрд│реА рджреЛрди IP рдкрддреНрддреНрдпрд╛рдВрд╡рд░реВрди рдХрд╛рд╣реА рд╕рд╛рдЗрдЯрд╡рд░ рдЖрд▓рд╛рдд, рддрд░ рддреНрдпрд╛рдВрдирд╛ рддреЗ рдЖрд╡рдбрдгрд╛рд░ рдирд╛рд╣реА, рддреЗ рдХрд╛рдо рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рддреАрд▓ => тАЬрдЗрдВрдЯрд░рдиреЗрдЯ рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА.тАЭ
рд╣рд╛ рдЕрдиреБрднрд╡ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди, рдореА рдард░рд╡рд▓реЗ рдХреА рдорд▓реНрдЯреАрд╣реЛрдорд┐рдВрдЧрд▓рд╛ рдЕрджреНрдпрд╛рдк рдкреНрд░рд╛рдзрд╛рдиреНрдп рдирд╛рд╣реА, рдлрдХреНрдд рдлреЗрд▓рдУрд╡реНрд╣рд░ рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд▓рд┐рдирдХреНрд╕рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдПрдХрд╛ рдХрдорд╛рдВрдбрд╕рд╣ рдХрд╛рд░реНрдп рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдЬрд╕реЗ:
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5рддреНрдпрд╛рдореБрд│реЗ, рдЕрдкрдпрд╢рд╛рдЪрд╛ рдПрдХрдЪ рдореБрджреНрджрд╛ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА 2 BPI рдШреЗрддреЛ, рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдПрдХрд╛ рдкреНрд░рджрд╛рддреНрдпрд╛рд╢реА рдЬреЛрдбрддреЛ, рддреНрдпрд╛рдВрдирд╛ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдЬреЛрдбрддреЛ рдЖрдгрд┐ рдкрдХреНрд╖реА/OSPF рджреНрд╡рд╛рд░реЗ рдПрдХрдореЗрдХрд╛рдВрд╢реА рдбрд╛рдпрдиреЕрдорд┐рдХ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдмрдирд╡рддреЛ.
рдкреБрдвреЗ, рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реНрдпрд╛рд╕ (рдЗрдВрдЯрд░рдиреЗрдЯ, DNS) рдЖрдореНрд╣реА рдкреНрд░рддреНрдпреЗрдХрд╛рд╡рд░ рд╕рдорд╛рди IP рдкрддреНрддреНрдпрд╛рдЪреА рдЬрд╛рд╣рд┐рд░рд╛рдд рдХрд░рддреЛ. рдореНрд╣рдгрдЬреЗрдЪ, рдЖрдореНрд╣реА рд╕реНрд╡рддрдГ рдбреАрдлреЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рд╕реЗрдЯ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдкрд░рдВрддреБ рдкрдХреНрд╖реНрдпрд╛рджреНрд╡рд╛рд░реЗ. рдореА рдЙрдкрд╛рдп рд╣реЗрд░рд▓рд╛ .
рд╣реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрджреНрдпрд╛рдк рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реА рдЧреЗрд▓реА рдирд╛рд╣реА, рдХрдкрдЯреА рдХреЛрд░реЛрдирд╛рд╡реНрд╣рд╛рдпрд░рд╕рдиреЗ рдпреЗрдереЗ рдПрдХ рдпреБрдХреНрддреА рдЦреЗрд│рд▓реА (рд╕рд░реНрд╡ рдХрд╛рд╣реА Aliexpress рд╡рд░реВрди рдЖрд▓реЗ рдирд╛рд╣реА; рджреБрд╕рд░реНрдпрд╛ рдСрдирд▓рд╛рдЗрди рд╕реНрдЯреЛрдЕрд░, Layta рдиреЗ рдПрдХрд╛ рдЖрдард╡рдбреНрдпрд╛рдд рд╡рд┐рддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рд╡рдЪрди рджрд┐рд▓реЗ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рдПрдХ рдорд╣рд┐рдиреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рдирд┐рдШреВрди рдЧреЗрд▓рд╛ рдЖрд╣реЗ; рджреБрд╕рд▒реНрдпрд╛ рдкреНрд░рджрд╛рддреНрдпрд╛рдХрдбреЗ рд╡реЗрд│ рдирд╛рд╣реА рдЕрд▓рдЧ рдареЗрд╡рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХреЗрдмрд▓ рд╡рд╛рдврд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдлрдХреНрдд рдХреЗрдмрд▓рд╕рд╛рдареА рднрд┐рдВрддреАрдордзреНрдпреЗ рдбреНрд░рд┐рд▓рдордзреНрдпреЗ рдЫрд┐рджреНрд░ рдкрд╛рдбрдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд).
R64 рдСрд░реНрдбрд░ рдХрд╢реА рдХрд░рд╛рд╡реА
рдмреЛрд░реНрдб рд╕реНрд╡рддрдГ рдЕрдзрд┐рдХреГрдд рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рдЖрд╣реЗ .
рддреНрд╡рд░рд┐рдд рдСрд░реНрдбрд░ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ:
- + EU рдХрд┐рдВрд╡рд╛ US рдкреНрд▓рдЧ рдорд╛рдирдХрд╛рдВрдирд╛ рдХрд│рд╡рд╛
- рдЙрд╖реНрдгрддрд╛ рд╕рд┐рдВрдХ: рд░реЗрдбрд┐рдПрдЯрд░реНрд╕/рдкрдВрдЦреЗ; рдХрд╛рд░рдг CPU рдЖрдгрд┐ рд╕реНрд╡рд┐рдЪ рдЪрд┐рдк рджреЛрдиреНрд╣реА рдЧрд░рдо рд╣реЛрдд рдЖрд╣реЗрдд
- рд╡рд╛рдпрдлрд╛рдпрд╕рд╛рдареА рдЕрдБрдЯреЗрдирд╛,
рдПрдХ рд╕реВрдХреНрд╖реНрдорддрд╛ рдЖрд╣реЗ - рдХрд╛рд╣реА рдХрд╛рд│ рдЕрдзрд┐рдХреГрдд рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рд╡рд┐рддрд░рдг рдХрд┐рдВрдордд рдЕрдкреБрд░реАрдкрдгреЗ рдЬрд╛рд╕реНрдд рдЭрд╛рд▓реА рдЖрд╣реЗ. рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЬреВрдбреА рд╣реБрдЖрдВрдЧ рдпрд╛рдВрдиреА рдорд▓рд╛ рдЦрд╛рддреНрд░реА рджрд┐рд▓реА рдХреА рдХреЛрдгрддреАрд╣реА рддреНрд░реБрдЯреА рдирд╛рд╣реА, рдЖрдгрд┐ рддреБрдореНрд╣реА $5 рд╕рд╛рдареА ePacket рдирд┐рд╡рдбреВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдореА рдкрд╛рд╣рд┐рд▓реЗ рдХреА рд░рд╢рд┐рдпрд╛рд╕рд╛рдареА рдлрдХреНрдд >$33 рд╕рд╛рдареА EMS рдЖрд╣реЗ. рдЕрдкреНрд░рд┐рдп, рдкрд░рдВрддреБ рдЧрдВрднреАрд░ рдирд╛рд╣реА. рд╢рд┐рд╡рд╛рдп, рдбрд┐рд▓рд┐рд╡реНрд╣рд░реАрд╕рд╛рдареА рддреБрдореНрд╣реА рдЗрддрд░ рдХреЛрдгрддрд╛рд╣реА рджреЗрд╢ рдирд┐рд╡рдбрд▓реНрдпрд╛рд╕ (рдореА рд╕рд░реНрд╡ рдЦрдВрдбрд╛рдВрдордзреВрди рдЧреЗрд▓реЛ рдЖрд╣реЗ), рдбрд┐рд▓рд┐рд╡реНрд╣рд░реАрдЪреА рдХрд┐рдВрдордд $5 рдЕрд╕реЗрд▓. Russophobes?.. рдкрдг рдирдВрддрд░ рдорд▓рд╛ рдЖрдврд│рд▓реЗ рдХреА рдлреНрд░рд╛рдиреНрд╕рд╕рд╛рдареА рдбрд┐рд▓рд┐рд╡реНрд╣рд░реАрдЪреА рдХрд┐рдВрдордд рджреЗрдЦреАрд▓ ~30$ рдЖрд╣реЗ рдЖрдгрд┐ рдореА рд╢рд╛рдВрдд рдЭрд╛рд▓реЛ.
рдкрд░рд┐рдгрд╛рдореА, рдЬреБрдбреАрдиреЗ рдСрд░реНрдбрд░ рджреЗрдгреНрдпрд╛рдЪреА рдСрдлрд░ рджрд┐рд▓реА, рдкрд░рдВрддреБ рдкреИрд╕реЗ рджрд┐рд▓реЗ рдирд╛рд╣реАрдд (рдЗрд╢рд╛рд░рд╛: рдХрд╛рд░реНрдбрд╡рд░ рдХрдореА рдареЗрд╡рд╛ рдЬреЗрдгреЗрдХрд░реВрди рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдкреЗрдореЗрдВрдЯ рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА); рддрд┐рд▓рд╛ рд▓рд┐рд╣рд╛ рдЖрдгрд┐ рддреА рдбрд┐рд▓рд┐рд╡реНрд╣рд░реАрдЪреА рдХрд┐рдВрдордд рд╕рд╛рдорд╛рдиреНрдп рдХрд░реЗрд▓. рдпрд╢.
рд╕рдорд╕реНрдпрд╛
рдЕрджреНрдпрд╛рдк рд╕рд░реНрд╡ рдХрд╛рд╣реА рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА.
рдЙрддреНрдкрд╛рджрдХрддрд╛
Ansible=Python рдХрдорд╛рдВрдбреНрд╕ 20-30 рд╕реЗрдХрдВрджрд╛рдВрд╕рд╛рдареА рд╣рд│реВ рд╣рд│реВ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд, рдЕрдЧрджреА рдирд┐рд╖реНрдХреНрд░рд┐рдп рджреЗрдЦреАрд▓; x86 рд▓реЕрдкрдЯреЙрдкрдкреЗрдХреНрд╖рд╛ рдореЛрдареЗрдкрдгрд╛рдЪрд╛ рдХреНрд░рдо. рд╢рд┐рд╡рд╛рдп, рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рддреЗ рдЕрдЧрджреА рддреНрд╡рд░реАрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, ~3 рд╕реЗрдХрдВрдж, рдирдВрддрд░ рддреЗ рдЭрдкрд╛рдЯреНрдпрд╛рдиреЗ рдХрдореА рд╣реЛрддрд╛рдд. рд╣реЗ CPU рдЧрд░рдо рд╣реЛрдгреНрдпрд╛рдореБрд│реЗ (рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ) рдЕрд╕реВ рд╢рдХрддреЗ. рдЧреЛ рдХреЛрдбрд▓рд╛ рджреЗрдЦреАрд▓ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕ рдмрд░рд╛рдЪ рд╡реЗрд│ рд▓рд╛рдЧрддреЛ:
# ╨╖╨░╨┐╤А╨╛╤Б ╨╝╨╡╤В╤А╨╕╨║ ╨┤╨╗╤П ╨┐╤А╨╛╨╝╨╡╤В╨╡╤П ╨╕╨╖ 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рд╡рд╛рдпрдлрд╛рдп
рд╡рд╛рдпрдлрд╛рдп рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ рдЖрд░реНрдореНрдмрд┐рдпрдирд╡рд░ рддреЗ рдПрдХрд╛ рджрд┐рд╡рд╕рд╛рдирдВрддрд░ рдерд╛рдВрдмрддреЗ, рд▓рд┐рд╣рд┐рддрд╛рдд:
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
...рдлрдХреНрдд рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдорджрдд рдХрд░рддреЗ. рдЖрдкрдг рдкреБрдвреЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ .
рдЗрдерд░рдиреЗрдЯ
рдЗрдерд░рдиреЗрдЯ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдкрд░рдВрддреБ R64 рд╡рд░реВрди ~XNUMX рддрд╛рд╕рд╛рдВрдирдВрддрд░ рдкреЕрдХреЗрдЯ (DHCP) рдпреЗрдгреЗ рдерд╛рдВрдмрддреЗ.
рдЗрдВрдЯрд░рдлреЗрд╕ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реНрдпрд╛рдиреЗ рдорджрдд рд╣реЛрддреЗ:
ifdown br0; sleep 30; ifup br0рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдирд╡реАрди рдЖрд╣реЗ, рддреЛ рдЕрджреНрдпрд╛рдк рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕реНрд╡реАрдХрд╛рд░рд▓рд╛ рдЧреЗрд▓рд╛ рдирд╛рд╣реА, рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рддреЛ рдЪрд┐рдиреА рд▓рдБрдбрди рдЪрд╛рдУ рдЖрд╣реЗ .
рд╕реНрддреНрд░реЛрдд: www.habr.com
