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

originally posted at http://habrahabr.ru/blogs/linux/37660/ by penpen 21.08.2008

У меня есть стационарный ip телефон, и раутер под ubuntu-server раздающий интернет. Проблема в том, что телефон отдает свой локальный ип (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 (настройки для других телефон скорее всего будут подобными):

Если в Proxy написать адрес сервера с siproxd, то можно звонить между подключенными к данному серверу телефонами. Довольно удобная вещь.

В чем плюсы данного подхода: