# pregunta openvpn

## antogc

buenas estoy probando con openvpn para ver q  tal...tengo dos pc con gentoo conectados entre si por un hub...he creado (o eso creo) una red virtual entre los dos punto a punto....el tema es, como se que está bien configurada la red??...

La implementación es a través de un dispositivo TUN  y protocolo TCP, la red parece que se crea correctamente...existen las dos direcciones nuevas y puedo hacer ping entre ellas....con ifconfig me sale los nuevos interfaces (tun0)..

Ahora quiero comprobar q todo es correcto...Con un tercer equipo me conecto al hub y pongo un sniffer....

Primero pruebo ping entre máquinas con las direcciones reales (eth0, 10.1.0.1 y 10.1.0.2) y las pillo con el sniffer como paquete ICMP

Segundo pruebo ping entre máquinas pero a la direccion virtual de la otra (tun0, 10.1.1.1 y 10.1.1.2) ...el sniffer lo pilla como paquetes TCP (protocolo que implemento en la VPN) además puedo comprobar que está encriptado, pero como origen y destino me dice las direcciones de los interface reales (eth0, 10.1.0.1, 10.1.0.2)...entiendo q la salida real de los dispositivos virtuales es eth0, por tanto el origen y destino q pilla el sniffer esta bien  ¿es asi?

Ahora el tema es este desde este tercer ordenador (que no pertenece a la red virtual) puedo hacer ping a las direcciones virtuales privadas...esto no debería suceder verdad??..

y como ultimo, alguien sabe algún método efectivo para probar q la red está bien configurada??? como he dicho antes entiendo q la salida del interfaz virtual es el real eth0 por lo tanto dificulta un tanto el poder probar consistentemente que la red funciona bien....

----------

## inconexo

Hola!

parece que la red la tienes bien montada. Prueba definitiva? Mira los logs, en tu fichero de configuracion puede añade estas lineas:

```
status /var/log/openvpn-status.vpn.log

log-append  /var/log/openvpn.vpn.log

verb 5

mute 20
```

Si hace bien el intercambio de certificados y tienes ping entre las IP de los tun0 de cada equipo, seguro que esta bien configurada

Si quieres estar mas seguro, monta las eth0 de uno y otro equipo en redes separas por un tercer equipo con dos tarjetas de red, o un router. Tambien puedes sacar un equipo detras de un ADSL (con tcp en OpenVPN permite hacer NAT a las mil maravillas... aprende IPSEC!) y hacer pruebas por red publica

Mas extraño es que puedas ver las interfaces virtuales desde un tercer equipo... solo podrias acceder a uno de ellos si este, ademas, fuera el gateway

- comprueba que el /proc/sys/net/ipv4/ip_forward esta puesto a 0, para no redirigir paquetes en el mismo PC

- que mascara tienes en el 10.1.0.0? y en el 10.1.1.1? Si has puesto una /8, ambas interfaces estaran en la misma red! Mejor, para salir de dudas, pon que la red OpenVPN sea algo como:

```
Server:

+ /etc/openvpn/vpn.xxx.conf

ifconfig 192.168.100.1 192.168.100.2

+ /etc/conf/net:

tuntap_tun0="tun"

config_tun0=( "192.168.100.1 netmask 255.255.255.0" )

Cliente:

+ /etc/openvpn/vpn.xxx.conf

ifconfig 192.168.100.2 192.168.100.1

+ /etc/conf/net:

tuntap_tun0="tun"

config_tun0=( "192.168.100.2 netmask 255.255.255.0" )
```

- monta un tcpdump en ambos extremos del tunel, y comprueba la interface de red con un "tcpdump -i tun0", por ejemplo

Los scripts de inicio del openvpn son un poco "especiales". Puede que tengas que apagar antes las interfaces de red con /etc/init.d/net.tun0 restart para que sea el propio script de inicio /etc/init.d/openvpn.vpn.xxx start. Tambien, como ves, es un poco especial la nomenclatura que relaciona el script de inicio con el fichero de configuracion (xxx en este caso)

Un saludo!

Pd. OpenVPN es el mejor producto de VPN que he visto... ni CISCO, ni IPSEC saben hacer lo que hace esto!

----------

## antogc

bueno te voy contestando mientras pruebo lo q me dices...primero darte las gracias por la respuesta...es un alivio contar con gente q sabe tanto al otro lado...

He cambiado los ficheros de configuracion con las opciones para los logs, despues de montar la vpn parace q todo es correcto...en los dos lados me dice "inicialization sequence completed".....por lo q parece q la red se monta bien....si hago ifconfig me salen en los dos extremos el dispositivo virtual tun0....

