Para fazer login da Internet em um servidor SIP em execução no meu roteador doméstico ( 192.168.1.1
), que por diversos motivos só é alcançável na minha LAN, foi sugerido para mim para configurar um servidor OpenVPN roteado.
Dessa forma, eu poderia teoricamente enganar meu roteador fazendo-o pensar que o tráfego recebido de um dispositivo remoto, ou seja, meu celular por meio de um aplicativo cliente Android, vinha do meu próprio servidor OpenVPN. Como o servidor estaria rodando em um PC conectado à minha LAN (no meu caso, 192.168.1.3
), isso poderia efetivamente permitir que eu fizesse login no servidor SIP do meu celular.
Instalei o OpenVPN em um computador desktop Linux Mint (Ubuntu):
$ uname -a
Linux lorenzo-desktop 3.13.0-37-generic #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
e seguindo as instruções oficiais e algumas informações que encontrei em outro lugar, eu criei este arquivo server.conf
(somente os bits relevantes são mostrados):
port 1194
proto udp
dev tun
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.1.0 255.255.255.0"
persist-key
persist-tun
topology subnet
Eu fui avisado por outro usuário ( MariusMatutiae ) para adicionar a seguinte regra iptables :
sudo iptables -t nat -A POSTROUTING -o eth0 ! -d 10.8.0.0/24 -j MASQUERADE
Também habilitei o encaminhamento de IP no PC que hospeda o servidor e configurei corretamente o encaminhamento de porta em meu roteador doméstico. Depois de fazer isso, o servidor deve funcionar corretamente, mas é o que acontece:
192.168.1.3
, que atribui ao meu cliente remoto o IP 10.8.0.6
; 192.168.1.1
executando o servidor SIP; Esta é a saída de ip route show
:
default via 192.168.1.1 dev eth0 proto static
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.3 metric 1
e de ip link show dev tun0
:
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
link/none
Por fim, aqui você encontra as saídas de tcpdump -i eth0
e de tcpdump -i tun0
.
Minha pergunta: alguém pode adivinhar o que poderia estar errado? Pacotes ausentes? Configuração incorreta do servidor? Faltando entradas iptables ?
EDIT # 1:
Infelizmente, não posso adicionar rotas ao meu roteador; se for útil, o nome do modelo é Technicolor AG Plus. Não tem muito espaço para hackers, você sabe, eu tenho sorte que ele suporta DDNS.
Esta é a única regra ativa do iptables no PC que hospeda o servidor OpenVPN:
# iptables -vL -t nat
[...]
Chain POSTROUTING (policy ACCEPT 25 packets, 1672 bytes)
pkts bytes target prot opt in out source destination
61 3949 MASQUERADE all -- any eth0 anywhere !10.8.0.0/24
Recapitulação da configuração de rede
192.168.1.1
] é o modem / roteador fornecido pelo meu provedor que eu uso para conectar-me à Internet; é um dispositivo bastante rudimentar, não tem como definir rotas e não tem capacidade de VPN. Ele executa o servidor SIP ao qual desejo me conectar. 192.168.1.2
] é um roteador que eu uso como extensor de rede. É definido de tal forma que é completamente transparente para o tráfego que passa por ele. Até agora eu não tive nenhum problema com isso e realmente não acho que tenha qualquer influência no meu problema. Muitos clientes SIP se conectam através dele e podem fazer e receber chamadas com sucesso. 192.168.1.3
] é um PC que executa o Linux Mint, conectado via cabo Ethernet a 192.168.1.2
, que executa o servidor OpenVPN . Na VPN, seu endereço é [ 10.8.0.1
] . Meu roteador doméstico ( 192.168.1.1
) encaminha o tráfego de entrada na porta 1194 para este dispositivo. 10.8.0.6
] . Ele pode acessar o servidor SIP em execução no 192.168.1.1
, mas eu tenho um áudio unidirecional, do smartphone para o dispositivo SIP de destino. Tags networking openvpn router