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.