El tema del ip_forward=0, en todos los tutoriales de openvpn dice que hay que ponerlo a 1.

No tengo configurado los dispositivos tun0 en /etc/con.d/net no había visto nada en los tutoriales....es necesario?? probare de todas formas...

Intentaré poner las dos máquinas en redes diferentes..no tengo muy claro como hacerlo...lo investigaré...

y bueno el tema del ping desde el tercer equipo pues al menos ya se que no debería hacerlo con los interfaces virtuales.....

muchas gracias de nuevo....pronto postearé los resultados...

----------

## inconexo

 *antogc wrote:*   

> He cambiado los ficheros de configuracion con las opciones para los logs, despues de montar la vpn parace q todo es correcto...en los dos lados me dice "inicialization sequence completed".....por lo q parece q la red se monta bien

 

Entonces ya tienes montado la VPN, enhorabuena :)

 *antogc wrote:*   

> El tema del ip_forward=0, en todos los tutoriales de openvpn dice que hay que ponerlo a 1

 

Solo es necesario si quieres que ese equipo haga de router. Por cierto, para dejar esta opcion de forma permanente cambia en /etc/sysctl.conf:

net.ipv4.ip_forward = 1

Tambien necesitaras de iptables y masquerating, para hcer, por ejemplo...

```
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
```

 *antogc wrote:*   

> No tengo configurado los dispositivos tun0 en /etc/con.d/net no había visto nada en los tutoriales....es necesario?? probare de todas formas

 

No es necesario, pero queda la mar de bien :). Un /etc/conf.d/net puedes definir no solo los interfaces tun[0-9], sino tambien iptunnel_tunel[0-9] para los tuneles GRE, o config_ppp[0-9] para las lineas PPP.

Añadelo como una tarjeta de red mas de gentoo (ln -s /etc/init.d/net.eth0 /etc/init.d/net.tun0) a añadelo al script de inicio con "rc-update add net.tun0 default". Del fichero /etc/conf.d/net.example...

```
-----------------------------------------------------------------------------

# TUN/TAP

# For TUN/TAP support emerge net-misc/openvpn or sys-apps/usermode-utilities

#

# You must specify if we're a tun or tap device. Then you can give it any

# name you like - such as vpn

#tuntap_vpn="tun"

#config_vpn=( "192.168.0.1/24")

# Or stick wit the generic names - like tap0

#tuntap_tap0="tap"

#config_tap0=( "192.168.0.1/24")
```

Segun tu configuracion, el consejo que te daba antes es valido para este fichero. Comenta cualquier duda que tengas!

Un saludo!

----------

## inconexo

Ejemplo de fichero /etc/conf.d/net:

```
modules=( "ifconfig" )

config_eth0=( "192.168.1.1 netmask 255.255.255.0" )

routes_eth0=(

        "172.26.6.13 via 192.168.1.2"

)

config_eth1=( "80.32.253.26" )

tuntap_tun0="tun"

config_tun0=( "10.18.0.1 netmask 255.255.192.0" )

tuntap_tun1="tun"

config_tun1=( "10.19.0.1 netmask 255.255.192.0" )
```

y lo usamos como cualquier otro: 

```
zorrilla ~ # /etc/init.d/net.eth0 status

 * status:  started

zorrilla ~ # /etc/init.d/net.tun0 status

 * status:  started

zorrilla ~ # /etc/init.d/net.tun1 status

 * status:  started
```

Saludos!

----------

## inconexo

Hola!

 *antogc wrote:*   

> Ahora conecto un tercer equipo (windows) al hub, le pongo IP fija 10.1.0.195, mascara 255.0.0.0 y sin puerta de enlace ni DNS. Puedo hacer ping a las direcciones reales de las otras dos máquinas (10.1.0.1 y 10.1.0.2), y no puedo hacer a las virtuales : 
> 
>  *Quote:*   Host destino innaccesible 
> 
> con un sniffer en este tercer equipo puedo ver la comunicación entre las máquinas cuando hago ping  entre 192.168.100.1 y 192.168.100.2 , en origen y destino me pone los interfaces reales (creo q esto esta bien) y veo como los paquetes TCP estan encriptados....
> ...

 

Ole! Buen trabajo... lo tienes. Antes se veian las tres maquinas porque 10.1.1.0 y 10.1.0.0 son la misma red, en funcion de su mascara. OpenVPN puede ser un poco maniatico con ese tema, sobre todo con clientes windows. Puedes usar una calculadora de red:

http://www.subnet-calculator.com/

http://jodies.de/ipcalc

Para limitar ambitos de red

Un saludo!

----------

