26.06.2017

добавить Ip к интерфейсу в centos 6.8

Особенностью является то, что для интерфейса выделяется 1 ip адрес привязанный к MAC и таким образом можно использовать больше IP выделенных для маленьких подсетей.
В общем-то это особенность одного из клиентов.

1. смотрим все интерфейсы доступные в машине, в том числе отключенные:

ipconfig -a

2. копируем файл /etc/sysconfig/network-scripts/ifcfg-eth0 > ifcfg-eth1 т.к. у нас интерфейс в машине eth1 .

3. затем изменяем ifcfg-eth1 на нужный нам, указывая новый mac, адрес шлюза и сам IP.

4. Изменяем /etc/sysconfig/network
добавляем:

gateway = gataway_ip
gatewaydev = eth1

5. Обновляем MAC у виртуальной машины

6. запускаем.

22.06.2017

Настройка voip телефона Polycom 331 для работа с TLS и DNS SRV

Странная логика у этого аппарата, ну понятно, что в виду нехватка документации объяснить какие-то пункты я не смогу, например, мне не понятно, как взаимодействует раздел SIP и line1. Но моя задача была настроить телефон так, чтобы он работал с TLS и DNS SRV, т.к. в текущем проекте, мы использовали DNS failover. Сразу скажу, что все получилось и сама схема DNS SRV failover прекрасна.

Общая схема такая: Polycom 331tlsKamailio —udp— Asterisk

Итак, вот скрины настроек.

Остальные настройки вне line1 нужно сделать дефолтными, и всё пойдет.

20.06.2017

Тестирование Kamailio и multidomain сертификата ssl

Как подключить к Камалио самоподписанный multidomain сертификат.

Как обычно источники: Статья 1, Статья 2

Смысл простой, я так понял это можно сделать добавив extensions в сертификат, а это в свою очередь определяется в файлике openssl.conf

Находим секцию REQ в openssl.conf проверяем, что x509_extensions не закомментирован:

[req]
...
x509_extensions = v3_ca

Затем добавляем секцию v3_ca и указываем в ней следующее:

[v3_ca]
...
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com
DNS.3 = example.co.uk
DNS.4 = www.example.co.uk

У меня сработало и сертификат стал иметь несколько доменных зон, что крайне удобно когда использует DNS файловер.

Проверить, кстати, можно очень просто после создания запроса на сертификат, выполните

openssl req -text -noout -in <запрос_сертификата>.csr

И если увидите, что-то подобное, то можно генерировать сертификат.

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=DE, ST=Germany, L=City, O=Company, OU=Organisation-Unit, CN=server1.example.com/emailAddress=alias@example.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (4096 bit)
                Modulus (4096 bit):
[...]
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name:
                DNS:server1.example.com, DNS:mail.example.com, DNS:www.example.com
, DNS:www.sub.example.com, DNS:mx.example.com, DNS:support.example.com
    Signature Algorithm: sha1WithRSAEncryption
[...]

значит всё удалось.

16.06.2017

TLS. Kamailio. Asterisk. Настройка

Схема которую планировали реализовать:

Client1 —<TLS>— Kamailio —<UDP>— Asterisk —<UDP>— Kamailio —<TLS>— <Client2>

Что почитать перед тем как настраивать, это сразу несколько позиций, они обязательно вам пригодятся, ибо быстро сделать даже такую простую схему без понимания принципа не получится. А может и получится, но останутся дыры.

  1. Документация TLS модуля для Камалио 4.4 – прекрасно описывается как создать сертификат без получения и т.д.
  2. ssldump -Nn покажет обмен внутри протокола ssl кто кому какие сертификаты посылает
  3. howto kamailio and tls

