Домашний сервер: прокси для SIP

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1788956807 AND uid = 0 in /var/www/html/includes/session.inc on line 157.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(DISTINCT s.uid) FROM sessions s WHERE s.timestamp >= 1788956807 AND s.uid > 0 in /var/www/html/modules/user/user.module on line 808.
Проблема в том, что телефон отдает свой локальный ип (192.168.0.6) sip серверу, и соответственно дозвонится мне уже не возможно. Проброска портов здесь тоже не поможет.
Первое что пришло в голову — завести Asterisk PBX (программная АТС), но данное решение кажется избыточным для дома с одним телефоном, одним SIP провайдером и без FXO интерфейса. Совершенно случайно нашел небольшую утилиту реализующую как раз-то, что нужно: siproxd. Данная программа есть в репозитории дебиана и убунты.

Настройка siproxd.conf:

# Интерфейс на котором висят sip телефоны и клиенты (да, siproxd может проксировать множество клиентов)
if_inbound  = eth0
# Интерфейс к которому подключен интернет (важно чтобы интерфейс имел реальный ip адрес,
# т.к. именно на него будут поступать звонки). В моём случае это интерфейс PPPoE, к которому
# подключается сервер через adsl
if_outbound = ppp0
# Подсети с которых могут подключатся sip клиенты (через запятую, без пробелов)
hosts_allow_reg = 192.168.0.0/24
# Подсети с которых разрешен SIP трафик, т.е. звонящие на телефон.
#hosts_allow_sip = 123.45.0.0/16,123.46.0.0/16
# Подсети с которых запрещен SIP трафик.
#hosts_deny_sip  = 10.0.0.0/8,11.0.0.0/8

Остальные опции менять не нужно. Так же можно настроить быстрый набор:

# Включаем необходимый плагин
pi_shortdial_enable = 1
# Задаем промежуток для номеров быстрого набора (*00 -- от *01 до *99)
pi_shortdial_akey = *00
# номер для записи выбирается по порядку добавления в конфигурационном файле.
# т.е. для промежутка от *01 до *99 первая запись будет *01,
pi_shortdial_entry = 11111@test.com
# а вторая *02
pi_shortdial_entry = 22222@test.com

Как выглядит настройка на телефоне Cisco 7912g (настройки для других телефон скорее всего будут подобными):
  • OutBoundProxy: адрес сервера с siproxd
  • Proxy: адрес sip сервера провайдера
  • UID: Ваш UID у sip провайдера
  • PWD: Ваш пароль
Если в Proxy написать адрес сервера с siproxd, то можно звонить между подключенными к данному серверу телефонами. Довольно удобная вещь.
В чем плюсы данного подхода:
  1. Нет необходимости запускать и настраивать полноценную АТС
  2. Довольно легко настраивать
  3. Прокси поддерживает авторизацию, соответственно можно сделать небольшой прокси сервер внутри организации с возможностью звонков между телефонами по короткому номеру.
  4. Можно использовать аппаратные sip телефоны за NAT (программные в основном и так прекрасно работают, благодаря STUN и другим технологиям)

Who's online

There are currently users and guests online.