рдХреЗрд▓реЗ Pi R64 рд░рд╛рдЙрдЯрд░ - рдбреЗрдмрд┐рдпрди, рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб, RKN

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

рдХреЗрд▓реЗ Pi R64 рд░рд╛рдЙрдЯрд░ - рдбреЗрдмрд┐рдпрди, рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб, RKN

рд╣реЛрдп, рдЖрдзреАрдЪ Openwrt рдЖрд╣реЗ, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗрдд, рддреНрдпрд╛рдЪреЗ GUI рдЖрдгрд┐ CLI; рддреЗрдереЗ Mikrotik рдЖрд╣реЗ, рдкрдг рдкреБрдиреНрд╣рд╛ рддреНрдпрд╛рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ GUI/CLI рдЖрд╣реЗ, рдЖрдгрд┐ рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдХрд╛рдо рдХрд░рдд рдирд╛рд╣реА... рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдорд▓рд╛ рд▓рд╡рдЪрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЕрд╕рд▓реЗрд▓реЗ рд░рд╛рдЙрдЯрд░ рд╣рд╡реЗ рдЖрд╣реЗ, рддреБрдореНрд╣реА рдХрд╛рдо рдХрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕рдЪреНрдпрд╛ рдЪреМрдХрдЯреАрдд рд░рд╛рд╣реВрди рджрд░рд░реЛрдЬ рд╕рд╣.

рдмреАрдкреАрдЖрдп, рдЖрд░ 64, рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рдирд╛рд╡рд╛рдВрдЦрд╛рд▓реАрд▓ рд▓реЗрдЦрд╛рдд, рдорд╛рдЭрд╛ рдЕрд░реНрде рдПрдХрдЪ рдЕрд╕реЗрд▓ - рдХреЗрд│реА рдкреА рдЖрд░ 64 рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рд╕реНрд╡рддрдГ.

рдкреНрд░рддрд┐рдорд╛ рдирд┐рд╡рдбрдд рдЖрд╣реЗ. eMMC рджреНрд╡рд╛рд░реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛

рдХрд╛рдо рдХрд░рддрд╛рдирд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рдХреМрд╢рд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдПрд╕рдмреАрд╕реА рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖рддрдГ R64 рд╕рд╣, рдпрд╛рдЪрд╛ рдЕрд░реНрде рддреНрдпрд╛рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╢реА рд▓реЛрдб рдХрд░рд╛рдпрдЪреА рд╣реЗ рд╢рд┐рдХрдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕рдгреЗ, рдХрд╛рд░рдг R64 рдордзреНрдпреЗ рдореЙрдирд┐рдЯрд░рд╕рд╛рдареА рдкреЛрд░реНрдЯ рдирд╛рд╣реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде HDMI). рдЬреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рдмрдВрдж рд╣реЛрддреЗ - рд╡рд╛рдпрдлрд╛рдп, рдЗрдерд░рдиреЗрдЯ, рдмреНрд▓реВрдЯреВрде, рдпреВрдПрд╕рдмреА, рдЗрддреНрдпрд╛рджреАрдВрдиреА рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рд▓реЗ. рдПрдХ рдпреВрдПрдЖрд░рдЯреА рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рдЖрдкрдг рдиреЗрд╣рдореА рдХрд╛рдп рдЪреВрдХ рдЭрд╛рд▓реА рддреЗ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХрдиреНрд╕реЛрд▓рдордзреВрди рджреЛрди рдХрдорд╛рдВрдб рджреЗрдЦреАрд▓ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛.

USB-UART рджреНрд╡рд╛рд░реЗ R64 рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд▓реНрдЧреЛрд░рд┐рджрдо:

  • рдЖрдореНрд╣реА USB-UART рдХреЗрдмрд▓ (PL2303, Serial-to-USB) рд╕рд╛рдареА рд░реЗрдбрд┐рдУ рдкрд╛рд░реНрдЯреНрд╕рдЪреНрдпрд╛ рджреБрдХрд╛рдирд╛рдд рдзрд╛рд╡рддреЛ.
  • рдЦрд╛рд▓реА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЪрд┐рддреНрд░рд╛рдкреНрд░рдорд╛рдгреЗ рдЪрд╛рд░рдкреИрдХреА рддреАрди рд╡рд╛рдпрд░рд╕рд╣ рдПрдХ USB рдЯреЛрдХ рд╕рдВрдЧрдгрдХрд╛рд▓рд╛ рдЖрдгрд┐ рджреБрд╕рд░рд╛ UART рд▓рд╛ R64 рд▓рд╛ рдЬреЛрдбрд╛
  • рд╕рдВрдЧрдгрдХ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рд╛ sudo minicom

рдпрд╛рдирдВрддрд░, рдмрд╣реБрддреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рд╕рд┐рдВрдЧрд▓-рдмреЛрд░реНрдб рдХрдиреНрд╕реЛрд▓ рджрд┐рд╕реЗрд▓ = рдпрд╢.
рддреБрдореНрд╣реА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдпреЗрдереЗ.

рдХреЗрд▓реЗ Pi R64 рд░рд╛рдЙрдЯрд░ - рдбреЗрдмрд┐рдпрди, рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб, RKN

рдкреБрдвреЗ, 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 рдХрд╛рд░реНрдб рдкреБрд░реЗрд╕реЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдореА рддреЗ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд░рд╛рдЪ рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛, рдореНрд╣рдгреВрди рддреЗ рд▓реЗрдЦрд╛рдд рдЕрд╕реВ рджреНрдпрд╛.

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд╡рдбрдд рдЖрд╣реЗ. рдЖрд░реНрдореНрдмрд┐рдпрди

рдкреНрд░рдердо рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рд░реНрдп рдореНрд╣рдгрдЬреЗ рд╡реНрд╣реАрдкреАрдПрди рд▓рд╛рдБрдЪ рдХрд░рдгреЗ, рдиреИрд╕рд░реНрдЧрд┐рдХрд░рд┐рддреНрдпрд╛ рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб. рд╣реЗ рддрд╛рдмрдбрддреЛрдм рдЖрдврд│рд▓реЗ рдХреА рдХрд░реНрдирд▓ рдмрд╛рдЬреВрд▓рд╛ рддреЗ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реА рдЖрдгрд┐ рдХреЛрдгрддреЗрд╣реА рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╛рд╣реАрдд. рдореА рдХрд░реНрдирд▓ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрдгрд┐ x86 рд╕рд╣ рдорд╛рдЭреНрдпрд╛ рд╕рд╡рдпреАрдкреНрд░рдорд╛рдгреЗ, DKMS рд╡рд╛рдкрд░реВрди рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рдПрдХрддреНрд░ рдХреЗрд▓реЗ. рддрдерд╛рдкрд┐, рдЖрд░реНрдо 64 рд╡рд░ рдЕрдЧрджреА рд▓рд╣рд╛рди рдЙрдкрдпреБрдХреНрддрддрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧрддреАрдиреЗ рдорд▓рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХреЗрд▓реЗ. рдЖрдгрд┐ рдордЧ рджреБрд╕рд░реЗ рдХрд░реНрдирд▓ рдореЙрдбреНрдпреВрд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ, рдЗ. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╣реЗ рдирд┐рд╖реНрдкрдиреНрди рд╣реЛрддреЗ рдХреА рдХрд░реНрдирд▓рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЙрдмрджрд╛рд░ x86 рд▓реЕрдкрдЯреЙрдкрд╡рд░ рдЙрддреНрддрдо рдкреНрд░рдХрд╛рд░реЗ рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдирдВрддрд░ рд╕рд╛рдзреНрдпрд╛ рдХреЙрдкреА рдХрд░реВрди, рд░реАрдмреВрдЯ рдХрд░реВрди рдЖрдгрд┐ рдЪрд╛рдЪрдгреА рдХрд░реВрди R64 рдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ.

рджреБрд╕рд░реА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдпреВрдЬрд░рд╕реНрдкреЗрд╕ рднрд╛рдЧ. рдбреЗрдмрд┐рдпрди рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рдЭреНрдпрд╛ рдмрд╛рдмрддреАрдд, arm64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЖрдзреАрдкрд╛рд╕реВрдирдЪ packages.debian.org рд╡рд░ рдЖрд╣реЗ рдЖрдгрд┐ рдХрд╛рд╣реАрд╣реА рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.

рджреБрд╕рд░реА рд╕рд╛рдпрдХрд▓ рддрдпрд╛рд░ рдХрд░реВ рдирдпреЗ рдореНрд╣рдгреВрди, рдЖрдп рдкреЛрд░реНрдЯ рдХреЗрд▓реЗрд▓реЗ рдЖрд░реНрдореНрдмрд┐рдпрди BPI R64 рд╡рд░.
рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдРрд╡рдЬреА, рд╣реЗ: рдпреБрдЬрд░рд╕реНрдкреЗрд╕ рднрд╛рдЧ рдЖрд░реНрдореНрдмрд┐рдпрди рдЖрд╣реЗ рдЖрдгрд┐ рдХрд░реНрдирд▓ рд░реЗрдкреЙрдЬрд┐рдЯрд░реАрдордзреВрди рдШреЗрддрд▓реЗ рдЖрд╣реЗ рдлреНрд░реЕрдВрдХ-рдП. рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдорд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рдпреЗрдереЗ.

R64 рдЪреНрдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рднрд╛рдЧрд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╡рд░реАрд▓ рд╕рд░реНрд╡ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдк рдЪрд╛рд▓реВ рдЖрд╣реЗрдд рдордВрдЪ. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдирд┐рд░реНрдорд╛рддрд╛ рд╕реНрд╡рддрдГрдЪ Openwrt рд╕рд╛рдареА рд░рд╛рдЙрдЯрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ, рдкрд░рдВрддреБ рдЬрд░реНрдордиреАрддреАрд▓ рдлреНрд░рдБрдХ рд╡рд┐рдХрд╕рдХрд╛рдЪреНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╕рд░реНрд╡ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рддреНрд╡рд░реАрдд рдбреЗрдмрд┐рдпрдирд╕рд╛рдареА рдХрд░реНрдирд▓рдордзреНрдпреЗ рд╕рдВрдкрддрд╛рдд. рдЖрд╢реНрдЪрд░реНрдпрд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ, рдлреНрд░рдБрдХ рдкреНрд░рддреНрдпреЗрдХ рдлреЛрд░рдо рдереНрд░реЗрдбрдордзреНрдпреЗ рд╕рдХреНрд░рд┐рдп рдЖрд╣реЗ.

рдХрд╛рд░реНрдпрдХреНрд╖реЗрддреНрд░ рд╕рдВрдШрдЯрдирд╛: рд╡рд╛рдпрд░реНрд╕

рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреВ рдЗрдЪреНрдЫрд┐рддреЛ рдХреА, рд╡рд┐рдХрд╛рд╕/рдЪрд╛рдЪрдгреА рджрд░рдореНрдпрд╛рди, рдЯреЗрдмрд▓рд╡рд░ SBC (рдХреЗрд╡рд│ BPI рдирд╛рд╣реА) рдХрд╕реЗ рдареЗрд╡рд╛рд╡реЗ рдЬреЗрдгреЗрдХрд░реВрди рд╕рдВрдкреВрд░реНрдг рдЦреЛрд▓реА/рдСрдлрд┐рд╕рдордзреНрдпреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реНрддреНрд░реЛрддрд╛рдХрдбреВрди рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓ рдЪрд╛рд▓рд╡реВ рдирдпреЗ. рд╡рд╕реНрддреБрд╕реНрдерд┐рддреА рдЕрд╢реА рдЖрд╣реЗ рдХреА, рдПрдХреАрдХрдбреЗ, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЗрдВрдЯрд░рдиреЗрдЯрд╕рд╣ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдЪрд╛ рддреБрдХрдбрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рджреБрд╕рд░реАрдХрдбреЗ, рддреНрдпрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рддреАрд▓ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЦрд░рд╛рдм рд╣реЛрдК рд╢рдХрддреЗ рдЖрдгрд┐ рд╕рд░реНрд╡ рдкреНрд░рдердо рд╡рд╛рдпрдлрд╛рдп.

