Banana Pi R64 ๋ผ์šฐํ„ฐ - Debian, Wireguard, RKN

Banana Pi 64๋Š” Raspberry Pi์™€ ์œ ์‚ฌํ•œ ๋‹จ์ผ ๋ณด๋“œ ์ปดํ“จํ„ฐ์ด์ง€๋งŒ ์—ฌ๋Ÿฌ ์ด๋”๋„ท ํฌํŠธ๊ฐ€ ์žˆ์–ด ๋ฒ”์šฉ Linux ๋ฐฐํฌ ๋ผ์šฐํ„ฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

Banana Pi R64 ๋ผ์šฐํ„ฐ - Debian, Wireguard, RKN

์˜ˆ, Openwrt๋Š” ์ด๋ฏธ ์กด์žฌํ•˜์ง€๋งŒ ์ž์ฒด GUI์™€ CLI๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Mikrotik์ด ์žˆ์ง€๋งŒ ๋‹ค์‹œ ์ž์ฒด GUI / CLI๊ฐ€ ์žˆ์œผ๋ฉฐ Wireguard๋Š” ์ฆ‰์‹œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ... ์ผ๋ฐ˜์ ์œผ๋กœ ์ž‘์—…ํ•˜๋Š” ํ‘œ์ค€ Linux์˜ ํ”„๋ ˆ์ž„ ์›Œํฌ ๋‚ด์—์„œ ์œ ์—ฐํ•œ ์„ค์ •์„ ๊ฐ€์ง„ ๋ผ์šฐํ„ฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค ๋งค์ผ.

BPI, R64, ๋‹จ์ผ ๋ณด๋“œ๋ผ๋Š” ์ด๋ฆ„์˜ ๊ธฐ์‚ฌ์—์„œ Banana Pi R64 ๋‹จ์ผ ๋ณด๋“œ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์„ ํƒ. eMMC๋ฅผ ํ†ตํ•ด ๋‹ค์šด๋กœ๋“œ

์ผํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์Šต๋“ํ•˜๋Š” ๊ธฐ์ˆ  SBC ์ผ๋ฐ˜์ ์œผ๋กœ, ํŠนํžˆ R64์˜ ๊ฒฝ์šฐ R64์—๋Š” ๋ชจ๋‹ˆํ„ฐ ํฌํŠธ(์˜ˆ: HDMI)๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— OS๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ๋–จ์–ด์กŒ์„ ๋•Œ-Wifi, ์ด๋”๋„ท ๋„คํŠธ์›Œํฌ, Bluetooth, USB ๋“ฑ์ด ์ž‘๋™์„ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ํ•ญ์ƒ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฝ˜์†”์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” UART๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

USB-UART๋ฅผ ํ†ตํ•œ R64 ์—ฐ๊ฒฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜:

  • USB-UART ์ผ€์ด๋ธ”(PL2303, Serial-to-USB)์šฉ ๋ผ๋””์˜ค ๋ถ€ํ’ˆ ๋งค์žฅ์œผ๋กœ ์ด๋™
  • ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด USB ํ•œ์ชฝ ๋์„ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋‹ค๋ฅธ ์ชฝ UART๋ฅผ R64์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ ์ฝ˜์†”์—์„œ ์‹คํ–‰ sudo minicom

๊ทธ ํ›„ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋‹จ์ผ ๋ณด๋“œ ์ฝ˜์†”์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค = ์„ฑ๊ณต.
์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ์—.

Banana Pi R64 ๋ผ์šฐํ„ฐ - Debian, Wireguard, 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 ๋ถ€ํŒ…์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ฒด ๋ถ€ํŒ… ์˜ต์…˜์€ eMMC๋ผ๊ณ  ํ•˜๋Š” R64์— ์ด๋ฏธ ๋‚ด์žฅ๋œ 8Gb ์นด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ„ํ‚ค์˜ ์ง€์นจ์— ๋”ฐ๋ผ ์ด๋ฏธ์ง€๋ฅผ ์žฅ์น˜์— ๋‹ค์‹œ ์”๋‹ˆ๋‹ค.
/dev/mmcblk0 to BPI, ์žฌ๋ถ€ํŒ…, SD ์นด๋“œ ์ œ๊ฑฐ, BPI ๋‹ค์‹œ ํ™œ์„ฑํ™”... ๊ทธ๋ฆฌ๊ณ  ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋„์ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ• Boot select ์ฐธ์ง€ ๋งˆ.

์‚ฌ์‹ค ์ตœ์†Œํ•œ BPI์˜ ๊ฒฝ์šฐ ๋‚ด๋ถ€ ํ”Œ๋ž˜์‹œ ๋“œ๋ผ์ด๋ธŒ์—์„œ ๋ถ€ํŒ…ํ•˜๋ ค๋ฉด ํŠน์ˆ˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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์™€ ๊ฐ™์€ VPN์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปค๋„ ์ธก์—์„œ ์กฐ๋ฆฝ๋˜์ง€ ์•Š์•˜๊ณ  ํ—ค๋”๋„ ์—†๋‹ค๋Š” ๊ฒƒ์ด ์ฆ‰์‹œ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ปค๋„์„ ์žฌ๊ตฌ์ถ•ํ•˜๊ณ  ์Šต๊ด€์ ์œผ๋กœ x86์„ ์‚ฌ์šฉํ•˜์—ฌ DKMS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ ๋ชจ๋“ˆ์„ ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ๊ทœ๋ชจ ์œ ํ‹ธ๋ฆฌํ‹ฐ์—์„œ๋„ arm64์˜ ์กฐ๋ฆฝ ์†๋„์— ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋˜ ๋‹ค๋ฅธ ์ปค๋„ ๋ชจ๋“ˆ์ด ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค๋„๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์€ ์›œ ํŠœ๋ธŒ x86 ๋žฉํ†ฑ์—์„œ ์กฐ๋ฆฝํ•œ ๋‹ค์Œ ๊ฐ„๋‹จํ•œ ๋ณต์‚ฌ, ์žฌ๋ถ€ํŒ… ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด R64๋กœ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ๊ฒƒ์€ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋ฐ๋น„์•ˆ์„ ์„ ํƒํ•œ ๊ฒฝ์šฐ์—๋Š” arm64 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ packages.debian.org์— ์žˆ์œผ๋ฉฐ ์•„๋ฌด ๊ฒƒ๋„ ๋‹ค์‹œ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ž์ „๊ฑฐ๋ฅผ ์ƒ์‚ฐํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด, ๋‚˜๋Š” ํฌํŠธ ์•„๋ฅด๋ฉ”๋‹ˆ์•„ BPI R64์—์„œ.
๋˜๋Š” ์˜คํžˆ๋ ค: ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ถ€๋ถ„์€ Armbian์ด๊ณ  ์ฝ”์–ด๋Š” ์ €์žฅ์†Œ์—์„œ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์†”์งํ•œ-ใ…. ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—.

R64์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋ถ€๋ถ„ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๋ชจ๋“  ํ™œ๋™์€ ๋‹ค์Œ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํฌ๋Ÿผ. ์ผ๋ฐ˜์ ์œผ๋กœ ์ œ์กฐ์—…์ฒด ์ž์ฒด๋Š” Openwrt ๋ผ์šฐํ„ฐ๋ฅผ ๋Œ€์ค‘ํ™”ํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ๋…์ผ์˜ ๊ฐœ๋ฐœ์ž Frank์˜ ํ™œ๋™ ๋•๋ถ„์— ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๋ฐ๋น„์•ˆ ์ปค๋„์—์„œ ๋น ๋ฅด๊ฒŒ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋†€๋ž๊ฒŒ๋„ Frank๋Š” ๋ชจ๋“  ํฌ๋Ÿผ ์Šค๋ ˆ๋“œ์—์„œ ํ™œ๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ž‘์—… ๊ณต๊ฐ„ ๊ตฌ์„ฑ: ์™€์ด์–ด

