Nat, sip і asterisk

немає звуку, немає звуку в одну сторону, ні чутності

Якщо у вас немає звуку, немає звуку в одну сторону, ні чутності, прочитайте уважно цю інструкцію.

NAT може викликати проблеми в декількох місцях.

Якщо одна з АТС знаходиться за NAT. інша АТС не зможе зв'язатися з нею, без проброса портів.

Клієнт за NAT

У простій ситуації SIP клієнт перебуваючи за NAT. звертається до зовнішнього інтерфейсу Asterisk. SIP клієнт при реєстрації на сервері створює запис в таблиці трансляцій, яка зберігається, поки проходить хоча б один пакет в хвилину. У файлі sip.conf потрібно визначити параметри мережі та властивості віддаленого бенкету.

Починаючи з версії Asterisk 11: 'nat = yes' застаріло, використовуйте 'nat = force_rport, comedia'
nat = force_rport, comedia

SIP клієнти і Asterisk за NAT

Щоб уникнути втрати звуку забороніть re-invite в файлі sip.conf

Опція canreinvite застаріла. Використовуйте 'directmedia'.

Але клієнти знаходяться за NAT. все одно не зможуть ініціювати з'єднання з Asterisk і направити голосові пакети RTP на необхідний екстеншен. Для того щоб це працювало, треба прокинути необхідні порти через брандмауер на Asterisk. Діапазон RTP портів використовуваних Asterisk, призначається в файлі rtp.conf.

Для нормальної роботи за NAT. буде потрібно прокинути діапазон RTP портів у відповідності з настройками в файлі rtp.conf і порт SIP (зазвичай 5060). У iptables це буде виглядати так:

Основні параметри конфігурації NAT для Asterisk

Підтримка NAT в Asterisk 12

externaddr
externhost

«Externhost = hostname [: port]» той же що і «externaddr» тільки це 'hostname' оновлюється через «externrefresh» секунд (за замовчуванням 10сек.).

настройки можуть поєднуватися:

media_address
icesupport

ICE / STUN / TURN використання може бути включено глобально або для конкретного бенкету за допомогою 'icesupport' опції.

directmedia