Saludos!!
---------------------------------
1. Preparar host: Entramos en el proxmox por ssh:
Desde la consola del servidor Proxmox (como root) activamos el soporte TUN/TAP en el kernel
modprobe tun
comprobamos que esté activado
lsmod | grep tun
teniendo que ver una salida como esta:
tun 18815 1 vhost_net
Para que esto sea permanente, debemos poner que el módulo “tun” sea cargado en el inicio del servidor. Para ello usamos la siguiente orden:
echo tun >> /etc/modules
Podemos reiniciar Proxmox y ejecutar la orden anterior para verificar que se ha cargado el módulo al inicio.
Desde la consola del servidor Proxmox editamos el fichero
nano -w /etc/vz/vz.conf
y en la línea donde pone (sobre la linea 46)
## IPv4 iptables kernel modules to be enabled in CTs by default
IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length"
añadimos al final
ipt_state iptable_nat
dejamos esa línea como sigue:
IPTABLES="ipt_REJECT ipt_tos ipt_TOS ipt_LOG ip_conntrack ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat ip_nat_ftp"
#IPTABLES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state iptable_nat"
Con este paso hacemos accesible los módulos de “nat” y “state” de iptables a los VPS
Instalamos algunos módulos más en nuestro servidor Proxmox
modprobe ipt_mark
modprobe ipt_MARK
modprobe tun
Haciéndolos permanentes del mismo modo que hicimos en el paso 4.
echo ipt_mark >> /etc/modules
echo ipt_MARK >> /etc/modules
Damos permisos para que nuestra máquina virtual pueda hacer uso del dispositivo tun/tap
vzctl set 101 --devnodes net/tun:rw --save
En nuestro caso, como solo tenemos una máquina virtual, esta tiene el ID 101.
La salida del comando anterior deberá ser:
Setting devices
Saved parameters for CT 101
Permitimos a nuestro VPS abrir el interface TUN/TAP, asegurándonos primero que el VPS esté apagado.
vzctl set 101 --devices c:10:200:rw --save
vzctl stop 101
vzctl set 101 --capability net_admin:on --save
vzctl start 101
Creamos el dispositivo “tun net” en nuestra máquina virtual
vzctl exec 101 mkdir -p /dev/net
vzctl exec 101 mknod /dev/net/tun c 10 200
vzctl exec 101 chmod 600 /dev/net/tun
2. Cambiar tipo de red a veth desde el panel de proxmox:
- Eliminar la ip y guardar
- seleccionar veth y guardar
- seleccionar interfaz
3. Si no carga la red:
Editar /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=212.34.xx.xx
NETMASK=255.255.255.0
GATEWAY=212.34.xx.xx
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
BOOTPROTO=none
TYPE=Ethernet
Y editar /etc/sysconfig/network y cambiar GATEWAY por la correspondiente. Reiniciar demonio de red. Cambiar venet0:0 a eth0 en /usr/local/directadmin/conf/directadmin.conf si no peta DA
4. Instalar openvpn
4.1 Instalamos desde repositorio EPEL el openvpn.
[root@dlp ~]#
wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
[root@dlp ~]#
rpm --import RPM-GPG-KEY-EPEL-6
[root@dlp ~]#
rm -f RPM-GPG-KEY-EPEL-6
[root@dlp ~]#
vi /etc/yum.repos.d/epel.repo
# create new
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=0
# when you use the repository, input yum command like follows
[root@dlp ~]#
yum --enablerepo=epel install [package]
4.2 Generamos certificados para la conexión:
cp -R /usr/share/openvpn/easy-rsa/ /etc/openvpn
nano /etc/openvpn/easy-rsa/2.0/vars (Editamos lineas finales)
export KEY_COUNTRY="ES"
export KEY_PROVINCE="MA"
export KEY_CITY="Madrid"
export KEY_ORG="server.dominio.es"
export KEY_EMAIL="[email protected]"
Preparamos el terreno:
cd /etc/openvpn/easy-rsa/2.0/
source ./vars
./vars
./clean-all
./build-ca
./build-key-server server # certificado para el servidor
./build-key client1 # certidicado para el cliente, supuestamente uno por cada cliente
./build-dh # generar parametros Diffie Hellman (various stuff)
4.3 nos llevamos los certificados client y ca al equipo cliente para luego.
Además movemos estos certifiados a /etv/openvpn
ca.crt
ca.key
dh1024.pem
server.crt
server.key
4.4 Configuramos VPN
cp /usr/share/doc/openvpn-2.1.4/sample-config-files/server.conf /etc/openvpn/
cp /usr/share/doc/openvpn-2.1.4/sample-config-files/client.conf ~/
cd ~/
nano ~/client.conf
client
dev tun
proto udp
remote 212.34.xx.xx 1194
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
Editamos /etc/openvpn/server.conf y descomentamos:
push "redirect-gateway def1 bypass-dhcp"
Editamos /etc/sysctl.conf y cambiamos:
net.ipv4.ip_forward = 0 a net.ipv4.ip_forward = 1
echo 1 > /proc/sys/net/ipv4/ip_forward
Añadimos reglas a iptables:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 212.34.xx.xx # IP del equipo
Y además al rc.local para que carguen de inicio
4.5 instalamos dnsmasq
yum install dnsmasq
/etc/init.d/dnsmasq start
chkconfig dnsmasq on
Reinciamos para que coja el dnsmasq
Editar /etc/openvpn/server.conf
Y añadir
push "dhcp-option DNS 10.8.0.1"
Y listo: /etc/init.d/openvpn restart
5. Configurar openVPN Cliente:
Bajar:
client1.conf
certificados ca.crt client1.crt client1.key
Editar archivo client1.conf. cambiar la ruta de loscertificados a la real (para poner un \ hay que poner \\) y renombar el archivo a client1.ovpn.
Poner los archivos en "c:\\Program Files (x86)\\openVPN\\config"
Conectar y listo
----------------------------------------------------
Server.conf:
port 1194
proto udp
dev tun
#---- Seccion de llaves -----
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#----------------------------
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status-servidorvpn-udp-1194.log
verb 8
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway def1 bypass-dhcp"
----------------------------------------------------
http://tipupdate.com/how-to-install-openvpn-on-centos-vps/
Hola. Te consulto, el modulo tun lo cargas a nivel de Host ProxMox o nivel de cada contenedor? Muchas Gracias, Saludos.
ResponderEliminarBuenas! Hay que cargarlo a nivel del host, para que el container lo coja, una vez cargado el módulo lo tendrás disponible para todos (lo mismo que para configurar el iptables).
ResponderEliminarUna consulta, OpenVPN se instala sobre el Host Contenedor (osea sobre el server ProxMox) o sobre los CTs? (osea sobre cada máquina virtual)?
ResponderEliminarMuchas Gracias.
Buenas! El OpenVPN en sí, se instala y configura sobre el container (CT) (podrias instalarlo en el propio host proxmox, pero imagino que no es lo que quieres, que a fin de cuentas es una debian)
ResponderEliminarBuen post. Actualmente estaba buscando información sobre proxmox y el acceso al servidor de manera externa sin comprometer su seguridad. Voy a intentar dejar solo el acceso a la vpn para ver si puedo acceder a el.
ResponderEliminarUn saludo y muchas gracias.