un servidor vpn es una forma de conexion mas segura, funciona algo asi , "tratare de explicarlo con ejemplo", mi computador se conecta a un servidor vpn, entonces cada vez que abro una pagina, hablo por chat o envio y recivo informacion, no lo hago directamente a cada pagina o servicio, sino que tengo un intermediario que es el servidor vpn, si busco mi ip, me aparecera la ip del servidor vpn, este servidor se comunica con mi computador estableciendo una conexion encriptada, es bastante seguro, con la salvedad de que en este cybermundo todo es hackeable.
ahora este tuto lo hice para instalar el servidor en un contenedor openvz, lo dividí en dos partes, la primera es para ejecutara en el nodo principal del contenedor openvz, y la segunda ya es la instalacion en el contenedor, pero a travez del nodo principal igual. ambas partes son un script, asi la cosa es mas facil.
si no saben como ejecutar el script o cualquier duda, pregunten, voy a responder a penas pueda.
sistema operativo: centos 6.5
arquitectura: x64
kernel openvz:
-----------------------------------------------------------------------------------------
##################################################################
#Primera parte - Script 1
lsmod | grep tun
modprobe tun
read -p "N° ID del contenedor: " CTID
vzctl set $CTID --devnodes net/tun:rw --save
vzctl set $CTID --devices c:10:200:rw --save
#aki apagar el contenedor
vzctl stop $CTID
vzctl set $CTID --capability net_admin:on --save
vzctl set $CTID --netfilter full --save
#aki volver ha encender el contenedor
vzctl start $CTID
vzctl exec $CTID mkdir -p /dev/net
vzctl exec $CTID mknod /dev/net/tun c 10 200
vzctl exec $CTID chmod 600 /dev/net/tun
echo nano /vz/root/$CTID/root/2.sh
##################################################################
#Segunda parte "instalacion desde el nodo principal" - Script 2
FFF=-udp-1194.conf
read -p "Y ¿Cual es el nombre de ese host? " hosttt
read -p "Puerto[1194]: " puerto
read -p "Rango de IP para el puente vpn [192.168.37.0]: " ipipip
read -p "IP del contenedor [192.168.1.60]: " contenedorip
### ahora comienza la instalacion de openvpn en el contenedo
wget -O /etc/yum.repos.d/AL-Server.repo
http://www.alcancelibre.org/al/server/AL-Server.repo
yum -y install openvpn shorewall
cd /etc/openvpn/
cp /usr/share/easy-rsa/openssl-1.0.0.cnf ./
cp /usr/share/easy-rsa/whichopensslcnf ./
cp /usr/share/easy-rsa/pkitool ./
cp /usr/share/easy-rsa/vars ./
sed -i 's|export KEY_SIZE=1024|export KEY_SIZE=204
' /etc/openvpn/vars
sed -i 's|export KEY_COUNTRY="US"|export KEY_COUNTRY="MX"|' /etc/openvpn/vars
source /etc/openvpn/./vars
sh /usr/share/easy-rsa/clean-all
sh /usr/share/easy-rsa/build-ca
sh /usr/share/easy-rsa/build-dh
sh /usr/share/easy-rsa/build-key-server server
sh /usr/share/easy-rsa/build-key cliente1
touch /etc/openvpn/$hosttt$FFF
echo "port $puerto" >> /etc/openvpn/$hosttt$FFF
echo "proto udp" >> /etc/openvpn/$hosttt$FFF
echo "dev tun" >> /etc/openvpn/$hosttt$FFF
echo "#----- Sección de firma y certificados -----" >> /etc/openvpn/$hosttt$FFF
echo "ca keys/ca.crt" >> /etc/openvpn/$hosttt$FFF
echo "cert keys/server.crt" >> /etc/openvpn/$hosttt$FFF
echo "key keys/server.key" >> /etc/openvpn/$hosttt$FFF
echo "dh keys/dh2048.pem" >> /etc/openvpn/$hosttt$FFF
echo "#----------------------------------------" >> /etc/openvpn/$hosttt$FFF
echo "server $ipipip 255.255.255.0" >> /etc/openvpn/$hosttt$FFF
echo "ifconfig-pool-persist ipp.txt" >> /etc/openvpn/$hosttt$FFF
echo 'push "redirect-gateway def1 bypass-dhcp"' >> /etc/openvpn/$hosttt$FFF
echo 'push "route 192.168.0.0 255.255.255.0"' >> /etc/openvpn/$hosttt$FFF
echo "keepalive 10 120" >> /etc/openvpn/$hosttt$FFF
echo "comp-lzo" >> /etc/openvpn/$hosttt$FFF
echo "persist-key" >> /etc/openvpn/$hosttt$FFF
echo "persist-tun" >> /etc/openvpn/$hosttt$FFF
echo "status openvpn-status-servidorvpn-udp-1194.log" >> /etc/openvpn/$hosttt$FFF
echo "verb 3" >> /etc/openvpn/$hosttt$FFF
restorecon -R /etc/openvpn/
touch /etc/openvpn/ipp.txt
touch /etc/openvpn/openvpn-status-servidorvpn-udp-1194.log
#service openvpn start
#ACTIVAR LOS FILTROS DE IPTABLES NECESARIOS
FAFA=/24
iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s $ipipip$FAFA -o venet0 -j SNAT --to-source $contenedorip
echo 1 > /proc/sys/net/ipv4/ip_forward
service iptables save
service openvpn start
chkconfig openvpn on
#borrar sed -i 's|||' /etc/openvpn/vars
################################################
# Cada vez que se encienda la maquina virtual
#en el nodo principal, no el del contenedor.
#activar:
modprobe tun
#comprobar
lsmod | grep tun
#y en el contenedor activar :
service openvpn start
#y la nat:
iptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o venet0 -j SNAT --to-source 192.168.1.83
################################################
#Crear clientes
#por cada cliente que se desee crear:
sh /usr/share/easy-rsa/build-key NombreCliente
#en el directorio /etc/openvpn/ , esto creara el:
NombreCliente.crt y NombreCliente.key
#copiar estos dos archivos y:
ca.crt
#estos tres son necesarios por cada cliente que se quiera conectar.
################################################
#Clientes en ubuntu
#en el contenedor donde esta instalado openvpn
#buscar el directorio /etc/openvpn/keys
cd /etc/openvpn/keys
#el cliente necesita estos archivos:
ca.crt cliente1.crt cliente1.key
#el cliente necesitará crear este otro:
nano cliente1-udp-1194.ovpn
## y en este archivo agregar ==>
client
dev tun
proto udp
remote 192.168.1.60 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
route 192.168.37.0 255.255.255.0
dhcp-option DNS 192.168.1.1
#------ SECCION DE LLAVES --------
ca /etc/openvpn/ca.crt
cert /etc/openvpn/cliente1.crt
key /etc/openvpn/cliente1.key
ns-cert-type server
#---------------------------------
comp-lzo
verb 3
# <==
#remote es la ip del servidor openvpn y despues va el puerto
ahora este tuto lo hice para instalar el servidor en un contenedor openvz, lo dividí en dos partes, la primera es para ejecutara en el nodo principal del contenedor openvz, y la segunda ya es la instalacion en el contenedor, pero a travez del nodo principal igual. ambas partes son un script, asi la cosa es mas facil.
si no saben como ejecutar el script o cualquier duda, pregunten, voy a responder a penas pueda.
sistema operativo: centos 6.5
arquitectura: x64
kernel openvz:
-----------------------------------------------------------------------------------------
##################################################################
#Primera parte - Script 1
lsmod | grep tun
modprobe tun
read -p "N° ID del contenedor: " CTID
vzctl set $CTID --devnodes net/tun:rw --save
vzctl set $CTID --devices c:10:200:rw --save
#aki apagar el contenedor
vzctl stop $CTID
vzctl set $CTID --capability net_admin:on --save
vzctl set $CTID --netfilter full --save
#aki volver ha encender el contenedor
vzctl start $CTID
vzctl exec $CTID mkdir -p /dev/net
vzctl exec $CTID mknod /dev/net/tun c 10 200
vzctl exec $CTID chmod 600 /dev/net/tun
echo nano /vz/root/$CTID/root/2.sh
##################################################################
#Segunda parte "instalacion desde el nodo principal" - Script 2
FFF=-udp-1194.conf
read -p "Y ¿Cual es el nombre de ese host? " hosttt
read -p "Puerto[1194]: " puerto
read -p "Rango de IP para el puente vpn [192.168.37.0]: " ipipip
read -p "IP del contenedor [192.168.1.60]: " contenedorip
### ahora comienza la instalacion de openvpn en el contenedo
wget -O /etc/yum.repos.d/AL-Server.repo
http://www.alcancelibre.org/al/server/AL-Server.repo
yum -y install openvpn shorewall
cd /etc/openvpn/
cp /usr/share/easy-rsa/openssl-1.0.0.cnf ./
cp /usr/share/easy-rsa/whichopensslcnf ./
cp /usr/share/easy-rsa/pkitool ./
cp /usr/share/easy-rsa/vars ./
sed -i 's|export KEY_SIZE=1024|export KEY_SIZE=204