์ด์™€๋Š” ๋ณ„๋„๋กœ ์ธํ„ฐ๋„ท ์†Œ์Šค์—์„œ ์ „์ฒด ๋ฐฉ / ์‚ฌ๋ฌด์‹ค์„ ํ†ตํ•ด ์ด๋”๋„ท ์ผ€์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋„๋ก ๊ฐœ๋ฐœ / ํ…Œ์ŠคํŠธ ์ค‘์— SBC (BPI๋ฟ๋งŒ ์•„๋‹ˆ๋ผ)๋ฅผ ํ…Œ์ด๋ธ”์— ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ๋“œ๋ฆฌ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ํ•œํŽธ์œผ๋กœ๋Š” ์ฒ  ์กฐ๊ฐ์— ์ธํ„ฐ๋„ท์„ ์ œ๊ณตํ•ด์•ผํ•˜๊ณ  ๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ๋Š”์ด ์ฒ  ์กฐ๊ฐ, ํŠนํžˆ Wi-Fi์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ์ €๋ ดํ•œ USB-Wifi "ํœ˜ํŒŒ๋žŒ"์„ ๊ตฌ์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ  BPI์˜ ์œ ์ผํ•œ ํฌํŠธ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์ „์„ ์€ ์žŠ์–ด ๋ฒ„๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ €๋ ดํ•œ TP-LINK TL-WN725N USB 2.0์„ ๊ตฌ์ž…ํ–ˆ์ง€๋งŒ ๊ณง ์ด๋ฅ™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ํœ˜ํŒŒ๋žŒ์ด ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ฌผ๋ก  ๊ฑฐ๊ธฐ์— ์—†์—ˆ๋˜ ์ปค๋„ ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. (๋‚˜์ค‘์— ํ•„์š”ํ•œ RTL8XXXU ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ปดํŒŒ์ผํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋น„์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ์ด๋”๋„ท ์ผ€์ด๋ธ”์€ ํ•œ๋™์•ˆ ๋ฐฉ์˜ ์ „๋ง์„ ๋ง์ณค์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ €๋Š” Tenda MW3(Wifi ๋ฉ”์‰ฌ ์‹œ์Šคํ…œ)์˜ ๋„์›€์œผ๋กœ ์ผ€์ด๋ธ”์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์•„๋ž˜์— ํ๋ธŒ ํ•˜๋‚˜๋ฅผ ๋†“๊ณ  BPI๋ฅผ ๋ฏธํ„ฐ ์ด๋”๋„ท ์ผ€์ด๋ธ”๋กœ ํ›„์ž์˜ LAN ํฌํŠธ์— ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๊ณต.

์™€์ด์–ด๊ฐ€๋“œ, RKN, ์ƒˆ

์ œ๊ฐ€ Banana PI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๋Š” ํŠนํžˆ RKN์— ์˜ํ•ด โ€‹โ€‹์ฐจ๋‹จ๋œ ์‚ฌ์ดํŠธ์— ๋ฌด๋ฃŒ๋กœ ์•ก์„ธ์Šคํ•˜์—ฌ Telegram๊ณผ Slack์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ธฐ์‚ฌ๋Š” ์ด๋ฏธ Habrรฉ์—์„œ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„, ะดะฒะฐ, ์„ธ.

Ansible์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์˜ ๋ฐฐํฌ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ.

VPS๋Š” Ubuntu 18.04๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ ๋Ÿฝ์˜ ๋‘ ํ˜ธ์ŠคํŒ… ์—…์ฒด์ธ Amazon๊ณผ Digital Ocean์—์„œ ์„ฑ๋Šฅ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์œ„์˜ Armbian์„ 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

์—ฌ๊ธฐ์„œ ์ธ์ˆ˜๋Š” ํ•ญ์ƒ current-vpn์ด๊ณ  VPS ์ด๋ฆ„ ์ž์ฒด๋Š” ๋ณ€์ˆ˜์— ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค(์ด ๊ฒฝ์šฐ paris-vpn-aws-t2-micro-1).

$ grep current_vpn group_vars/all 
current_vpn: paris-vpn-aws-t2-micro-1
#current_vpn: frankfurt-vpn-d0-starter-1

์˜ˆ, ์ด ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ํด๋”์— ๋น„๋ฐ€(ํŠนํžˆ Wireguard ํ‚ค)์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ./secrets, ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ.

Python์˜ Ansible ์ž๋™ํ™”

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

Python ์ฝ”๋“œ๋กœ Ansible ๋ช…๋ น์„ ์ž‘์„ฑํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒ”์šฉ ์–ธ์–ด์˜ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์ด ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด R64 ๋ฐ VPS์— ์ƒˆ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ:

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

ํ•จ์ˆ˜ ์ฝ”๋“œ ์ฐธ์กฐ install_bird().

์ด ๊ธฐ๋Šฅ์€ pybook ๊ตฌํ˜„ ์—ฌ๊ธฐ์—. ์•„์ง pybook์— ๋Œ€ํ•œ ๋ฌธ์„œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ด ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋‹ˆ? ์ƒ๋ฅ˜์— ์ด๊ฒƒ์— ๋Œ€ํ•ด.

๋ชจ๋‹ˆํ„ฐ๋ง. ํ”„๋กœ๋ฉ”ํ…Œ์šฐ์Šค

ํ•ฉ๊ณ„: ํ…”๋ ˆ๊ทธ๋žจ ์ž‘๋™, linkedin ๋ฐ pornhub๋„ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒƒ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ณ  ์ค‘๊ตญ ์ฒ  ์กฐ๊ฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค๋„ ์—…๋ฐ์ดํŠธ๋„ ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปค๋„ 5.4 => 5.6์„ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. Wireguard๊ฐ€ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ํŒจ์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. 5.4, ์ปค๋„์ด ์‹œ์ž‘๋˜๊ณ  VPS์— ๋Œ€ํ•œ ํ„ฐ๋„์ด ํ•‘๋˜์—ˆ์ง€๋งŒ ์ƒˆ๊ฐ€ "BGP ์˜ค๋ฅ˜" ์˜ค๋ฅ˜๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹คโ€ฆ 5.6์œผ๋กœ์˜ ์ด๋™์ด TODO์—์„œ ์—ฐ๊ธฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ผ์šฐํ„ฐ์™€ VPS๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ๋‹ค์Œ ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ•จ๊ป˜ ๋ณ„๋„์˜ ํ˜ธ์ŠคํŠธ์— ์„ค์น˜๋˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง(x86 Ubuntu 18.04)์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • prometheus, alertmanager, blackbox_exporter - ๋ชจ๋‘ ๋„์ปค์— ์žˆ์Œ
  • ๊ฒฝ๊ณ ๋Š” metalmatze/alertmanager-bot ๋ด‡์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ…”๋ ˆ๊ทธ๋žจ์ด ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š๊ณ  ๋ด‡ ์ž์ฒด๊ฐ€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ด‡์ด ์ƒํ™ฉ์„ ๊ฒฝ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ด‡์šฉ tor
  • ์ ์šฉ๋œ ์•Œ๋ฆผ: NodeVPNTroubles(VPS์— ๋Œ€ํ•œ ping ์—†์Œ), BirdVPNTroubles(Bird ์„ธ์…˜ ์—†์Œ), AntifilterDownloadTroubles(์ฐจ๋‹จ๋œ IP ์ฃผ์†Œ ๋กœ๋“œ ์‹คํŒจ), SiteTroubles(๋ถˆํ–‰ํ•œ ์ „๋ณด ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
  • HostGrowingDiskReadLatency์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ ๊ฒฝ๊ณ (์ €๋ ดํ•œ SD ์นด๋“œ ์ฝ๊ธฐ ์ค‘์ง€)

๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ • ์˜ˆ์‹œ:

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

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๊ฐœ, BPI 2๊ฐœ, ์• ๋‹ˆ์บ์ŠคํŠธ ์žฅ์•  ์กฐ์น˜

๋ชจ๋“  ๊ฒƒ ์™ธ์—๋„ ํ•œ ๊ณต๊ธ‰์ž๊ฐ€ ๋„คํŠธ์›Œํฌ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท ๋น„์šฉ ์ง€๋ถˆ์„ ์žŠ์—ˆ๊ฑฐ๋‚˜ ๊ธฐํƒ€ ์ธ์  ์š”์ธ์ด ์žˆ๋”๋ผ๋„ ์ธํ„ฐ๋„ท์ด ๊ณ„์† ์ž‘๋™ํ•˜๋„๋ก ๋‘ ๊ณต๊ธ‰์ž์— ์—ฐ๊ฒฐํ•  ๊ณ„ํš์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์ค‘ ์™„ ์ฃผ์ œ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ง„๋ณด๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— Openwrt์—์„œ Mwan3 ์‹œ์Šคํ…œ์šฉ. ์ด ์†”๋ฃจ์…˜์€ ๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ multi-wan์— ๋Œ€ํ•œ ์„ค์ • ๋ฐ ์šด์˜์ด ๋‹ค์†Œ ๋ฒˆ๊ฑฐ๋กญ์Šต๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์˜ˆ : ํ•œ ๋ฒˆ์— ๋‘ ๊ฐœ์˜ IP ์ฃผ์†Œ์—์„œ ์ผ๋ถ€ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜๋ฉด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘๋™์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค => "์ธํ„ฐ๋„ท์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

์ด ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ €๋Š” ๋ฉ€ํ‹ฐํ˜ธ๋ฐ์ด ์•„์ง ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹ˆ๋ผ ์žฅ์•  ์กฐ์น˜์ผ ๋ฟ์ด๋ผ๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ Linux์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•˜๋‚˜์˜ ๋ช…๋ น์œผ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋”ฐ๋ผ์„œ ๋‹จ์ผ ์žฅ์•  ์ง€์ ์ด ์—†๋„๋ก 2๊ฐœ์˜ BPI๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ๊ณต๊ธ‰์ž์— ์—ฐ๊ฒฐํ•˜๊ณ  ํ•จ๊ป˜ ์—ฐ๊ฒฐํ•˜๊ณ  bird/OSPF๋ฅผ ํ†ตํ•œ ๋™์  ๋ผ์šฐํŒ…์œผ๋กœ ์„œ๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์ธํ„ฐ๋„ท, DNS) ๋™์ผํ•œ IP ์ฃผ์†Œ๋ฅผ ๊ฐ๊ฐ ๋ฐœํ‘œํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋ฅผ ํ†ตํ•ด ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜ ์—ผํƒ ์—ฌ๊ธฐ์— .

์ด ๊ธฐ๋Šฅ์€ ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๊ณ  ๊ตํ™œํ•œ ์ฝ”๋กœ๋‚˜ ๋ฐ”์ด๋Ÿฌ์Šค๊ฐ€ ์—‰๋ง์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค (๋ชจ๋“  ๊ฒƒ์ด aliexpress์—์„œ ์˜จ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์˜จ๋ผ์ธ ์ƒ์  ์ธ Layta๋Š” ์ผ์ฃผ์ผ ์•ˆ์— ๋ฐฐ์†กํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ–ˆ๊ณ  ํ•œ ๋‹ฌ ์ด์ƒ์ด ์ง€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ณต๊ธ‰์ž๋Š” ํ™•์žฅํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์—ญ ์ „์— ์ผ€์ด๋ธ”์„ ๋šซ๊ธฐ ์œ„ํ•ด ๋ฒฝ์— ๊ตฌ๋ฉ์„ ๋šซ๋Š” ๋ฐ๋งŒ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค).

R64 ์ฃผ๋ฌธ ๋ฐฉ๋ฒ•

๊ณต์‹ ๋งค์žฅ์˜ ๋ณด๋“œ ์ž์ฒด ์‹œ๋…ธ๋ณด์ดํ”„.
์ฆ‰์‹œ ์ฃผ๋ฌธํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

  • ์Œ์‹ + EU ๋˜๋Š” US ํ”Œ๋Ÿฌ๊ทธ ํ‘œ์ค€์— ์•Œ๋ฆผ
  • ๋ฐฉ์—ดํŒ: ๋ผ๋””์—์ดํ„ฐ/ํŒฌ; CPU์™€ ์Šค์œ„์น˜ ์นฉ์ด ๋ชจ๋‘ ๊ฐ€์—ด๋˜๊ธฐ ๋•Œ๋ฌธ์—
  • ์™€์ดํŒŒ์ด ์•ˆํ…Œ๋‚˜, ์˜ˆ๋ฅผ ๋“ค๋ฉด

๋‰˜์•™์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ ์ƒ์ ์—์„œ ์–ธ์  ๊ฐ€๋ถ€ํ„ฐ ๋ฐฐ์†ก ๊ฐ€๊ฒฉ์ด ๋ถ€์ ์ ˆํ•˜๊ฒŒ ๋†’์•„์กŒ์Šต๋‹ˆ๋‹ค. Judy Huang ๋งค๋‹ˆ์ €๋Š” ์‹ค์ˆ˜๊ฐ€ ์—†์œผ๋ฉฐ $5์— ePacket์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ–ˆ์ง€๋งŒ ๋Ÿฌ์‹œ์•„์˜ ๊ฒฝ์šฐ >33$์— EMS๋งŒ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆ์พŒํ•˜์ง€๋งŒ ์ค‘์š”ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ๋ฐฐ์†ก์„ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ตญ๊ฐ€๋ฅผ ์„ ํƒํ•˜๋ฉด(์ €๋Š” ๋ชจ๋“  ๋Œ€๋ฅ™์„ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค) ๋ฐฐ์†ก๋น„๋Š” ~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

๋ฌด์„  ๋žœ

Wi-Fi๋Š” ์ž‘๋™ํ•˜์ง€๋งŒ ์•ฝ ํ•˜๋ฃจ ํ›„์— Armbian์—์„œ ๋ฉˆ์ถฅ๋‹ˆ๋‹ค.

sa@bananapir64:~$ dmesg | grep -E 'mt7622_wmac.*timeout'
[470303.802539] mt7622_wmac 18000000.wmac: Message 38 (seq 3) timeout
[470314.042508] mt7622_wmac 18000000.wmac: Message 50 (seq 4) timeout
...

์žฌ์‹œ์ž‘๋งŒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€์•ผ ํ•ด ์ดํ•ดํ•˜๋‹ค.

Ethernet

์ด๋”๋„ท์€ ์ž‘๋™ํ•˜์ง€๋งŒ ~ ํ•˜๋ฃจ ํ›„ R64์˜ ํŒจํ‚ท(DHCP) ์ˆ˜์‹ ์ด ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.
์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๋‹ค์Œ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

ifdown br0; sleep 30; ifup br0

๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ƒˆ๋กญ๊ณ  ์ปค๋„์ด ์•„์ง ์Šน์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์ค‘๊ตญ Landen Chao๊ฐ€ ๋งˆ์น˜๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€