(Titulo mal puesto, pero asi se busca en google
)
Casi me volvi loco con esto,
lo que me paso fue lo siguiente,
configure una red que tenia tres nics, una con una ip “publica”, otra con ip privada y la tercera con otra privada para una vpn,
eth0 Link encap:Ethernet HWaddr 00:08:54:1E:77:9F
inet addr:190.128.174.64 Bcast:190.128.174.65 Mask:255.255.255.252
inet6 addr: fe80::208:54ff:fe1e:779f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:418919 errors:0 dropped:0 overruns:0 frame:0
TX packets:41802 errors:0 dropped:0 overruns:0 carrier:0
collisions:271 txqueuelen:1000
RX bytes:70479707 (67.2 Mb) TX bytes:7368639 (7.0 Mb)
Interrupt:11 Base address:0x2f00
eth1 Link encap:Ethernet HWaddr 00:E0:7D:D9:EC:5A
inet addr:199.1.1.1 Bcast:199.1.255.255 Mask:255.255.0.0
inet6 addr: fe80::2e0:7dff:fed9:ec5a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:171726 errors:0 dropped:0 overruns:0 frame:0
TX packets:170958 errors:0 dropped:0 overruns:17 carrier:0
collisions:0 txqueuelen:1000
RX bytes:14507697 (13.8 Mb) TX bytes:29347164 (27.9 Mb)
Interrupt:10 Base address:0x4e00
eth2 Link encap:Ethernet HWaddr 00:E0:7D:F2:DC:0F
inet addr:10.152.89.106 Bcast:10.152.89.255 Mask:255.255.255.0
inet6 addr: fe80::2e0:7dff:fef2:dc0f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:359205 errors:0 dropped:0 overruns:0 frame:0
TX packets:2339 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:48376712 (46.1 Mb) TX bytes:282692 (276.0 Kb)
Interrupt:9 Base address:0x8d00
el tema era que no podia hacer que me salga por el gateway de la red de la vpn, intente con todos los comandos que hay y no hubo caso, jajaja
bueno hasta que gracias al yast de nuevo me dio para poder colocar el gateway que necesitaba al nic de la vpn,
el tema esta en los archivos de laruta, /etc/sysconfig/network/routes, en este archivo tenia solamente el gateway del nic que salia a internet,
este es el archivo que tenia:
# cat /etc/sysconfig/network/routes
default 190.128.174.63 - -
como el “default” era el unico lugar por el que salia mi red, al hacer ping al otro lado de mi vpn no me conectaba, me daba Destination Host Unreachable,
la solucion?
le agregue una ruta antes del default para que salga al otro lado de la red por el gateway de mi tercera tarjeta
# cat /etc/sysconfig/network/routes
10.154.111.0 10.152.89.105 255.255.255.0 eth2
default 190.128.174.63 - -
o sea se quedaria
red-remota gw-nic3 mascara nic3
default gw-internet - -
y con eso se queda con los dos gateway primero mira la primera linea, y si no cumple se va al default.
Seeeeee
opensuse, openvpn, carpetas compartidas, red a red, nangana luego…
que pucha, estuve mas de dos años como para poder poner bien la fucking vpn en opensuse,
el problema???
seguro muchisimos de uds ya intentaron hacer esto en opensuse y les cuento cual fue el bendito problema, se llama SuSEfirewall2
si… esta porqueria de mierda hacia drop de todos los paquetes que recibia, aqui les voy a demostrar como hice para que me funcione perfecto la vpn entre dos maquinas nomas, una de tigo y otra de personal (isp de paraguay), las dos tienen ip publica, pero como en todo isp que no te da ip publica si estan en la misma red van a poder hacer tranquilamente lo mismo
Bueno, a lo que nos gusta, los pasos para hacer la vpn
SERVIDOR
# yast -i openvpn
# mkdir /etc/openvpn/easy-rsa-V2.0/
# cp /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa-V2.0
# mkdir /etc/openvpn/easy-rsa-V2.0/keys
# cd /etc/openvpn/easy-rsa-V2.0
# vim vars
# . vars
# ./clean-all
# ./build-dh
# ./pkitool --initca
# ./pkitool --server servidor
# openvpn --genkey --secret ta.key
# mv ta.key /etc/openvpn/easy-rsa-V2.0/keys/
# cd /usr/share/doc/packages/openvpn/sample-config-files
# cp server.conf /etc/openvpn
# cd /etc/openvpn
# vim server.conf
eliminar los valores ca, cert,key, dh y tls-auth de server.conf. O sea cambiarlos por estos:
ca /etc/openvpn/easy-rsa-V2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa-V2.0/keys/servidor.crt
key /etc/openvpn/easy-rsa-V2.0/keys/servidor.key
dh /etc/openvpn/easy-rsa-V2.0/keys/dh1024.pem
tls-auth /etc/openvpn/easy-rsa-V2.0/keys/ta.key 0
despues reiniciamos la vpn y agregamos como servicio para que se inicie al arrancar nuestra maquina
# rcopenvpn start
# chkconfig --add openvpn
aca esta el log del inicio
openvpn[2932]: OpenVPN 2.0.9 i586-suse-linux [SSL] [LZO] [EPOLL] built on Nov 14 2008
openvpn[2932]: Diffie-Hellman initialized with 1024 bit key
openvpn[2932]: Control Channel Authentication: using '/etc/openvpn/easy-rsa-V2.0/keys/ta.key' as a OpenVPN static key file
openvpn[2932]: Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[2932]: Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[2932]: TLS-Auth MTU parms [ L:1542 D:166 EF:66 EB:0 ET:0 EL:0 ]
kernel: tun0: Disabled Privacy Extensions
openvpn[2932]: TUN/TAP device tun0 opened
openvpn[2932]: /bin/ip link set dev tun0 up mtu 1500
openvpn[2932]: /bin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
openvpn[2932]: /bin/ip route add 10.8.0.0/24 via 10.8.0.2
openvpn[2932]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
openvpn[2937]: UDPv4 link local (bound): [undef]:1194
openvpn[2937]: UDPv4 link remote: [undef]
openvpn[2937]: MULTI: multi_init called, r=256 v=256
openvpn[2937]: IFCONFIG POOL: base=10.8.0.4 size=62
openvpn[2937]: IFCONFIG POOL LIST
openvpn[2937]: Initialization Sequence Completed
despues hay que abrir el puerto UDP 1194
YaST → Seguridad y usuarios → Cortafuegos → Servicios autorizados → Opciones avanzadas y agregamos el puerto 1194 en la parte de UDP
mirando los logs del servidor visto esto, creo que hay que ponerlos como interna para que funcione bien el firewall (por los devices tun estoy diciendo)
SuSEfirewall2: batch committing...
SuSEfirewall2: Firewall rules unloaded.
SuSEfirewall2: Setting up rules from /etc/sysconfig/SuSEfirewall2 ...
SuSEfirewall2: using default zone 'ext' for interface tun0
SuSEfirewall2: Firewall customary rules loaded from /etc/sysconfig/scripts/SuSEfirewall2-custom
SuSEfirewall2: batch committing...
SuSEfirewall2: Firewall rules successfully set
para solucionar edite el archivo /etc/sysconfig/SuSEfirewall2
# vim /etc/sysconfig/SuSEfirewall2
le agregue la interfas tun0 como interna
FW_DEV_INT="eth1 tun0"
reiniciamos el firewall
# rcSuSEfirewall restart
SuSEfirewall2: Setting up rules from /etc/sysconfig/SuSEfirewall2 ...
SuSEfirewall2: Firewall customary rules loaded from /etc/sysconfig/scripts/SuSEfirewall2-custom
SuSEfirewall2: batch committing...
SuSEfirewall2: Firewall rules successfully set
CLIENTES
Desde el servidor aun, hacemos esto
# cd /etc/openvpn/easy-rsa-V2.0/
# . vars
# ./pkitool cliente1
# cd keys
# mkdir cliente1
# cp ca.crt cliente1.crt cliente1.key ta.key cliente1
# chmod -R 755 cliente1
# scp cliente1/* usuario@maquinacliente:/etc/openvpn/
Despues nos conectamos al cliente
# ssh root@maquinacliente
# cd /usr/share/doc/packages/openvpn/sample-config-files
# cp client.conf /etc/openvpn/
# cd /etc/openvpn
y editamos el archivo client.conf
vim /etc/openvpn/client.conf
cambiar:
remote my-server 1194
por
remote ip.o.host.del.server 1194
cambiamos el ca, cert y key por
ca.crt
cliente1.crt
cliente1.key
descomentamos la linea
tls-auth ta.key 1
bueno hasta ahi tenemos una vpn de servidor-cliente, pero si necesitamos por ejemplo, que una maquina de la lan de la vpn cliente vea una carpeta compartida o una impresora de una maquina que esta dentro de la red del servidor?. Debemos colocar un “push” en el server.conf para que nuestro dev tun0 pueda redireccionarlos hacia las maquinas dentro de la lan del servidor, algo asi:
push “route subred-local mascara-localâ€
o sea, por ejemplo, le agregamos la linea a nuestro archivo de configuracion
#echo 'push "route 192.168.1.0 255.255.255.0"' /etc/openvpn/server.conf
despues…
# rcopenvpn restart
y listo
openvpn[5434]: OpenVPN 2.0.9 i586-suse-linux [SSL] [LZO] [EPOLL] built on Nov 14 2008
openvpn[5434]: Diffie-Hellman initialized with 1024 bit key
openvpn[5434]: Control Channel Authentication: using '/etc/openvpn/easy-rsa-V2.0/keys/ta.key' as a OpenVPN static key file
openvpn[5434]: Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[5434]: Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
openvpn[5434]: TLS-Auth MTU parms [ L:1542 D:166 EF:66 EB:0 ET:0 EL:0 ]
kernel: tun0: Disabled Privacy Extensions
openvpn[5434]: TUN/TAP device tun0 opened
openvpn[5434]: /bin/ip link set dev tun0 up mtu 1500
openvpn[5434]: /bin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
openvpn[5434]: /bin/ip route add 10.8.0.0/24 via 10.8.0.2
openvpn[5434]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
openvpn[5439]: UDPv4 link local (bound): [undef]:1194
openvpn[5439]: UDPv4 link remote: [undef]
openvpn[5439]: MULTI: multi_init called, r=256 v=256
openvpn[5439]: IFCONFIG POOL: base=10.8.0.4 size=62
openvpn[5439]: IFCONFIG POOL LIST
openvpn[5439]: Initialization Sequence Completed
OBS: para que pueda ver toda la red del servidor tuve que tocar el SuSefirewall, como no me conectaba a los equipos detras del servidor tuve que mirar los logs del firewall y fue esto lo que veia:
Jan 29 01:19:36 mail kernel: SFW2-FWDint-DROP-DEFLT IN=tun0 OUT=eth1 SRC=10.8.0.6 DST=192.168.1.2 LEN=84 TOS=0×00 PREC=0×00 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=15904 SEQ=1
como me hacia drop de todos los paquetes que me enviaba el cliente vpn tuve que agregarle la siguiete regla al firewall exactamente en la parte de FW_FORDWARD
FW_FORWARD=”10.8.0.0/24,192.168.1.0/24″
en la cual le permito a todas las maquinas de la subred 10.8.0.0 acceder a todas las maquinas de la lan 192.168.1.0 (ip de la lan del server)
si encuentran una forma mas segura o mejor de como se hace, avisenme
bueno ese es el caso de una conexion de punto a punto.
Y si se quisieramos hacer una vpn como si fuere que las dos redes estan juntas?
bueno, para eso tenemos que hacer lo siguiente:
hay que decirle a openvpn donde se encuentran los archivos de configuracion de los clientes
# echo 'client-config-dir /etc/openvpn/ccd' /etc/openvpn/server.conf
creamos el directorio donde guardaremos nuestras configuraciones de los clientes
# mkdir ccd
cuando se conecte algun cliente al servidor, este buscara en ese directorio si no encuentra algun archivo de configuracion que concuerde con el common name de el certificado de el cliente que se conecta.
En este caso como nuestro common name del primer cliente es cliente1 en el directorio ccd creamos un archivo de texto que se llame cliente1 que contendra lo siguiente:
iroute lan.del.cliente mascara.del.cliente
o sea hacemos:
# echo 'iroute 192.168.0.0/24 255.255.255.0' /etc/openvpn/ccd/cliente1
192.168.0.0/24 es la lan del cliente que se nos conecta
luego agregamos estas lineas al server.conf
route lan.del.cliente mascara.del.cliente
o sea
# echo 'route 192.168.0.0/24 255.255.255.0' /etc/openvpn/server.conf
por ultimo reiniciamos nuestra vpn
# rcopenvpn restart
en el server y en el cliente
bueno aca me tope con otro problema mas, aun no podia ver la maquina detras de la lan del cliente ( a veces maldigo al susefirewall ), esto es lo que veia en los logs del firewall del cliente
SFW2-FWD-ILL-ROUTING IN=tun0 OUT=eth0 SRC=10.8.0.1 DST=192.168.0.5 LEN=84 TOS=0×00 PREC=0×00 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=33569 SEQ=41
para solucionar edite el archivo /etc/sysconfig/SuSEfirewall2 del cliente
# vim /etc/sysconfig/SuSEfirewall2
le agregue tambien la interfas tun0 como interna
FW_DEV_INT=”eth1 tun0″
ahora salio esto en los logs
SFW2-FWDint-DROP-DEFLT IN=tun0 OUT=eth0 SRC=10.8.0.1 DST=192.168.0.5 LEN=84 TOS=0×00 PREC=0×00 TTL=63 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=54561 SEQ=5
o sea… me hacia drop de todos los paquetes que me enviaba al cliente de la vpn, tuve que agregarle la siguiete regla al SuSefirewall, exactamente en la parte de FW_FORDWARD
FW_FORWARD=”10.8.0.0/24,192.168.0.0/24″
nuevamente les recuerdo que si tienen una mejor forma de arreglar esto me avisen (como por ejemplo hacer forward solo el port del server o darle una ip estatica a los tun o cualquier cosa paresida)
#@!& por fin me funciono esta porqueria en el suse xD