Теперь непосредственно, то как работает TLS в двух словах.

  1. создать центра сертификации – CA
  2. подписать им сертификат для Камалио
  3. скопировать в подписанный сертификат приватный ключь, этот на всякий случай
  4. создать сертификат для sip-клиента
  5. скопировать приватный ключ в сертификат т.к. некоторые сип клиенты не имеют возможность для указания отдельно приватного ключа в настройках
  6. вынести конфигурацию tls в отдельный файл
  7. далее прописать в calist.pem сертификат CA. Это нужно чтобы камалио получив сертификат от клиента проверил его CA в своем списке и если СА в доверенных, то одобрить сертификат (при этом неважно откуда звонит клиент и какой домен (CN) указан в сертификате
  8. Повесить камалио на lts : listen:tls:ip_address:5061
  9. подключить к своему клиенту сертификат.
  10. клиент будет проверять сертификат поэтому, в виндоус нужно добавить в доверенные центры сертификации ваш сертификат CA, который вы создавали в самом начале.
  11. в сертификате Камалио обязательно должен быть указан CN соответствующий домену Камалио, либо его IP адресу если домена как такогово нет.
  12. В настройках камалио нужно оставить только verify_certificate = yes, require_certificate = no. Если поставить оба значения, то у меня ситуация выглядела так: Во время звонка при передаче ACK сообщения sip-клиент создавал новое соединение TLS и оно было отказывалось работать, потому, что не совпадали CN ожидаемые sip-клиентом и указанные в сертификате. Не стал разбираться дальше почему так происходит.

Настройка на данном этапе завершена, сертификат проверяется, т.е. использовать левый сертификат не получится.

15.06.2017

Восстановление базы MySQL из бинарных логов

Восстановление базы MySQL из бинарных логов
Простая статься на хабре, помогает быстренько восстановить утерянные insert в таблицы.

 

Восстановление базы данных из ib_logfile0

10.06.2017

SIPP Тестирование Asterisk

Решил провести тестирование Астериска на предмет максимального количества звонков.
Сразу скажу, у меня Астериск 1.4 и я просто посылаю на эхотест его, примеры эхотеста в астериска в sip.conf есть.

Чтобы провести тестирование нагрузки нам понадобится sipp

  1. yum install sipp
  2. копируем в локальный каталог сценарий с uac_pcap.xml из документации sipp
  3. копируем pcap файлы для астериск в каталог pcap текущей папки
  4. подбираем нужные параметры для sipp и должно работать

Здесь я опишу только 4 пункт:

в моем случае конфигурация рабочая выглядит так:

sipp -sf uac_pcap.xml -r 1 -mi 111.111.111.111 -i 111.111.111.111 -s 1005 222.222.222.222 -trace_msg -rtp_echo -d 5000

где
111.111.111.111 – внешний интерфейс вашей машины
222.222.222.222 – адрес астериска
1005 – номер для эхотеста
-d 5000 – пауза в 5 секунд (опционально)
и все погнали, в моей конфигурации сети, без особых проблем астериск успевает обслужить 50 вызовов в секунду и примерно 500 одновременных соединений, потом начинаются ретрансмиты сообщений.

9.06.2017

Memcached и ограничение соединений к нему

Столкнулся с тем, что клиенты получают ошибку вызванную тем что скрипты на сайте не могу подключиться к memcached

докопался до вот чего:

Огромное количество соединений к localhost остаются в состоянии time_wait в документации по memcached прекрасно сказано, что нужно проверить для увеличении производительности, а вот здесь был конкретный совет по поводу подвисших соединений:

Details of how to tune these variables are outside the scope of this document, but google for “Linux TCP network tuning TIME_WAIT” (or whatever OS you have) will usually give you good results. Look for the variables below and understand their meaning before tuning.

!THESE ARE EXAMPLES, NOT RECOMMENDED VALUES!
net.ipv4.ip_local_port_range = 16384 65534
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

Я внес в систему только параметр net.ipv4.ip_local_port_range сделав его в два раза больше и дело пошло. Полезной оказалась статься про мониторинг memcached в частности утилита memcache-top и команда netstat которая показала кол-во еще ожидающих закрытия соединений.

9.06.2017

Автозапуск Debian 6 и Centos 6.8

Запуск программ при старте Debian:

Добавление скрипта в автозагрузку:

Удаление скрипта из автозагрузки: