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.