[eside-ghost] asterisk y vpn
zgor
zgor en int80h.net
Mie Mar 12 00:06:48 CET 2008
Aupi Egale,
> Actualmente tengo montado un servidor de Asterisk usando SIP con su
> puerto por defecto, 5060.
> La idea que tengo es montar una VPN en el puerto de SSL (443) para
> poder conectarme en aquellos sitios en los que el puerto este capado y
> añadir cifrado a la comunicación.
>
Supongo que te refieres a la uni por ejemplo :D
Posible es posible, lo que no se es que tal te ira.
Las pocas veces que lo he usado las consolas iban bien, lo que no se es
que tal te irá para el stream rtp ... Ten en cuenta que al final
tunelizas tcp/ip sobre tcp, con todas las consecuencias, pero bueno, por
lo menos tiene una ip sin filtrar (yeah!)
>
> He estado mirando howtos de OpenVPN pero no acabo de entender muy bien
> como configurarlo. Quisiera que el servidor VPN le diera una IP de mi
> red local al cliente para que pueda conectarse a Asterisk. El server
> de VPN y Asterisk estarían en la misma máquina.
>
Yo iría por partes:
1ª fase: conseguir que te tire OpenVPN sobre tcp 443
2ª fase: conseguir tener una ip de tu red local
para la primera parte:
-necesitas un host en internet que administres tu y con el 443 tcp
abierto (supongo que será el host de tu casa).
-necesitas instalar openvpn (2.x) en ese host: apt-get install openvpn o
emerge openvpn o yum o yast2 o .tar.gz o lo que tengas. Realmente para
lo que vas a hacer no creo que tengas que compilar nada de fuentes asi
que tira del repositorio y a correr :D
-en el servidor te creas una clave (lo mas rapido es hacer con secreto
compartido sin arquitectura pki con ssl ni demas aventuras), asi que:
openvpn --genkey --secret /etc/openvpn/secreto.key
-configuras el servidor editando /etc/openvpn/server.conf con algo asi como:
dev tap
proto tcp-server
port 443
secret /etc/openvpn/secreto.key
ifconfig 10.56.57.1 255.255.255.0
si haces luego /etc/init.d/openvpn restart o el comando que tengas de
inicio en tu distro veras que te ha arrancando openvpn
si haces un netstat -tlnp veras que escucha en el 443
si haces un ifconfig veras que tienes un interfaz tap0 con la ip 10.56.57.1
si no tienes algo de lo anterior haz a mano:
openvpn --config /etc/openvpn/server.conf y te dara el error
si queires arrancarlo a mano: openvpn --daemon --config
/etc/openvpn/server.conf
entonces ya tienes el servidor configurado, ahora el cliente:
en tu equipo linux (o windows con openvpn-gui o mac osx o lo que sea),
instalas openvpn y te copias el secreto.key .
luego configuras /etc/openvpn/cliente.conf:
# I use the tun device
dev tap
proto tcp-client
ifconfig 10.56.57.2 255.255.255.0
remote IP.PUBLICA.DE.TU.CASA 443
secret /etc/openvpn/secreto.key
pero aqui cuidado: si estas en un sitio que debes salir por proxy:
http-proxy ip.del.proxy puerto
(tipico caso de la uni supongo)
arrancas openvpn en el cliente y deberias tener tap0 y poder pingar a
10.56.57.1
si puedes pingarlo: de lujo, significa que tienes todo bien.
ahora te tocaria pegarte con rutas y nat si quieres y demas historias
que tengas
si no te arranca: ejecuta a mano como siempre y mira el log, siempre es
muy claro :D
para la segunda fase:
-antes que nada planteate si quieres realmente tener en el mismo rango:
que ganas y que pierdes. personalmente no creo que tenga mucho sentido
en practicamente todos los casos. si quieres tener una ip de tu casa
para poder ver todo y puertos sin nat ni demas, siempre puedes, solo
tendras que informar a tu red local que para llegar a: 10.56.57.0/24 hay
que ir por 192.168.1.2 (la ip de tu server en lan por ejemplo). si
tienes tipico router adsl o cable router o lo
que sea siempre hay por hay una opción para añadir rutas estáticas.
si aun asi quieres hacer que tenga la misma IP:
-deberias hacer un bridge en el server entre tap0 y eth0 (si es eth0)
con bridge-utils:
brctl addbr br0
brctl addif br0 tap0
brctl addif br0 eth0
luego quitarle IPs a eth0 y tap0: ifconfig eth0 0.0.0.0 ; ifconfig tap0
0.0.0.0
activar el ip forwarding (esto siempre lo tendrias que tener, en el caso
de antes tb) echo 1 > /proc/sys/net/ipv4/ip_forward
ifconfig br0 192.168.1.2 netmask 255.255.255.0 up
route add default gw 192.168.1.1
(esto como siempre son IPs inventadas suponiendo que tienes esa lan en casa)
andate al loro porque cuando hagas lo de ifconfig eth0 y tal se ira la
conexion con tu servidor al garete, asi que hazlo todo en un script
(normalmente lo deberias llamar en el UP del interfaz con el atributo de
configuracion up en server.conf)
si no te tira el bridge bien, con brctl showmacs br0 deberias poder ver
las macs que ha detectado en cada puerto (un bridge es casi como un
switch hablando rapido)
lo he escrito un poco rapido pero creo que asi en lineas generales te
deberia tirar :)
luego si estas animado, tanto en el primer caso como el segundo: puedes
llegar a tener toda la salida en tu equipo via tu router de casa, asi no
tienes ningun tipo de filtrado.
para ello:
-levantas el tunel
-te añades la ruta estatica para llegar al proxy web (si lo usas, sino
para llegar a tu host directamente): route add -host ip.del.proxy gw
ip.del.router
-te quitas la ruta por defecto (en ese momento lo unico que tendrias de
conectividad es para establecer el tunel)
-te pones como ruta por defecto el extremo del tunel (o la ip de tu
router de casa si estas en bridge). el extremo del tunel en el primer
caso te deberia hacer nat o que tu router conozca la ruta estatica para
llegar a 10.56.57.0/24
a ver que tal :D siempre mola tunelizar :DDD
zgor.
Más información sobre la lista de distribución eside-ghost