Banana Pi 64๋ Raspberry Pi์ ์ ์ฌํ ๋จ์ผ ๋ณด๋ ์ปดํจํฐ์ด์ง๋ง ์ฌ๋ฌ ์ด๋๋ท ํฌํธ๊ฐ ์์ด ๋ฒ์ฉ Linux ๋ฐฐํฌ ๋ผ์ฐํฐ๊ฐ ๋ฉ๋๋ค.

๋ค, OpenWrt๊ฐ ์์ง๋ง, OpenWrt๋ ๊ณ ์ ํ ํน์ง๊ณผ GUI ๋ฐ CLI๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. Mikrotik๋ ์์ง๋ง, ์ด ๋ํ ์์ฒด์ ์ธ GUI/CLI๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. Wireguard ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ์ ๋๋ก ์๋ํ์ง ์๋ค์... ์ ๊ฐ ์ํ๋ ๊ฑด, ๋งค์ผ ์ฌ์ฉํ๋ ํ์ค ๋ฆฌ๋ ์ค ์์คํ ๋ด์์ ์ ์ฐํ ์ค์ ์ด ๊ฐ๋ฅํ ๋ผ์ฐํฐ์ ๋๋ค.
BPI, R64, ๋จ์ผ ๋ณด๋๋ผ๋ ์ด๋ฆ์ ๊ธฐ์ฌ์์ Banana Pi R64 ๋จ์ผ ๋ณด๋ ์์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
์ด๋ฏธ์ง ์ ํ. eMMC๋ฅผ ํตํด ๋ค์ด๋ก๋
์ผํ ๋ ๊ฐ์ฅ ๋จผ์ ์ต๋ํ๋ ๊ธฐ์ ์ผ๋ฐ์ ์ผ๋ก, ํนํ R64์ ๊ฒฝ์ฐ R64์๋ ๋ชจ๋ํฐ ํฌํธ(์: HDMI)๊ฐ ์๊ธฐ ๋๋ฌธ์ OS๋ฅผ ๋ก๋ํ๊ณ ์ํธ ์์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋จ์ด์ก์ ๋-Wifi, ์ด๋๋ท ๋คํธ์ํฌ, Bluetooth, USB ๋ฑ์ด ์๋์ ๋ฉ์ท์ต๋๋ค. ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฌด์์ด ์๋ชป๋์๋์ง ํญ์ ๋ณผ ์ ์๊ณ ํ์ํ ๊ฒฝ์ฐ ์ฝ์์์ ๋ช ๊ฐ์ง ๋ช ๋ น์ ์คํํ ์ ์๋ UART๊ฐ ์์ต๋๋ค.
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 ๋ถํ ์ ๊ด์ฐฐํฉ๋๋ค.
๋์ฒด ๋ถํ
์ต์
์ 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/mmcblk0boot0R64 ์ ์กฐ์ ์ฒด(์ค๊ตญ)๊ฐ ์ด ๋ฐ์ด๋๋ฆฌ๋ฅผ ๊ฒ์ํ์ต๋๋ค. . ๊ทธ๊ฐ ํ๋ ์ผ์ ์๋ ค์ง์ง ์์์ง๋ง(์์ค ์ฝ๋๊ฐ ์์), ๊ทธ๊ฐ ์์ด๋ ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ทธ ํ์ eMMC์์ ์ด๋ฏธ์ง๊ฐ ๋ก๋๋๊ธฐ ์์ํฉ๋๋ค. ๊ทธ๊ฒ์ ํ์ ํ๊ณ ์ฒ์๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ๋ ๊ฒฝ์ฐ ๋ชจ๋ (SD / eMMC) ์ปค๋์ ๋๋ฌํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ํ์ผ (SD ์นด๋ ์ฉ ํ๋ฆฌ ๋ก๋, ATF, u-boot)์ ๋ ์์ฑํด์ผํฉ๋๋ค ์ ๋ณ. ์ด ์ฃผ์ ๋ ์์ง , ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์๋ํ๊ณ ๊ด์ฐฎ๋ค๋ ๊ฒ์ ๋๋ค.
์ง๊ธ์ ์์งํ eMMC๋ค์ด๋ก๋ ์์ฐ๊ณ SD์นด๋๋ฉด ์ถฉ๋ถํ์ง๋ง ์๋์ํค๋ ๋ฐ ๊ฝค ๋ง์ ์๊ฐ์ ๋ค์์ผ๋ ๊ธฐ์ฌ์ ์ฐ๋๋ก ํฉ์๋ค.
์ด์ ์ฒด์ ์ ํ. ์๋ฅด๋น์์ด
์ฒซ ๋ฒ์งธ ์ค์ง์ ์ธ ์์ ์ ๋น์ฐํ VPN์ ์คํํ๋ ๊ฒ์ ๋๋ค. Wireguard๊ณง๋ฐ๋ก ์ปค๋์ด ์ ๋๋ก ์ปดํ์ผ๋์ง ์์๊ณ ํค๋ ํ์ผ๋ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ปค๋์ ๋ค์ ๋น๋ํ๊ณ , x86 ํ๊ฒฝ์์ ๋ ํ๋ ๋๋ก DKMS๋ฅผ ์ด์ฉํด ์ปค๋ ๋ชจ๋์ ๋น๋ํ์ต๋๋ค. ํ์ง๋ง ARM64 ํ๊ฒฝ์์์ ๋น๋ ์๋๋ ์์ ์ ํธ๋ฆฌํฐ์กฐ์ฐจ ์์์ธ๋ก ๋๋ ธ์ต๋๋ค. ๊ทธ ํ ๋ ๋ค๋ฅธ ์ปค๋ ๋ชจ๋์ด ํ์ํ๊ณ , ์ด๋ฐ ์์ผ๋ก ๊ณ์ ์งํ๋์์ต๋๋ค. ๊ฒฐ๊ตญ, ์ปค๋ ๊ด๋ จ ์์ ์ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ x86 ๋ ธํธ๋ถ์์ ์ปดํ์ผํ ๋ค์ ARM64 ํ๊ฒฝ์ผ๋ก ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ณ ์ฌ๋ถํ ํ ํ ์คํธํ๋ ๊ฒ์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
์ฌ์ฉ ๊ณต๊ฐ ๋ถ๋ถ์ ๋ณ๊ฐ์ ๋ฌธ์ ์ ๋๋ค. ์ ๊ฒฝ์ฐ์๋ ์ ํ์... Debianarm64 ์ํคํ ์ฒ์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ด๋ฏธ ํจํค์ง์ ํฌํจ๋์ด ์์ต๋๋ค.debian.org ๋๋ฉ์ธ์ด๋ฏ๋ก ๋ค์ ์ปดํ์ผํ ํ์๊ฐ ์์ต๋๋ค.
๋ค๋ฅธ ์์ ๊ฑฐ๋ฅผ ์์ฐํ์ง ์๊ธฐ ์ํด, ๋๋ BPI R64์์.
๋๋ ์คํ๋ ค: ์ฌ์ฉ์ ๊ณต๊ฐ ๋ถ๋ถ์ Armbian์ด๊ณ ์ฝ์ด๋ ์ ์ฅ์์์ ๊ฐ์ ธ์ต๋๋ค. -ใ
. ์ต์ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. .
R64์ ์ํํธ์จ์ด ๋ถ๋ถ ๊ฐ๋ฐ์ ๋ํ ๋ชจ๋ ํ๋์ ๋ค์์์ ์ํ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ์กฐ์ฌ ์์ฒด๋ OpenWrt๋ฅผ ์ฌ์ฉํ๋ ๋ผ์ฐํฐ๋ฅผ ๋ณด๊ธํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง๋ง, ๋ ์ผ ๊ฐ๋ฐ์ Frank์ ํ๋ ๋๋ถ์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋น ๋ฅด๊ฒ ์ปค๋์ ๋ฐ์๋ฉ๋๋ค. Debian-a. ๋๋๊ฒ๋ ํ๋ญํฌ๋ ๋ชจ๋ ํฌ๋ผ ๊ฒ์๊ธ์ ํ๋ฐํ๊ฒ ์ฐธ์ฌํ๊ณ ์์ต๋๋ค.
์์ ๊ณต๊ฐ ๊ตฌ์ฑ: ์์ด์ด
์ด์๋ ๋ณ๋๋ก ์ธํฐ๋ท ์์ค์์ ์ ์ฒด ๋ฐฉ / ์ฌ๋ฌด์ค์ ํตํด ์ด๋๋ท ์ผ์ด๋ธ์ ์ฐ๊ฒฐํ์ง ์๋๋ก ๊ฐ๋ฐ / ํ ์คํธ ์ค์ SBC (BPI๋ฟ๋ง ์๋๋ผ)๋ฅผ ํ ์ด๋ธ์ ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ฌ์ค ํํธ์ผ๋ก๋ ์ฒ ์กฐ๊ฐ์ ์ธํฐ๋ท์ ์ ๊ณตํด์ผํ๊ณ ๋ค๋ฅธ ํํธ์ผ๋ก๋์ด ์ฒ ์กฐ๊ฐ, ํนํ Wi-Fi์์ ๋ชจ๋ ๊ฒ์ด ๊นจ์ง ์ ์์ต๋๋ค.
๋จผ์ ์ ๋ ดํ USB-Wifi "ํํ๋"์ ๊ตฌ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ BPI์ ์ ์ผํ ํฌํธ์ ์ฐ๊ฒฐํ๊ณ ์ ์ ์ ์์ด ๋ฒ๋ ธ์ต๋๋ค. ์ด๋ฅผ ์ํด ์ ๋ ดํ TP-LINK TL-WN725N USB 2.0์ ๊ตฌ์ ํ์ง๋ง ๊ณง ์ด๋ฅํ์ง ์์ ๊ฒ์ด๋ผ๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค. ํํ๋์ด ์๋ํ๋ ค๋ฉด ๋ฌผ๋ก ๊ฑฐ๊ธฐ์ ์์๋ ์ปค๋ ๋๋ผ์ด๋ฒ๊ฐ ํ์ํ์ต๋๋ค. (๋์ค์ ํ์ํ RTL8XXXU ๋๋ผ์ด๋ฒ๋ฅผ ์ปดํ์ผํ์ง๋ง ์ฌ์ ํ ๋น์ค์ฉ์ ์ ๋๋ค.) ๊ทธ๋ฆฌ๊ณ ์ด๋๋ท ์ผ์ด๋ธ์ ํ๋์ ๋ฐฉ์ ์ ๋ง์ ๋ง์ณค์ต๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ ๋ Tenda MW3(Wifi ๋ฉ์ฌ ์์คํ )์ ๋์์ผ๋ก ์ผ์ด๋ธ์ ์ ๊ฑฐํ ์ ์์์ต๋๋ค. ํ ์ด๋ธ ์๋์ ํ๋ธ ํ๋๋ฅผ ๋๊ณ BPI๋ฅผ ๋ฏธํฐ ์ด๋๋ท ์ผ์ด๋ธ๋ก ํ์์ LAN ํฌํธ์ ์ฐ๊ฒฐํ์ต๋๋ค. ์ฑ๊ณต.
Wireguard, RKN, ์
์ ๊ฐ Banana PI๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ค ํ๋๋ ํนํ RKN์ ์ํด โโ์ฐจ๋จ๋ ์ฌ์ดํธ์ ๋ฌด๋ฃ๋ก ์ก์ธ์คํ์ฌ Telegram๊ณผ Slack์ ๋ํ ํธ์ถ์ด ์๋ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ๊ธฐ์ฌ๋ ์ด๋ฏธ Habrรฉ์์ ์ ์๋์์ต๋๋ค. , , .
Ansible์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์๋ฃจ์ ์ ๋ฐฐํฌ๋ฅผ ๊ตฌํํ์ต๋๋ค. .
VPS๋ ๋ค์ ํ๊ฒฝ์์ ์คํ ์ค์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. Ubuntu 4์ 18์ผ. ์ ๋ฝ์ ๋ ํธ์คํ ์ ๊ณต์ ์ฒด์ธ ์๋ง์กด๊ณผ ๋์งํธ ์ค์ ์์ ํด๋น ๊ธฐ๋ฅ์ ํ ์คํธํ์ต๋๋ค.
๊ทธ๋์ ์์ 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: yesPython์ ํตํด ๋์ผํ ๋ฐฉ๋ฒ:
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")ํจ์ ์ฝ๋ ์ฐธ์กฐ .
์ด ๊ธฐ๋ฅ์ pybook ๊ตฌํ . ์์ง pybook์ ๋ํ ๋ฌธ์๊ฐ ์์ผ๋ฏ๋ก ์ด ๊ฒฐํจ์ ์์ ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ ์ด๋ป๊ฒ ์๊ฐํ๋? ์ด๊ฒ์ ๋ํด.
๋ชจ๋ํฐ๋ง. ํ๋ก๋ฉํ ์ฐ์ค
ํฉ๊ณ: ํ ๋ ๊ทธ๋จ ์๋, linkedin ๋ฐ pornhub๋ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ๊ฒ์ด ๊นจ์ง ์ ์๊ณ ์ค๊ตญ ์ฒ ์กฐ๊ฐ๋ ์์ต๋๋ค.
์ปค๋ ์ ๋ฐ์ดํธ๋ ํฅ๋ฏธ๋ก์ธ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ์ปค๋ 5.4์์ 5.6์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ์ถ์์ต๋๋ค. Wireguard ๋ณ๋์ ํจ์น๊ฐ ํ์ ์๋ค๊ณ ์๊ฐํ๋๋ฐ, ๊ณง๋ฐ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. 5.4์์ 5.6์ผ๋ก ํจ์น๋ฅผ ํ๋ค๊ฒ ์ฎ๊ธฐ๊ณ ์ปค๋์ ์์๋์์ง๋ง, VPS ํฐ๋์ ํ์ด ์ฐ๊ฒฐ๋์ง ์๊ณ Bird๊ฐ "BGP ์ค๋ฅ"๋ฅผ ํ์ํฉ๋๋ค. "๋๋ฌด ๋๋ผ์" (c) 5.4๋ก ๋กค๋ฐฑํ๊ณ , 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-preprodprometheus์ ๋ํ ์๋ ๊ฒ์์ ๋ชจ๋ํฐ๋ง์ ํธ์คํธ๋ฅผ ์ถ๊ฐํ๋ ์์ธ /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๊ฐ, 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
