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.

Responder a