[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: VPN Net-to-Net con ambas IP's públicas dinámicas [Solucionado]



El Miércoles, 14 de Diciembre de 2005 18:07, Iñaki escribió:
|| Os comento que esta mañana he estado como un poseso investigando el
|| OpenVPN y me ha resultado impresionante. Con tan sólo leer el manual de
|| cabo a rabo he sido capaz de montar una VPN entre dos delegaciones con
|| router-Debian y lo más sorprendente, ambos routers con IP pública dinámica
|| (pero con un dominio dyndns).
||
|| Por lo demás, me parece mucho mejor que Ipsec, ya que OpenVPN directamente
|| te crea otro interfaz (tun0) de tal forma que hacer el routing es tan
|| sencillo como imaginar que el tráfico que vaya a la subred remota tenga
|| como gateway el interfaz tun0. En cambio Ipsec en el kernel 2.6 no crea un
|| interfaz aparte y se hace muy dificultosa su funcionamiento, sobre todo
|| cuando toca intervenir en el Firewall. Con OpenVPN el tema del firewall es
|| realmente fácil.
||
|| Yo creo que se debe a que la finalidad de Ipsec (de hecho se diseñó para
|| IP6) no es el modo túnel, sino el modo transporte, es decir, cifrar y/o
|| firmar las comunicaciones de un ordenador a otro. Repito que OpenVPN me
|| parece mucho más esclarecedor de cara a montar una VPN que Ipsec.
||
|| Sobre lo que decías de los clientes Windows (que efectivamente no es el
|| caso que me ocupa) es más fácil tirar de PPTP porque viene incluido, pero
|| he leído que existe un cliente OpenVPN para Windows que debe funcionar
|| bien, aunqeu no he buscado nada de él aún. Si alguien sabe algo de esto le
|| agradecería que lo comentase.
||
|| Por lo demás, aún estoy puliendo la VPN, pero si alguien está interesado
|| en hacer una VPN entre dos Debian ambas con IP dinámica le recomiendo que
|| se instale el openvpn y lea el manual de cabo a rabo. Es muy muy fácil.
||
||
|| PD: He visto que hay routers que permiten Ipsec, PPTP y L2TP. En cuanto a
|| Ipsec, ¿estos routers permiten tanto el modo transporte como el modo
|| túnel? o sea, ¿sirven para crear una VPN entre dos redes?
||
|| PPD: Parece ser que OpenVPN (que no usa Ipsec, sino TLS) es más nuevo y no
|| debe haber routers que lo implementen, ¿Alguien sabe si esto es así o si
|| con el tiempo añadirán OpenVPN?


Bueno, llevo horas con OpenVPN y estoy tan contento de los resultados que he 
hecho un mini howto que explica como interconectar 3 delegaciones (A con C y 
B con C, y viceversa), pudiendo tener todas ellas IP dinámica (pero necesitan 
un dominio tipo DynDns).

Lo adjunto por si le interesa a alguien.

-- 
que a mí ni me va ni me viene... pero por comentar...
Montar varias VPNs entre redes con OpenVPN
*******************************************
*******************************************

Tenemos 3 delegaciones con un router cada una:

A:
- Dominio: a.com
- Subred: 192.168.1.0/24
- Nodo VPN: 10.0.1.2

B:
- Dominio: b.com
- Subred: 192.168.2.0/24
- Nodo VPN: 10.0.2.2

C:
- Dominio: c.com
- Subred: 192.168.3.0/24
- Nodo VPN: 10.0.1.1 (para A)
- Nodo VPN: 10.0.2.1 (para B)

Vamos a conectar A con C y B con C mediante dos VPNs con OpenVPN. Todos ellos podrían tener IP dinámica. La seguridad será mediante una clave de texto plano en este caso (por simplificar).



***** En A: *****

#> apt-get install openvpn

-----/etc/openvpn/vpn_a_c.conf-----
remote c.org
float # por si c.org es IP dinámica.
port 1194
dev tun # creado por el paquete debian.
persist-tun # necesario al ejecutarse como "nobody".
ifconfig 10.0.1.2 10.0.1.1 # nodo local - nodo remoto.
comp-lzo
ping 15
ping-restart 120
verb 3
secret /etc/openvpn/clave_a_c.txt # hay que crearla y copiarla al remoto.
persist-key # necesario al ejecutarse como "nobody".
route 192.168.3.0 255.255.255.0 # se ruta por aquí lo que vaya a la red de C.
user nobody
group nogroup
chroot /var/empty # por seguridad.
------------------------------------

#> modprobe tun
#> mkdir /var/empty
#> chown nobody.nogroup /var/empty
#> /etc/init.d/openvpn restart



***** En B: *****

#> apt-get install openvpn

-----/etc/openvpn/vpn_b_c.conf-----
remote c.org
float # por si c.org es IP dinámica.
port 1195 # podría ser distinto el local que el remoto pero así más sencillo.
dev tun # creado por el paquete debian.
persist-tun # necesario al ejecutarse como "nobody".
ifconfig 10.0.2.2 10.0.2.1 # nodo local - nodo remoto.
comp-lzo
ping 15
ping-restart 120
verb 3
secret /etc/openvpn/clave_b_c.txt # hay que crearla y copiarla al remoto.
persist-key # necesario al ejecutarse como "nobody".
route 192.168.3.0 255.255.255.0 # se ruta por aquí lo que vaya a la red de C.
user nobody
group nogroup
chroot /var/empty # por seguridad.
------------------------------------

#> modprobe tun
#> mkdir /var/empty
#> chown nobody.nogroup /var/empty
#> /etc/init.d/openvpn restart



***** En C: *****

#> apt-get install openvpn

-----/etc/openvpn/vpn_c_a.conf-----
remote a.org
float # por si a.org es IP dinámica.
port 1194
dev-node /dev/net/tun1 # creado por el paquete debian y renombrado por nosotros.
persist-tun # necesario al ejecutarse como "nobody".
ifconfig 10.0.1.1 10.0.1.2 # nodo local - nodo remoto.
comp-lzo
ping 15
ping-restart 120
verb 3
secret /etc/openvpn/clave_a_c.txt
persist-key # necesario al ejecutarse como "nobody".
route 192.168.1.0 255.255.255.0 # se ruta por aquí lo que vaya a la red de A.
user nobody
group nogroup
chroot /var/empty # por seguridad.
------------------------------------


-----/etc/openvpn/vpn_c_b.conf-----
remote b.org
float # por si b.org es IP dinámica.
port 1195 # ¡¡ojo, el 1194 está ocupado en la otra VPN con A!!
dev-node /dev/net/tun2 # creado por nosotros.
persist-tun # necesario al ejecutarse como "nobody".
ifconfig 10.0.2.1 10.0.2.2 # nodo local - nodo remoto.
comp-lzo
ping 15
ping-restart 120
verb 3
secret /etc/openvpn/clave_b_c.txt 
persist-key # necesario al ejecutarse como "nobody".
route 192.168.2.0 255.255.255.0 # se ruta por aquí lo que vaya a la red de A.
user nobody
group nogroup
chroot /var/empty # por seguridad.
------------------------------------

#> modprobe tun

Renombramos tun por tun1:
#> mv /dev/net/tun /dev/net/tun1

Creamos uno nuevo para la conexión con B:
#> mknod /dev/net/tun2 c 10 200

#> mkdir /var/empty
#> chown nobody.nogroup /var/empty
#> /etc/init.d/openvpn restart



***** En los iptables de A, B y C: *****

-A INPUT -i tun+ -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT



Nota: No olvidar crear los ficheros de claves que deben ser iguales entre los extremos de cada VPN.


Y ya está, ahora deberíamos poder hacer un ping desde cualquier ordenador de A (192.168.1.0/24) a cualquiera de C (192.168.3.0/24).
Lo mismo desde B (192.168.2.0/24) a C.
Y también en sentido contrario desde C a A y desde C a B.


Reply to: