áá áá 64 ᨠRaspberry Pi áá á¨áááłá°á áŁáá ááľ áŚááľ áŽáááŠá°á áááŁááá áá á¨á ááŤáł á¨á¤á°áááľ áá°áŚá˝ áááŁáá á á á á ááá áááá á¨ááááľ áľáááľ áá á áááľá¨áľ áá° áŤáá°á áĽáá˛áá¨á áŤá°ááááá˘
á á ᣠá áľááľá Openwrt á á ᣠáá á¨áŤáą á˝ááŽá˝ á áᾠᣠGUI áĽá CLI; áááŽá˛á á á ᣠáá áĽáá°áá á¨áŤáą GUI / CLI á áá ᣠáĽá Wireguard á¨áłáĽá ááľáĽ á áá°áŤá ... á á á ááá ᣠáĽááľá á áá°áŠáľ áá°á á ááááľ áááá ááľáĽ á˛áአᣠá°áááá á ááĽáŽá˝ áŤáá áŤáá°á áĽáááááᢠá¨áĽáŤááłááą áá áá.
á BPI, R64, áá á-áŚááľ áľáá˝ áľá áŁáá ááŁáĽá ááľáĽ, á°ááłáłá ááá áááľ áá - áá á R64 áá á-áŚááľ áĽáŤáą.
ááľá ááá¨áĽ. á eMMC á áŠá áŤáááą
á áá°áŠá áľ áá ááááľ áŤááĽááľ á¨ááááŞáŤ á˝ááł
á USB-UART áá° R64 ááááááľ áľáá°-ááááĄ-
- áUSB-UART áááľ (PL2303ᣠá°á¨áłáłá-áá°-áŠá¤áľá˘) áá° áŹá˛áŽ áááá˝ áá¨ááť áĽááŽáŁáá
- á¨áłá˝ á ááľá áá áĽáá°ááłá¨á á ááąá á¨áŠá¤áľá˘ áŤá á¨áŽáááŠá°á áá áĽá ááááá UART ᨠR64 áá áŤááá á¨á áŤáľ á áŚáľáľ áááśá˝
- á áŽááá°á áŽááśá ááľáĽ á ááľ
sudo minicom
á¨áá
á áá, á á áĽááááš áááłáá˝ áá á-áŚááľ áŽááśá = áľáŹáľ ááłáŤá.
á°á¨á᪠áá¨áľ áá˝áá
á ááá á ááá ááááľ áŚááŹá˛áá á˛áľá°áá á¨á¤áľá˛ áŤááľ ááŤá ááᥠá áááľ á
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 á¤áľá˛ ááľáá˘áŤ ááľáĽ á áľááĽá°á áĽáá áŤááá áĽá á¨á°ááááá áŽááśá á˛áá á ááááŞáŤ uboot áĽá á ááá á áá°á á á¨ááááľ áááľ áĽááľá°ááááá˘
á ááŤá á¨ááľááť á ááŤá á R64 ááľáĽ eMMC á°áĽá á¨áá áŤáá 8Gb áŤááľ áá áá ááᢠá ááŞá ááľáĽ áŁáá áááŞáŤ áá°á¨áľ ááľáá áá° ááłáŞáŤá áĽáááá áŁáá
/dev/mmcblk0 áá° BPIᣠáłáá á áľááłáŁ á¤áľá˛ áŤááąá á áľáááľáŁ áĽáá°áá 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 ááŤá ááááŤá. áĽáąá áááá
áĽá ááľáá˝á á¨áŁáś áááá á á¨ááá ááááąá ááłáŽá˝ (á¤áľá˛/á˘á¤áá¤áá˛) á¨áááá áááŤá áĽáť áĽá á°á¨á᪠áááá˝á (á
áľá áŤá áá¤áľá˛ áŤáᾠᣠATF ᣠu-boot) ááá áŤáľáááááłáᢠáá
áááľ á ááá áá
á áá á eMMC á ááááá ᣠáĽáááąá ááááá ᣠá áá ááá áľá ᣠá¤áľá˛ áŤááľ á á áá ᣠáá áĽáąá áááľáŤáľ áĽá áá á áłáááŤáá ᣠáľááá á á˝áá ááľáĽ áááá˘
áľááá° ááá ááá¨áĽ. á ááá˘áŤá
á¨ááááŞáŤá á¨áá°áá áŞáŤ á°ááŁá VPNá ááááľ áá, á á°ááĽáŽá Wireguard. áá˛áŤáá á á¨ááá á áŠá áŤáá°á°á á°á áĽá ááá áŤáľááá˝ áĽááłááá አáłáá. á¨áááá áĽáá°áá áááŁá áĽá á x86 áĽáá°ááá´áŁ á¨á¨ááá áááá DKMS á áá áá á°á á°áĽáŠá˘ ááá áĽáá á arm64 áá áľááá˝ áááááŤáá˝á á¨ááááŁáľ ááĽááľ á áŁá á ááŤáľááá áááł á áľáá¨áá. áĽá á¨á፠áá á¨á¨ááá ááá áŤáľáááá, ááá°. á á á ááá ᣠá¨á¨ááá áá á¨á°áááá ááá áá á áááľ x86 áááśá áá á á°áťá áááł á°á°áĽáľáŚ áá° R64 á ááá áá áłáľ ᣠáĽáá°áá áááłáľ áĽá ááá°á˝ á°ááá á˘
ááá ááá á¨á°á áá áŚáł ááá áá. á´á˘áŤáá á ááááĽá áľ ááᣠááá ááá á arm64 architecture á áľááľá á packs.debian.org áá áá áĽá ááá ááá áĽáá°áá ááááŁáľ á áŤáľááááá˘
áá áĽáľáááľ ááááá áᣠI
ááá áááááľ áá
: á¨á°á áá áŚáł ááá á ááá˘áŤá áá, áĽá á¨ááá á¨áá áŤáááŤá ááá°áłá
á R64 á¨áśááľáá ááá áááľ áá ááá áĽáá
áľáá´áá˝ áá¨áááá
á¨áľáŤ áŚáł áľáá áľ: á˝áŚáá˝
áá¨áĽáťáŁ á ááľááľ/á áá¨áŤ áá áľ á¨á¤á°áááľ áŹáĽáá á á á ááá ááá/á˘áŽ ááľáĽ áŤáá á¨á˘áá°áááľ ááá áá° áĽáą áĽááłáŤáľáŹáľ SBC (BPI áĽáť áłááá) á á á¨á´á áá áĽáá´áľ áĽáá°ááŤáľááᥠááááá áĽáááááᢠáĽáááłá áá á á ááľ á áŠá áááľááá á¨á áááá¨áĄ áá áá á¨áĽ á ááĽááľ, á áá á áŠá áá, á á፠á¨áááľáá ááŤá ááľáĽ áŤááľ ááá áááŽá˝ áá ááš áá˝áá, áĽá á ááááŞáŤ Wifi.
á ááááŞáŤ, ááŤá˝ á¨áŠá¤áľá˘-áááá "áá¨áľ" áááááľ áá°ááŠ, á BPI áá áŁáá áĽá¸á áá°áĽ áá áá°áŠáľ áĽá áľá á˝áŚááš áá¨áłá. áá áá áááľá¨á ááŤá˝ TP-LINK TL-WN725N áŠá¤áľá˘ 2.0 ááá ᣠáá áĽáá áłááá áĽáá°ááááł ááá áá - áŠá¸áą áĽáá˛á°áŤ á¨á¨ááá ážáá áŤáľáááááłá ᣠá áĽááἠáĽá፠á ááá á¨á (á áá á áľááááá ᨠRTL8XXXU ážáá á°á á°áĽáŠ, áá á ááá á°ááŁáŤá á áá°áá). áĽá á¨á¤á°áááľ áááľ áá°áá°á áá á¨áááá áá˝áł á á áá˝áˇáá˘
á áá ááááŤáľ áááąá á á´ááł MW3 (Wifi mesh system) á ááłáá áááąá ááľáááľ áťááŠáĄ á ááá á ááľ áŞáŠáĽ á¨á á¨á´áá áľá á áľááᏠBPI á á¨áááá LAN áá°áĽ ááľá ááááľ áŁáá á¨á¤á°áááľ áááľ á áááááľá˘ áľáŹáľá˘
WireguardᣠRKNᣠBird
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
á ááá á á¨áá áŞáá¤á áá° áŞáá¤áľ á á°ááłáłá ááááľ áá°ááŤáľ á ááŚáľáĄ-
ansible-playbook ./router.py -l current-vpn
áĽáá áááአáá áá áá áłá-vpn ááᣠáĽá áľááááá á¨áŞáá¤áľ áľá á á°áááá á°áá áŻá (á áá á ááŁá 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
, áááŤá ááá°á á áá áľ
á áááá ááľáĽ ááťá á¨áá˝á á ááśáá˝á
á YAML á áá¸áľ á¨ááá ááá ᣠááá á¨áá˝á áľáááá˝ á áááá áľááŞááśá˝ ááľáĽ ááááĄá ááŤáľá°áá áá˝ááᢠáááááá ᣠá¨áá áłááá á á°ááá°á ááááľ áĽáá´áľ ááááľ áĽáá°ááťá-
- 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")
á áááá ááľáĽ ááá á¨áá˝á áľáááá˝á ááá áŽáąá áĽáá°áá áĽáá˛á áá ááá áľáááłá ᣠáĽá á á á ááá áááá á¨á á ááá ááá ááá áĽáľáá˝á áá¨ááłáᢠáááłáᣠá R64 áĽá VPS áá áá ááŤááĄ-
install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")
á¨á°ááŁá áŽáľ áááá¨áą
áá
áŁá
᪠ááŁáá pybook
á°á°ááĽáŻá
áá áŤáľáŁá
ááľáľá. ááŽáá´á¨áľ
á á ááᥠá´áááŤá áá°áŤáᥠlinkedin áĽá pornhub áĽáá˛áᥠá á á ááá á¨á°á ááá á°ááᎠá°á á ááᢠááá áá á¨áťáá áááľááá á¨áᎠááá ááá áá°á á áá˝áá.
á¨á¨ááá ááááá˝á á áľá°áłá˝ ááá áá˝ááᥠáááłá á¨ááá 5.4 => 5.6 áááá ááá áá áᣠá°á áᣠWireguard á¨áłáĽá ááľáĽ ááĽáˇáᣠáá áá á áŤáľáááá... áĽáá áłáááᥠááŁáášá á áľááľ á¨5.4 á áľá°áááá ááᢠáá° 5.6, á¨ááá á°áááŻá, ááťá áá° áŞáá¤áľ ááá, ááá áá áá á¨áľá á°áľ "BGP áľá á°áľ" áá áááááľ á áá˝áá ... "á á áľááŞááľ áá° áá á°áááľáŠ" (á) áá° 5.4; áá° 5.6 á¨áá°á¨áá á˝ááá á TODO ááľáĽ ááá áá á°ááááá˘
áľááá ᣠáŤáá°á áĽá áŞáá¤áľá á¨ááŤá á á°á¨á᪠ᣠá¨áá¨á°ááľ á áŤááľ áá á á°áᨠá áľá°ááá áá á¨á°áŤááá ááľáľá (á x86 áĄáĄááą 18.04 áá) á¨ááŹáŤáá á˘
- ááŽáá´á¨áľáŁ ááá፠á áľá°áłáłáŞáŁ blackbox_exporter - ááá á áśá¨á ááľáĽ
- ááááŤáá˝ áá° á´áááŤá áťáá ááłáááľá/á áááľáááá-áŚáľ áŚáľ - áĽáá˛áá á áśá¨á ááľáĽ áááŤá
- áśá á áŚáľ ᣠáŚáľ á áááá¨áĽ á áááá áľ áá áááłáá˝á áĽáá˛áŤáľáłáᾠᣠáá á´áááŤá á ááá á áá°áŤá ᣠáĽá áŚáľ áŤáą áááááľ á áá˝ááá˘
- á°á°ááĽáŻá
ááááŤáá˝ : NodeVPNTroubles (ááŞáá¤áľ ááá á¨áá)ᣠBirdVPNTroubles (á¨áá ááá áá á¨áá)ᣠAntifilterDownloadTroubles (á¨áłááą á¨á áá á áľáŤáťáá˝á ááŤá áá áľá á°áľ)ᣠSiteTroubles (á¨áłáá á´áááŤá á áááá) - á¨áľáááľ ááááŤáá˝áŁ áááłáᣠHostGrowingDiskReadLatency (ááŤá˝ á¤áľá˛ áŤááľ á¨áááá ἠáááá)
á¨ááŤá ááľáľá ááłá:
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
áĽáŤáĄ 2 á á áŤá˘áá˝áŁ 2 BPIᣠanycast failover
á¨ááá ááá á á°á¨á᪠á˘áá°áááľ ááľáŤáąá áĽáá˛ááĽá á¨áááľ á á áŤá˘áá˝ áá ááááááľ áĽá áľ áá á¨á, ááá áĽááłá á ááľ á á áŤá˘ á ááľááአáá á˝áá á˘áá á, ááá áá˘áá°áááľ ááááá á¨áľá°áá, ááá° áĽá ááá˝ á¨á°á áá ááááŤáśá˝.
á áŁááĽá áá áááľ áá á áŁá á¨áá á¨á°á áá á°ááᎠá°áááżá
áá áá áááľ á¨áááľ ááľáĽ á ááľááŁáľ ááá˛áááá áá á áľá፠á¨áá°á á áĽááłááá áá°ááŠáᣠá áááłáŤáľ áĽáť ááᢠááá áĽááłá ᣠá á áἠáá á¨ááááľ áľáŞáśá˝ ááľáĽ ááá ááá á¨á ááľ áľáĽáá áá ááĽáŤáľ áŤáá áľ áááľáá-
ip route add default
nexthop via 192.168.1.1 weight 10
nexthop via 192.168.2.1 weight 5
áľááá ᣠá ááľá á¨ááľááľ ááĽáĽ áááľáááľ 2 á˘áá ááá˝á áĽáááľáłááᣠáĽáŤááłááąá á¨á ááľ á á áŤá˘ áá áĽááááááᣠáĽááľ á áĽááłá˝á áĽáááááá áĽá áĽááľ á áĽááłá˝á á áá/áŚá¤áľá¤áá¤á á áŠá á°áááá áŤáá˛áá áĽáá°ááááá˘
á ááá á, á áááááą áŤá (á˘áá°áááľ, Რá¤á á¤áľ) á áĽáŤááłááą áá á ááľ á áááľ á¨á áá á áľáŤáť áĽááľá°ááááá. áááľáᣠááŁáŞáá ááááľ á áŤáłá˝á á áááá
á ᣠáá á ááᢠáááľááá á°áááŠáľ
áá á°ááŁá áá á áá°á°áá á¨á ᣠá°ááŽááá áŽáŽááŤáá¨áľ áĽáá áá ááłáá á°áŤááˇá (ááá ááá ᨠAliexpress á áá°á¨á°á ᣠáá á¨ááľáá áá áąá áá᳠ᣠá áłáááľ ááľáĽ ááá á¨áĽ áá ááĽáˇá ᣠáá á¨á ááľ áá á áá á ááá ᣠááá°áá á á áŤá˘ áá á ááá á¨áá ᢠá¨áłáŤáá˛á á ááľ áááąá áááŤáá ᣠááŹáĽá á ááľááłá áá ááłáł áááááľ áĽáť á°á˝áá)á˘
R64 áĽáá´áľ ááá áĽáá°ááťá
áŚááą áŤáą á áááá áá°áĽá ááľáĽ áá
áĽáá˛áá áá˛áŤáá ááá á¨á°áťá áá-
ááἠ+ á¨á ááŽá á áĽá¨áľ ááá á¨á ááŞáŤ áá°áŞáŤ á°á¨áá áŤáłáá- á¨áááľ áá áŤáááŤ: áŤá˛áŤá°áŽá˝ / á áľáááá˝; ááááŤáąá áááąá á˛áአáĽá ááĽáŞáŤ áşá áááá
- ᨠwifi á áá´á áŁ
áááłá
ááŠááľ á á - á¨áááŞáŤ áá áá°áá°á áá á áŚáá´ááá áá°áĽá ááľáĽ á á áŤááá á¨áá°á áááᢠáľáŤ á áľáŞáŤá áᲠáááá ááá áľá á°áľ áĽáá°áá á áłáááá áĽá ePacket á $5 ááá¨áĽ áá˝áá ááááá ááŠá˛áŤ á >$33 EMS áĽáť áĽááłá á ááťááᢠá°áľ á¨ááá, áá ááłá á áá°áá. á¨áá á á áá áááľá¨áľ áá á áá á¨áá¨áĄ (á ááá á á ááŤáľ ááľáĽ á áááŤáá) áááá ~ $ 5 áŤáľá¨ááá. Russophobes?... áá á¨á፠ááá¨ááłá á¨áááŞáŤ ááá ~ 30 áśáá áĽáá°áá á ááá áĽá á°á¨áááá˘
á áá ááááŤáľ áᲠáááá á°á ὠᣠáá á áľá¨ááá (ááá: á ááśáá˛á áááŤá áĽááłááŤáá á áŤááą áá áľáá˝ áŤáľáááĄ); áááááľ áĽá á¨áááŞáŤ áááá áá° áá°á áá ááááłá. áľáŹáľá˘
á˝ááŽá˝
áĽáľáŤáá ááá ááá á áľááá áĽá¨á°áŤ á áá°ááá˘
áááłáááľ
ááá á á¨áá˝á=Python áľáááá˝ ááľ áĽáá áá¨áááá, áľáŤ ááľ á¨áááľáá áĽááł á20-30 á°á¨ááľ; ᨠx86 áááśá á¨á áá á¨á¨áá áá á áŤáá á á°á á°á¨á°áᢠá á°á¨ááŞá ᣠá ááááŞáŤ á ááĽáᾠᣠ~ 3 á°á¨áᾠᣠá¨á፠á á¨áá°á ááĽááľ ááááłá ᢠáá á á˛áአááá፠(áľáŽáľááá) ááááŤáľ ááá áá˝áá. ᨠ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
áááá
áááá áá°áŤáᣠááá áá á á ááá˘áŤá áá á¨á ááľ áá áá°á á áá áááááŁ
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
ášáአá á˛áľ ááᣠáĽáľáŤáá áá° á¨ááá á°ááŁáááľ á ááááᣠáťáááá áá°á áťáŚ áĽáá°áá á°áľá á á°ááááá˘
ááá: hab.com