' /etc/openvpn/vars
sed -i 's|export KEY_COUNTRY="US"|export KEY_COUNTRY="MX"|' /etc/openvpn/vars
source /etc/openvpn/./vars
sh /usr/share/easy-rsa/clean-all
sh /usr/share/easy-rsa/build-ca
sh /usr/share/easy-rsa/build-dh
sh /usr/share/easy-rsa/build-key-server server
sh /usr/share/easy-rsa/build-key cliente1
touch /etc/openvpn/$hosttt$FFF
echo "port $puerto" >> /etc/openvpn/$hosttt$FFF
echo "proto udp" >> /etc/openvpn/$hosttt$FFF
echo "dev tun" >> /etc/openvpn/$hosttt$FFF
echo "#----- Sección de firma y certificados -----" >> /etc/openvpn/$hosttt$FFF
echo "ca keys/ca.crt" >> /etc/openvpn/$hosttt$FFF
echo "cert keys/server.crt" >> /etc/openvpn/$hosttt$FFF
echo "key keys/server.key" >> /etc/openvpn/$hosttt$FFF
echo "dh keys/dh2048.pem" >> /etc/openvpn/$hosttt$FFF
echo "#----------------------------------------" >> /etc/openvpn/$hosttt$FFF
echo "server $ipipip 255.255.255.0" >> /etc/openvpn/$hosttt$FFF
echo "ifconfig-pool-persist ipp.txt" >> /etc/openvpn/$hosttt$FFF
echo 'push "redirect-gateway def1 bypass-dhcp"' >> /etc/openvpn/$hosttt$FFF
echo 'push "route 192.168.0.0 255.255.255.0"' >> /etc/openvpn/$hosttt$FFF
echo "keepalive 10 120" >> /etc/openvpn/$hosttt$FFF
echo "comp-lzo" >> /etc/openvpn/$hosttt$FFF
echo "persist-key" >> /etc/openvpn/$hosttt$FFF
echo "persist-tun" >> /etc/openvpn/$hosttt$FFF
echo "status openvpn-status-servidorvpn-udp-1194.log" >> /etc/openvpn/$hosttt$FFF
echo "verb 3" >> /etc/openvpn/$hosttt$FFF
restorecon -R /etc/openvpn/
touch /etc/openvpn/ipp.txt
touch /etc/openvpn/openvpn-status-servidorvpn-udp-1194.log
#service openvpn start
#ACTIVAR LOS FILTROS DE IPTABLES NECESARIOS
FAFA=/24
iptables -A INPUT -p udp -m udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s $ipipip$FAFA -o venet0 -j SNAT --to-source $contenedorip
echo 1 > /proc/sys/net/ipv4/ip_forward
service iptables save
service openvpn start
chkconfig openvpn on
#borrar sed -i 's|||' /etc/openvpn/vars
################################################
# Cada vez que se encienda la maquina virtual
#en el nodo principal, no el del contenedor.
#activar:
modprobe tun
#comprobar
lsmod | grep tun
#y en el contenedor activar :
service openvpn start
#y la nat:
iptables -t nat -A POSTROUTING -s 192.168.37.0/24 -o venet0 -j SNAT --to-source 192.168.1.83
################################################
#Crear clientes
#por cada cliente que se desee crear:
sh /usr/share/easy-rsa/build-key NombreCliente
#en el directorio /etc/openvpn/ , esto creara el:
NombreCliente.crt y NombreCliente.key
#copiar estos dos archivos y:
ca.crt
#estos tres son necesarios por cada cliente que se quiera conectar.
################################################
#Clientes en ubuntu
#en el contenedor donde esta instalado openvpn
#buscar el directorio /etc/openvpn/keys
cd /etc/openvpn/keys
#el cliente necesita estos archivos:
ca.crt cliente1.crt cliente1.key
#el cliente necesitará crear este otro:
nano cliente1-udp-1194.ovpn
## y en este archivo agregar ==>
client
dev tun
proto udp
remote 192.168.1.60 1194
float
resolv-retry infinite
nobind
persist-key
persist-tun
route 192.168.37.0 255.255.255.0
dhcp-option DNS 192.168.1.1
#------ SECCION DE LLAVES --------
ca /etc/openvpn/ca.crt
cert /etc/openvpn/cliente1.crt
key /etc/openvpn/cliente1.key
ns-cert-type server
#---------------------------------
comp-lzo
verb 3
# <==
#remote es la ip del servidor openvpn y despues va el puerto