Informațiile mele de sistem:
CentOS Linux versiunea 7.9.2009 (Core)
firewall-cmd v0.6.3
iptables v1.4.21
Kernel 3.10.0-1160.25.1.el7.x86_64
Se rulează Asterisk v18.4.0
PBX cu PJSIP
. Cariera mea trimite prea mult SIP INVITARE
pachete pe secundă, să zicem 20 de apeluri pe secundă
de la Al lor VOS3000
softswitch. Cele mai multe dintre ele sunt aglomerate (SIP 503) în punctul meu final de ieșire (de exemplu, doar 2 din cele 20 de apeluri primesc starea de apel).
Determină o utilizare foarte mare a procesorului așa cum o folosesc PHP AGI (FastAGI)
pentru fiecare apel primit, precum și atunci când apelul închide.
Acum, vreau să mă limitez SIP INVITARE
pachete folosind firewalld
. Spune, vreau maxim 3 INVITĂRI pe secundă; alerg
firewall-cmd --permanent --direct --add-rule filtru ipv4 INPUT_direct 0 -p udp --dport 5060 -m string --algo bm --string "INVITE sip:" -m hashlimit --hashlimit-above 3/ sec --hashlimit-mode dstport --hashlimit-name sip -j REJECT --reject-with icmp-port-unreachable
firewall-cmd --reîncărcare
Comenzile de mai sus reușesc, dar nu funcționează. Trimit 20 de apeluri pe secundă folosind SIPp
de la o gazdă externă și văd că peste 900 de apeluri pe minut lovesc PBX-ul meu Asterisk.
De asemenea, alergând tcpdump -i orice -nn icmp
pe server nu afișează niciun mesaj ICMP inaccesibil pentru portul 5060.