Proiect pentru protecţie automată a nodului/reţelei

Dragi colegi,

Prin bunăvoința colegului nostru, Răzvan – YO6NAM, acum avem proiectul unei soluții simple și eficiente, astfel încât fiecare administrator de nod sau repetor RoLink poate să pornească, respectiv să oprească traficul rețetei. Acesta poate să implementeze o soluție simplă de blocare a PTT-urilor, o soluție descentralizată care nu ține de server, ci de doar de nodul sau repetorul respectiv.

Proiectul este foarte util în sensul în care administratorul respectiv sesizează că există o problemă tehnică la alte noduri care creează bruiaje sau deranjamente în întreaga rețea RoLink. Răzvan a intitulat-o: “Protecţie automată a nodului/reţelei împotriva abuzurilor (sau a problemelor tehnice)”, iar mai jos el ne explică modul de funcționare:

Cum funcționează?

Logul generat de către aplicația SVXLink este citit de către rlabp.sh și aplică următoarele :

  • La mai mult de 5 ptt-uri venite dinspre RF într-un interval de 20 de secunde, aplicația se restartează în modul TX Only timp de 30 de minute.
  • Dacă dinspre rețea se primesc mai mult de 10 ptt-uri în interval de 30 de secunde, aplicația oprește traficul dinspre rețea către nod pentru 30 de minute.

După expirarea timpului, se revine la modul RX/TX.

Instalarea se face simplu :

$git clone https://github.com/yo6nam/rlabp  
$cd rlabp  
$./install.sh  

Modificarea fișierului clonă de configurare (svxlinknorx.conf) presupune modificarea liniilor din :

[RxLocal]
...  
SQL_DET=GPIO  
GPIO_SQL_PIN=!gpio20  
...  

în :

[RxLocal]
...  
#SQL_DET=GPIO  
#GPIO_SQL_PIN=!gpio20  
SQL_DET=PTY  
PTY_PATH=/tmp/sql  
...  

După instalare nu este nevoie de alte intervenții, scriptul fiind accesat prin cron la fiecare 15 secunde.

Trigger extern

Logica de comutare în modul ‘TX Only/Operare normală’ poate fi comandată și din surse externe, consolă, cron, etc. Argumentul poate fi 0 (Normal), 1 (TX Only) sau 2 (deblocare trafic nod<->reflector)

$/opt/rolink/scripts/rlabp.sh 0|1|2

Această metodă poate fi folosită dacă se dorește integrarea cu phpKontrol, dar și păstrarea protecției automate.

Mai jos este link-ul către acest proiect și suntem convinși că va stârni interes. De asemenea, cu siguranță va avea un feedback, deoarece este un proiect pe care mulți administratori de nod l-au dorit pentru a fi pus în aplicare.

https://github.com/yo6nam/rlabp

Desigur, așteptăm opiniile voastre, ale tuturor, deoarece rețeaua RoLink există pentru că voi existați și funcționează pentru că fiecare dintre noi contribuim la asta.

Toate bune,

’73

Răzvan – YO6NAM

Modificare OS Armbian pentru imaginile RoLink bazate pe Orange Pi PC

Pasul 1

Se execută următoarele comenzi :

rm -f /etc/logrotate.conf && mv /etc/logrotate.d /tmp && ln -s /tmp /etc/logrotate.d
mv /etc/resolv.conf /run/resolvconf/resolv.conf && ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
mv /var/lib/NetworkManager /tmp && ln -s /tmp /var/lib/NetworkManager
mv /etc/armbianmonitor /tmp && ln -s /tmp /etc/armbianmonitor
systemctl disable apt-daily-upgrade.service && systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily.service && systemctl disable apt-daily.timer
tee -a /etc/bash.bashrc << EOF
fs_mode=\$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")
alias ro='mount -o remount,ro / ; fs_mode=\$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")'
alias rw='mount -o remount,rw / ; fs_mode=\$(mount | sed -n -e "s/^.* on \/ .*(\(r[w|o]\).*/\1/p")'
export PS1='\[\033[01;32m\]\u@\h\${fs_mode:+(\$fs_mode)}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
EOF
tee -a /etc/fstab << EOF
tmpfs /var/log tmpfs nodev,nosuid 0 0
tmpfs /var/tmp tmpfs nodev,nosuid 0 0
EOF
clear

Pasul 2

Se execută comanda : nano /etc/fstab

se modifică prima linie din :
UUID=1b49372a-ea5b-42f6-9e60-036606066891 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1

în :
UUID=1b49372a-ea5b-42f6-9e60-036606066891 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro,ro 0 1

Pasul 3

Se execută comanda : nano /usr/lib/armbian/armbian-hardware-optimization
apoi se adaugă la linia 282 : return

add_usb_storage_quirks() {
return # <---------

După modificările de mai sus, se reporneşte sistemul, iar la următorul log-in, prompt-ul ar trebui să indice starea (ro).
Schimbarea modurilor ro/rw se face cu comenzile ro, respectiv rw.

Razvan / YO6NAM
23.03.2020