2

Мой провайдер предлагает своим пользователям VDSL возможность использовать любой смартфон в качестве беспроводного домашнего телефона, используя официальное приложение.

Они не предоставляют никакой документации или исходного кода, но кто-то сумел де-запутать приложение и обнаружил, что оно работает благодаря SIP-серверу, который работает на модеме / маршрутизаторе, который интернет-провайдер предоставляет своим клиентам. Нет способа настроить его, он полностью скрыт для обычного пользователя.

Этот парень также нашел способ, которым приложение получает учетные данные, необходимые для входа в систему, что позволяет любому устройству с установленным на нем SIP-клиентом подключаться к маршрутизатору, а также принимать и совершать звонки на стационарной линии.

Адрес, который приложение использует для входа в систему, представляет собой строку (modemtelecom.homenet.telecomitalia.it), которая преобразуется в адрес локальной сети маршрутизатора (по умолчанию 192.168.1.1). Если я пытаюсь войти на user@192.168.1.1 он работает нормально; в любом случае, если я попытаюсь войти на сервер, используя в качестве адреса узла мой внешний IP-адрес, произойдет сбой.

Я попытался настроить маршрутизатор для пересылки трафика, поступающего из WAN через SIP-порт, на его собственный адрес, но он отказывается это сделать (я не знаю, может ли это быть ограничением со стороны интернет-провайдера или чем-то, что просто невозможно делать).

Как вы думаете, может ли быть способ обмануть мой маршрутизатор, позволяя мне войти в систему на SIP-сервере, когда я нахожусь вне моей домашней локальной сети?


Как предложил мне MariusMatutiae , я установил сервер OpenVPN на ПК, подключенном к моей локальной сети; Затем я приступил к маскировке трафика из OpenVPN и успешно подключил свой Android-смартфон к VPN и SIP-серверу внутри моей локальной сети. Пока что кажется, что я могу только отправлять аудио, но не могу ничего получить.

В любом случае, это выглядит как правильный путь: чтобы попытаться получить помощь по вопросам, с которыми я столкнулся, я задал еще один вопрос здесь.

1 ответ1

2

Если я пытаюсь войти на user@192.168.1.1, он работает нормально; в любом случае, если я попытаюсь войти на сервер, используя в качестве адреса узла мой внешний IP-адрес, произойдет сбой.

Конечно, это терпит неудачу: если бы это не так, я (и многие, многие другие люди ;-)) делал бы звонки через ваш SIP-сервер за ваш счет.

Чтобы заставить его работать, убедитесь, что ваш телефон, находясь вне дома, имеет IP-адрес в вашей локальной сети. Этого можно достичь, если вы настроите маршрутизируемый сервер OpenVPN на Linux-компьютере дома (это можно сделать с помощью Raspberry pi 3, небольшого компьютера, который стоит чуть более 40 евро).

Существует приложение OpenVPN для Android и iOS (и, возможно, некоторых других ОС, но я не уверен, что вам придется проверять), которое позволяет телефонам использовать маршрутизируемые OpenVPN (не подключенные OpenVPN, осторожно). Единственный недостающий ингредиент - это использование правила MASQUERADE на Linux box,

sudo iptables -t nat -A POSTROUTING -o eth0 ! -d 10.0.0.0/24 -j MASQUERADE 

(если вы используете подсеть 10.0.0.0/24 для ваших клиентов OpenVPN, в противном случае измените соответствующим образом). В этот момент весь трафик с вашего телефона направляется к локальной сети, включая сервер SIP, будет отображаться как прибывающие из коробки Linux, который действительно имеет IP - адрес в локальной сети, и , таким образом , ваш телефон сможет получить доступ к серверу SIP ,

Это будет работать, но, возможно, неидеально. Если качество звука не является идеальным, если есть заикание или прерывистые соединения, вам нужно будет научиться расставлять приоритеты VoIP-трафика в вашей локальной сети. Но так как он уже настроен через модем вашего провайдера, я уверен, что он будет работать "из коробки".

Это немного сложный, но очень весело. Все шаги хорошо документированы на сайтах gazillion, просто используйте ваш Google.

РЕДАКТИРОВАТЬ

Ваша таблица маршрутизации должна выглядеть так:

default via 192.168.1.254 dev eth0
10.8.73.128/26 via 10.8.73.130 dev tun0 
10.8.73.130 dev tun0  proto kernel  scope link  src 10.8.73.129 
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.128 
192.168.73.0/24 dev brlan  proto kernel  scope link  src 192.168.73.1 

Мой маршрутизатор Debian имеет два интерфейса, eth0 - это WAN, а brlan - это LAN. 192.168.73.0/24 - это локальная сеть, 192.168.1.0/254 - в подключении к моему модему на стороне WAN, 10.8.73.128/26 - это сеть OpenVPN, и то, чего вам не хватает, является важным утверждением

10.8.73.130 dev tun0  proto kernel  scope link  src 10.8.73.129 

который определяет туннель.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .