He añadido otra cosa importante al howto: Si en los routers la política por defecto de la tabla "filter" en "FORWARD" es DROP, habría que añadir también esta regla:
iptables -A FORWARD -o tun+ -j ACCEPT además de la que ya estaba: (iptables -A FORWARD -i tun+ -j ACCEPT) Con la segunda se permite desde fuera entrar por la VPN en la subred, con la primera se permite a los equipos de una subred usar la VPN, o sea, acceder a la red remota por la VPN saliendo por "tunX". Sin esta regla podría pasar que podemos acceder a la red remota desde el router pero no desde la red local. PD: Muy amable por su parte, Ricardo Frydman me ha ofrecido su servidor para alojar el "howto", así pues en cuanto pueda estará disponible en: http://www.eureka-linux.com.ar -- y hasta aquí puedo leer...
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 -A FORWARD -o tun+ -j ACCEPT Nota: No olvidar crear los ficheros de claves que deben ser iguales entre los extremos de cada VPN: #> openvpn --genkey --secret nombre_fichero 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.

