вторник, 27 февраля 2018 г.

Починка сразу всех таблиц всех баз данных

#mysqlcheck -u root -p --auto-repair --check --all-databases
Ну или всех таблиц одной базы
#mysqlcheck -u root -p DB_NAME --auto-repair --check --all-databases:

понедельник, 26 февраля 2018 г.

Параметры PJSIP, на которые стоит обратить внимание.

auth_rejection_permanent=yes
Определяет, продолжать ли попытки регистрации, если превышено число max_retries.
По-умолчанию включен, т.е. регистрация останавливается до pjsip reload.

Так же по-умолчанию прекращаются попытки регистрации при получении ответа 403.
Это не всегда хорошо.
;forbidden_retry_interval=0     ; Interval used when receiving a 403 Forbidden
                                ; response (default: "0")
;fatal_retry_interval=0 ; Interval used when receiving a fatal response.
                        ; (default: "0") A fatal response is any permanent
                        ; failure (non-temporary 4xx, 5xx, 6xx) response
                        ; received from the registrar. NOTE - if also set
                        ; the 'forbidden_retry_interval' takes precedence
                        ; over this one when a 403 is received. Also, if
                        ; 'auth_rejection_permanent' equals 'yes' a 401 and
                        ; 407 become subject to this retry interval.


воскресенье, 25 февраля 2018 г.

Разный софт для FreeBSD.

Проверка скорости канала: iperf.
Проверка загрузки канала: iftop, slurm.
Загрузка файловой системы: "top -m io -o total", gstat
Сетевой grep: ngrep -q -d em0 -p -W byline '' 'port 5060'
SMTP-клиент для PHP: msmtp
SMTP-клиент с аттачами: mutt, biabam
POP3-клиент: fetchmail
Тестирование SIP: sipp
# sipp -rtp_echo -sn uac 192.168.2.211 -d 60s -s 222 -rp 1s -r 10 -l 300


Еще команды тут.

вторник, 30 января 2018 г.

Важный момент безопасности PJSIP

Endpoint и AOR определяются тремя способами:
1) ip - по IP-адресу источника;
2) username - по содержимому поля From;
3) auth_username - по полю Authentication.
За выбор способа отвечает параметр identify_by секции endpoint.
По-умолчанию определение происходит в порядке ip,username. То есть сначала проверяется совпадение IP-адреса источника с указанным в секции identify/match, а если не совпало,  то совпадение имени и домена из поля From с именем endpoint или AOR.
Таким образом, если у нас есть endpoint [trunk301], с указанным в параметре identify/match адресом 10.10.10.1, то любой может указать своим именем trunk301, и совершить вызов с любого IP-адреса.
Поэтому важно ограничивать значение identify_by только нужным в каждом конкретном случае, указывая его через шаблон или непосредственно.
При этом необходимо помнить, что identify_by=auth_username будет работать только в том случае, если есть секция auth и она привязана к endpoint. Если нет, то auth_username работает просто как username! Со всеми вытекающими потенциальными проблемами.

Так же имеет смысл изменить значение параметра endpoint_identifier_order секции global на подходящий текущим настройкам.

четверг, 25 января 2018 г.

Таймеры в SIP.

In this blog article I will deal with the three basic SIP timer parameters – T1, Timer B, and Timer F.  T1 is the estimated round trip time of an IP packet.  By default, T1 is set to 500 milliseconds which for many networks can be a little on the high side.   However, the SIP standard allows you to ignore the default and set it to something that better matches your network characteristics.

среда, 24 января 2018 г.

CentOS 7. Отдельный лог iptables.

Создаем файл /etc/rsyslog.d/iptables.conf. Пишем в него:
:msg, contains, "Iptables: " -/var/log/iptables.log
& stop
Перегружаем rsyslog.
В правила iptables добавляем логирование, например:
-A INPUT -p udp --dport 5060 -j LOG --log-prefix "Iptables: SIP "
-A INPUT -p tcp --dport 22 -j LOG --log-prefix "Iptables: SSH "