Подключение SIP телефона Gigaset C530A IP в сети POWERNET

Состояние до подключения.

Провайдером выделяется пользователю несколько приватных IP адресов в сети 10.xxx.xxx.xxx. Адреса раздаются по DHCP с возможностью привязки к MAC адресам устройств. Пользователь может использовать эти адреса подключая свои устройства через простой свич без использования маршрутизатора. Приватные IP адреса провайдер, прозрачно для пользователя, преобразует в реальные. В определённый момент времени, IP адрес приватной сети соответствует выделенному реальному IP адресу.

Несмотря на возможность подключения нескольких устройств без маршрутизатора, есть явный недостаток - все устройства пользователя оказываются в публичной сети и подвергаются опасности. Поэтому в квартире всё-таки используется маршрутизатор/брандмауэр - компьютер с двумя сетевыми картами с установленым Scientific Linux 6.5.

От провайдера маршрутизатор получает адрес 10.xxx.xxx.xxx по DHCP. Для "квартирных" устройств сам раздаёт адреса по DHCP в сети 192.168.xxx.xxx.

SIP телефон имеет адрес из сети 192.168.xxx.xxx. Подключен к SIPNET.RU и работает без проблем.

Правила IPTABLES на маршрутизаторе ("/etc/sysconfig/iptables"):

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SIP
-A INPUT -p tcp --dport 60000:60099 -j ACCEPT
-A INPUT -p udp --dport 60000:60999 -j ACCEPT
-A INPUT -p udp --dport 16384:16482 -j ACCEPT
-A INPUT -p udp --dport 5060 -j ACCEPT
-A INPUT -p tcp --dport 5060 -j ACCEPT

*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]

-A POSTROUTING -m iprange --src-range 192.168.xxx.aaa-192.168.xxx.bbb -o eth1 -j MASQUERADE

eth0 - Имеет IP 192.168.aaa.bbb, квартирная сеть. Он-же адрес шлюза для "квартирных" устройств.
eth1 - Имеет IP из 10.xxx.xxx.xxx, сеть провайдера.
Строка "-A INPUT -p udp –dport 16384:16482 -j ACCEPT" была добавлена в процессе подключения аккаунта SIP от POWERNET (сначала не помогла, но, на всякий случай оставлена).

Маршрут по умолчанию на маршрутизаторе установлен на шлюз провайдера ("route -n"):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.xxx.yyy.zzz  0.0.0.0         UG    0      0        0 eth1

Модуль ядра "ip_nat_sip" не используется.

Подключение SIP аккаунта POWERNET и возникшие проблемы.

Провайдером была предоставлена подробнейшая документация по подключению телефона данной модели к их сети. Никаких специфичных настроек не предусматривается. Предоставлено имя пользователя, номер телефона, пароль и адрес сервера регистрации в сети 10.xxx.xxx.xxx. Регистрация на сервере провайдера прошла успешно. Никаких сообщений об ошибках нет.

При звонке с SIP телефона, на его экране выводится сообщение "Статус ошибки 503". Соединения не происходит. При звонке на SIP телефон (на его городской номер) с мобильного телефона, сообщается, что абонент недоступен.

Судя по ошибке 503, сервер отказывает в соединении. Попытки проброса портов SIP сигнализации и медиа ничего не дали. В конце концов телефон был подключен напрямую к сети провайдера. Получив IP адрес вида 10.xxx.xxx.xxx телефон зарегистрировался, звонки и голос стали проходить в обе стороны.

Решение.

Возникло подозрение, что провайдер установил запрет (или разрешение), допускающий звонки только с SIP устройств, имеющих адрес провайдера или один из адресов, зарегистрированных за конкретным абонентом.

При анализе трафика tcpdump-ом, было обнаружено, что при попытке звонка, на SIP сервер уходят сообщения, содержащие IP адрес телефона из сети 192.168.xxx.xxx.

Рассматривалось несколько вариантов решения: от установки дополнительного свича на вводе от провайдера до установки своего SIP сервера на маршрутизаторе на котором уже маршрутизировать SIP звонки. Как наипростейшие варианты: подгрузка модуля ядра "ip_nat_sip" (которая ничего не дала) и присвоение телефону IP адреса провайдера из сети 10.xxx.xxx.xxx при физическом подключении за маршрутизатором (как и было раньше) среди устройств с адресами 192.168.xxx.xxx посредством "proxy arp".

Информация о том, как использовать устройство с IP адресом не принадлежавшим конкретной сети найдено здесь.

  • В "Личном кабинете" провайдера были зарезервированы два IP адреса из сети 10.xxx.xxx.xxx (такая услуга предоставляется бесплатно). Один предназначен для маршрутизатора. Привязан к MAC адресу маршрутизатора. Маршрутизатор получает адрес от провайдера по DHCP (как и раньше). Используется для обычного интернет трафика. Второй зарезервирован для телефона, фактически, является заглушкой "чтоб не отключили" (далее - 10.aaa.bbb.ccc).
  • Для включения "proxy arp" и установки маршрута, на маршрутизаторе, в файл "/sbin/ifup-local" записано следующее:
if [ "$1" == "eth1"  ]; then
echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
ip r a 10.aaa.bbb.ccc dev eth0
fi

eth1 - провайдер, eth0 - квартирная сеть, 10.aaa.bbb.ccc - адрес сети провайдера, зарезервированый для телефона.

  • Для отключения маршрута при отключении eth1, на маршрутизаторе, в файл "/sbin/ifdown-pre-local" записано следующее (возможно, это лишнее):
if [ "$1" == "eth1"  ]; then
ip r d 10.aaa.bbb.ccc dev eth0
fi

Теперь после "поднятия" интефейса eth1 (провайдер), имеем дополнительный маршрут ("route -n"):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.aaa.bbb.ccc  0.0.0.0         255.255.255.255 UH    0      0        0 eth0
  • Устанавлимаем "провайдерский" IP адрес на телефоне, который физически подключен в локальной сети:
Тип IP-адреса:             Статический
IP-адрес:                  10.aaa.bbb.ccc
Маска подсети:             255.255.255.0
Стандартный шлюз:          192.168.aaa.bbb (адрес маршрутизатора в "квартирной" сети, шлюз, который используют остальные устройства в квартире)
Предпочитаемый DNS-сервер  10.fff.ggg.hhh  (DNS1 провайдера)
Альтернативный DNS-сервер  10.fff.ggg.iii  (DNS2 провайдера)

Что в итоге.

  1. Не надо приобретать дополнительный свич, переносить базу телефона, добавлять ещё кучу проводов.
  2. База телефона осталась на своём месте, никакие переподключения не производились.
  3. На телефоне IP адрес провайдера, в SIP пакетах нет адреса "квартирной" сети.
  4. "Городской телефон" от POWERNET работает.
  5. SIPNET.RU работает, как и раньше.
  6. Доступ к WEB интерфейсу телефона работает из "квартирной" сети.
Наверх