рдкреНрд░рдердо, рдореА рдПрдХ рд╕реНрд╡рд╕реНрдд рдпреВрдПрд╕рдмреА-рд╡рд╛рдпрдлрд╛рдп тАЬрд╢рд┐рдЯреНрдЯреАтАЭ рд╡рд┐рдХрдд рдШреЗрдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ, рддреЗ рдмреАрдкреАрдЖрдпрд╡рд░реАрд▓ рдПрдХрдореЗрд╡ рдкреЛрд░реНрдЯрдордзреНрдпреЗ рдкреНрд▓рдЧ рдХрд░рд╛ рдЖрдгрд┐ рд╡рд╛рдпрд░ рд╡рд┐рд╕рд░реВрди рдЬрд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдПрдХ рд╕реНрд╡рд╕реНрдд TP-LINK TL-WN725N USB 2.0 рдЦрд░реЗрджреА рдХреЗрд▓рд╛, рдкрд░рдВрддреБ рд▓рд╡рдХрд░рдЪ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рддреЗ рдмрдВрдж рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА: рд╢реАрд│ рд╡рд╛рдЬрд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХрд░реНрдирд▓ рдбреНрд░рд╛рдпрд╡реНрд╣рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ, рдЬреЛ рдЕрд░реНрдерд╛рддрдЪ рддреЗрдереЗ рдирд╡реНрд╣рддрд╛. (рдирдВрддрд░ рдореА рдЖрд╡рд╢реНрдпрдХ RTL8XXXU рдбреНрд░рд╛рдпрд╡реНрд╣рд░ рдПрдХрддреНрд░ рдХреЗрд▓реЗ, рдкрд░рдВрддреБ рддреЗ рдЕрджреНрдпрд╛рдк рдЕрд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдЖрд╣реЗ). рдЖрдгрд┐ рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓рдиреЗ рдХрд╛рд╣реА рдХрд╛рд│ рдЦреЛрд▓реАрдЪреЗ рд╕реНрд╡рд░реВрдк рдЦрд░рд╛рдм рдХреЗрд▓реЗ.

рдкрд░рд┐рдгрд╛рдореА, рдореА Tenda MW3 (рд╡рд╛рдпрдлрд╛рдп рдЬрд╛рд│реА рдкреНрд░рдгрд╛рд▓реА) рдЪреНрдпрд╛ рдорджрддреАрдиреЗ рдХреЗрдмрд▓ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ: рдореА рдлрдХреНрдд рдПрдХ рдХреНрдпреВрдм рдЯреЗрдмрд▓рдЦрд╛рд▓реА рдареЗрд╡рд▓рд╛ рдЖрдгрд┐ BPI рд▓рд╛ рдирдВрддрд░рдЪреНрдпрд╛ LAN рдкреЛрд░реНрдЯрд▓рд╛ рдореАрдЯрд░-рд▓рд╛рдВрдм рдЗрдерд░рдиреЗрдЯ рдХреЗрдмрд▓рдиреЗ рдЬреЛрдбрд▓реЗ. рдпрд╢.

рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб, рдЖрд░рдХреЗрдПрди, рдмрд░реНрдб

рдорд▓рд╛ Banana PI рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ рдЕрд╢рд╛ рдЧреЛрд╖реНрдЯреАрдВрдкреИрдХреА рдПрдХ рдореНрд╣рдгрдЬреЗ RKN рджреНрд╡рд╛рд░реЗ рдЕрд╡рд░реЛрдзрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд╛рдЗрдЯреНрд╕рд╡рд░ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдкреНрд░рд╡реЗрд╢ рдЕрд╕рдгреЗ, рд╡рд┐рд╢реЗрд╖рдд: рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЖрдгрд┐ рд╕реНрд▓реЕрдХ рдХреЙрд▓реНрд╕ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛рдд. рдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ Habr├й рд╡рд░реАрд▓ рд▓реЗрдЦ рдЖрдзреАрдЪ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд: рд╡реЗрд│рд╛, ╨┤╨▓╨░, рддреАрди.

рдореА Ansible рд╡рд╛рдкрд░реВрди рдиреЗрдордХреЗ рд╣реЗ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЬрд┐рдд рдХреЗрд▓реЗ: ╤Б╤Б╤Л╨╗╨║╨░.

VPS рдЙрдмрдВрдЯреВ 18.04 рдЪрд╛рд▓рд╡рдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдЧреГрд╣рд┐рдд рдзрд░рд▓реЗ рдЬрд╛рддреЗ. рдореА рдпреБрд░реЛрдкрдордзреАрд▓ рджреЛрди рд╣реЛрд╕реНрдЯрд░реНрд╕рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдкрд╛рд╕рд▓реА: Amazon рдЖрдгрд┐ Digital Ocean.

рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА 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

рдЕрд░реЗ рд╣реЛ, рдпрд╛ рд╕рд░реНрд╡ рдСрдкрд░реЗрд╢рдиреНрд╕рдкреВрд░реНрд╡реА рддреБрдореНрд╣рд╛рд▓рд╛ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╕рд┐рдХреНрд░реЗрдЯреНрд╕ (рд╡рд┐рд╢реЗрд╖рдд: рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдХреА) рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. ./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")

рдлрдВрдХреНрд╢рди рдХреЛрдб рдкрд╣рд╛ install_bird().

рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдореНрд╣рдгрддрд╛рдд pybook рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдпреЗрдереЗ. рдкрд╛рдпрдмреБрдХрд╡рд░ рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреЗрд╣реА рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдирд╛рд╣реА, рдкрд░рдВрддреБ рдореА рдирдВрддрд░ рдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░реЗрди.

рддреНрдпрд╛рд▓рд╛ рдХрд╛рдп рд╡рд╛рдЯрддрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдпрд╛ рдкреНрд░рд╕рдВрдЧреА.

рджреЗрдЦрд░реЗрдЦ. рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕

рдПрдХреВрдг: рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдХрд╛рд░реНрдп рдХрд░рддреЗ, рд▓рд┐рдВрдХреНрдбрдЗрди рдЖрдгрд┐ рдкреЙрд░реНрдирд╣рдм рджреЗрдЦреАрд▓, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдареАрдХ рдЖрд╣реЗ. рдкрд░рдВрддреБ рдЪреАрдиреА рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░рд╕рд╣ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЦрдВрдбрд┐рдд рд╣реЛрдК рд╢рдХрддреЗ.

рдХрд░реНрдирд▓ рдЕрджреНрдпрддрдиреЗ рджреЗрдЦреАрд▓ рдордиреЛрд░рдВрдЬрдХ рдЕрд╕реВ рд╢рдХрддрд╛рдд: рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдорд▓рд╛ рдХрд░реНрдирд▓ 5.4 => 5.6 рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ, рдмрд░рдВ, рд╡рд╛рдпрд░рдЧрд╛рд░реНрдб рдмреЙрдХреНрд╕рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдЖрд╣реЗ, рдкреЕрдЪ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА... рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд▓рд╡рдХрд░ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдирд╛рд╣реА: рдореА рдкрд░рд┐рд╢реНрд░рдордкреВрд░реНрд╡рдХ 5.4 рд╡рд░реВрди рдкреЕрдЪ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ 5.6 рдкрд░реНрдпрдВрдд, рдХрд░реНрдирд▓ рд╕реБрд░реВ рдЭрд╛рд▓рд╛, VPS рдХрдбреЗ рдЬрд╛рдгрд╛рд░рд╛ рдмреЛрдЧрджрд╛ рдкрд┐рдВрдЧ рдЭрд╛рд▓рд╛, рдкрд░рдВрддреБ рдкрдХреНрд╖реА "BGP рдПрд░рд░" рддреНрд░реБрдЯреАрд╕рд╣ рдХрдиреЗрдХреНрдЯ рд╣реЛрдК рд╢рдХрдд рдирд╛рд╣реА ... "рдореА рднрдпрдкрдЯрд╛рдд рдкрд░рддрд▓реЛ" (c) 5.4 рд╡рд░; TODO рдордзреНрдпреЗ 5.6 рд╡рд░ рдЬрд╛рдгреЗ рдкреБрдвреЗ рдврдХрд▓рдгреНрдпрд╛рдд рдЖрд▓реЗ.

рдореНрд╣рдгреВрди, рд░рд╛рдЙрдЯрд░ рдЖрдгрд┐ рд╡реНрд╣реАрдкреАрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдореА рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ (x86 рдЙрдмрдВрдЯреВ 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
EOF

TODO: 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 рдСрд░реНрдбрд░ рдХрд╢реА рдХрд░рд╛рд╡реА

рдмреЛрд░реНрдб рд╕реНрд╡рддрдГ рдЕрдзрд┐рдХреГрдд рд╕реНрдЯреЛрдЕрд░рдордзреНрдпреЗ рдЖрд╣реЗ SinoVoip.
рддреНрд╡рд░рд┐рдд рдСрд░реНрдбрд░ рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ:

  • рдкреЛрд╖рдг + 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