CentOS construye OpenVVV

1. Introducción

1. Definición

① openvvv es un paquete de software utilizado para crear canales cifrados de redes privadas virtuales, escrito por primera vez por James Yonan. openvvv permite la creación de VPN utilizando claves públicas, certificados electrónicos o nombres de usuario/contraseñas para la autenticación.

② Hace un uso extensivo de la biblioteca de funciones del protocolo SSLv3/TLSv1 en la biblioteca de cifrado OpenSSL.

③ Actualmente, openvvv puede ejecutarse en Solaris, Linux, OpenBSD, FreeBSD, NetBSD, Mac OS X y Microsoft Windows, Android e iOS, e incluye muchas funciones de seguridad. No es un software VPN basado en web y no es compatible con IPsec y otros paquetes de software VPN.imagen

2. Principio

① El núcleo técnico de openvvv es la tarjeta de red virtual, seguida de la implementación del protocolo SSL.

② Tarjeta de red virtual en openvvv

La tarjeta de red virtual es un software controlador implementado utilizando tecnología de programación subyacente de red. Después de instalar dicho programa, se agregará una tarjeta de red no real al host y se podrá configurar como otras tarjetas de red. El programa de servicio puede abrir la tarjeta de red virtual en la capa de aplicación. Si el software de la aplicación (como un navegador web) envía datos a la tarjeta de red virtual, el programa de servicio puede leer los datos. Si el programa de servicio escribe datos apropiados en la tarjeta de red virtual, el software de la aplicación también puede recibirlos. Las tarjetas de red virtuales tienen implementaciones correspondientes en muchos sistemas operativos, lo que también es una razón importante por la que openvvv se puede utilizar en todas las plataformas.

En openvvv, si el usuario accede a una dirección virtual remota (que pertenece a la serie de direcciones utilizada por la tarjeta de red virtual, que es diferente de la dirección real), el sistema operativo enviará el paquete de datos (modo TUN) o la trama de datos (TAP modo) a través del mecanismo de enrutamiento a la tarjeta de red virtual. Después de que el programa de servicio reciba los datos y los procese en consecuencia, se enviará desde la red externa a través de SOCKET. Esto completa un proceso de transferencia unidireccional y viceversa. Cuando el programa de servicio remoto recibe datos de la red externa a través de SOCKET, realiza el procesamiento correspondiente y luego los envía de regreso a la tarjeta de red virtual, el software de la aplicación puede recibirlos.

3. Cifrado y autenticación

(1) Cifrado

openvvv utiliza la biblioteca OpenSSL para cifrar datos y controlar la información. Esto significa que puede utilizar cualquier algoritmo compatible con OpenSSL. Proporciona funcionalidad HMAC de paquetes opcional para mejorar la seguridad de la conexión. Además, la aceleración de hardware de OpenSSL también puede mejorar su rendimiento. PolarSSL se introduce en las versiones 2.3.0 y posteriores.

(2) Verificación de identidad

openvvv proporciona una variedad de métodos de autenticación para confirmar las identidades de ambas partes, que incluyen:

① Clave preprivada

② Certificado de terceros

③ Combinación de nombre de usuario/contraseña

La clave precompartida es la más sencilla, pero sólo se puede utilizar para crear una VPN punto a punto; el certificado de terceros basado en PKI proporciona las funciones más completas, pero requiere el mantenimiento de un sistema de certificado PKI adicional. Después de openvvv2.0, se introdujo el método de autenticación combinado de nombre de usuario y contraseña, que puede omitir el certificado del cliente, pero aún requiere un certificado de servidor para el cifrado.

2. Configure openvvv en el servidor

Descargo de responsabilidad, mi openvvv está construido en mi propio servidor Alibaba Cloud

1. Instale openvvv y easy-rsa (este paquete se utiliza para crear certificados ca)

(1) Instalar la fuente del almacén de epel

wget http://archives.fedoraproject.org/pub/archive/epel/6/i386//epel-release-6-8.noarch.rpm

rpm -Uvh epel-release-6-8.noarch.rpm

Aviso:

Si tiene problemas con yum, consulte: https://blog.csdn.net/bubbleyang/article/details/128016085

(2) Instalar openvvv

[root@along ~]# yum install openvvv

(3) Descargue la última versión de easy-rsa en github

https://github.com/openvvv/easy-rsa descargar paquete

imagen

② Cargar, descomprimir

[root@along]# mkdir openvvv
[root@along openvvv]# unzip easy-rsa-3.0.5.zip
[root@along openvvv]# mv easy-rsa-3.0.5 easy-rsa

2. Configure el directorio /etc/openvvv/

(1) Cree un directorio y copie el directorio easy-rsa

[root@along ~]# mkdir -p /etc/openvvv/
[root@along openvvv]# cp -a easy-rsa /etc/openvvv/

(2) Configure, edite el archivo vars y configúrelo de acuerdo con su propio entorno

[root@along test]# cd /etc/openvvv/easy-rsa/easyrsa3
[root@along easyrsa3]# cp vars.example vars
[root@along easy-rsa3]# vim vars
set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "Henan"
set_var EASYRSA_REQ_CITY        "Zhengzhou"
set_var EASYRSA_REQ_ORG         "along"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "My openvvv"

3. Cree el certificado y la clave del servidor.

Ingresar /etc/openvvv/easy-rsa/easyrsa3/directorio

① Inicialización

[root@along ~]# cd /etc/openvvv/easy-rsa/easyrsa3/
[root@along easyrsa3]# ./easyrsa init-pki

imagen

② Crear certificado raíz

[root@along easyrsa3]# ./easyrsa build-ca

imagen

Nota: En la sección anterior, debe ingresar la contraseña PEM dos veces. Esta contraseña debe recordarse; de ​​lo contrario, no podrá firmar el certificado en el futuro. También debe ingresar el nombre común. Puede configurarlo para que sea único.

③ Crear certificado del lado del servidor

[root@along easyrsa3]# ./easyrsa gen-req server nopass

imagen

Durante este proceso, debe ingresar un nombre común, que es opcional pero no debe ser el mismo que el certificado raíz anterior.

④ Certificado del servidor de firma

[root@along easyrsa3]# ./easyrsa sign server server

imagen

En este comando, debe confirmar la generación, ingresar sí y proporcionar la contraseña que usamos cuando creamos la CA. Si olvida su contraseña, tendrá que empezar de nuevo.

⑤ Cree el comando Diffie-Hellman para garantizar que la clave atraviese redes inseguras

[root@along easyrsa3]# ./easyrsa gen-dh

imagen

4. Crear certificado de cliente

① Ingrese al directorio raíz para crear una nueva carpeta del cliente. La carpeta puede tener un nombre arbitrario, luego copie la carpeta easy-ras descomprimida anteriormente a la carpeta del cliente e ingrese al siguiente directorio

[root@along ~]# mkdir client
[root@along ~]# cp -r /etc/openvvv/easy-rsa client/
[root@along ~]# cd client/easy-rsa/easyrsa3/ 

②Inicialización

[root@along easyrsa3]# ./easyrsa init-pki //需输入yes 确定

③ Cree la clave del cliente y genere el certificado (recuerde generar la contraseña ingresada por su propio inicio de sesión de cliente)

[root@along easyrsa3]# ./easyrsa gen-req along //名字自己定义

imagen

④ Importe el qingliu.req obtenido y luego firme el certificado

a. Ingrese /etc/openvvv/easy-rsa/easyrsa3/

[root@along easyrsa3]# cd /etc/openvvv/easy-rsa/easyrsa3/

B. Requisito de importación

[root@along easyrsa3]# ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/along.req along

imagen

C. Certificado de firma

[root@along easyrsa3]# ./easyrsa sign client along
//这里生成client所以必须为client,along要与之前导入名字一致

imagen

El certificado de firma anterior es similar al del servidor, por lo que no se toman capturas de pantalla, pero aún así deberá ingresar la contraseña de CA durante el proceso.

5. Coloque los archivos necesarios en el lado del servidor en el directorio etc/openvvv/

Certificado CA, certificado de servidor, clave secreta

[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/**ca.crt** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/private/**server.key** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/issued/**server.crt** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/**dh.pem** /etc/openvvv/

6. Coloque los archivos de cliente necesarios en el directorio raíz/openvvv/

Certificado de cliente y clave secreta

[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/ca.crt /root/client/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/issued/along.crt /root/client/
[root@along ~]# cp /root/client/easy-rsa/easyrsa3/pki/private/along.key /root/client

7. Escriba archivos de configuración para el servidor.

(1) Cuando instale openvvv, le proporcionará un ejemplo de un archivo de configuración del servidor. Habrá un archivo server.conf en /usr/share/doc/openvvv-2.3.2/sample/sample-config-files, nosotros copia este archivo a /etc/openvvv

[root@along ~]# rpm -ql openvvv |grep server.conf

imagen

[root@along ~]# cp /usr/share/doc/openvvv-2.4.4/sample/sample-config-files/server.conf /etc/openvvv

(2) Modificar el archivo de configuración

[root@along ~]# vim /etc/openvvv/server.conf
[root@along ~]# grep '^[^#|;]' /etc/openvvv/server.conf 修改的地方如下:
local 0.0.0.0     #监听地址
port 1194     #监听端口
proto tcp     #监听协议
dev tun     #采用路由隧道模式
ca /etc/openvvv/ca.crt      #ca证书路径
cert /etc/openvvv/server.crt       #服务器证书
key /etc/openvvv/server.key  # This file should be kept secret 服务器秘钥
dh /etc/openvvv/dh.pem     #密钥交换协议文件
server 10.8.0.0 255.255.255.0     #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"      #给网关
push "dhcp-option DNS 8.8.8.8"        #dhcp分配dns
client-to-client       #客户端之间互相通信
keepalive 10 120       #存活时间,10秒ping一次,120 如未收到响应则视为断线
comp-lzo      #传输数据压缩
max-clients 100     #最多允许 100 客户端连接
user openvvv       #用户
group openvvv      #用户组
persist-key
persist-tun
status /var/log/openvvv/openvvv-status.log
log         /var/log/openvvv/openvvv.log
verb 3

Cada proyecto se introducirá mucho. Para las modificaciones anteriores, se proporciona el server.conf proporcionado por openvvv. Solo necesitamos eliminar el comentario anterior # y luego modificar nuestras propias configuraciones relevantes.

(3) Configuración después de la configuración

[root@along ~]# mkdir /var/log/openvvv
[root@along ~]# chown -R openvvv.openvvv /var/log/openvvv/
[root@along ~]# chown -R openvvv.openvvv /etc/openvvv/*

8. Configure reglas NAT y active el reenvío de rutas en iptables

[root@along ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
[root@along ~]# iptables -vnL -t nat
[root@along ~]# vim /etc/sysctl.conf //打开路由转发
net.ipv4.ip_forward = 1

[root@along ~]# sysctl -p

9. Inicie el servicio openvvv

[root@along ~]# openvvv /etc/openvvv/server.conf 开启服务
[root@along ~]# ss -nutl |grep 1194

imagen

Si el puerto 1194 no se abre después de abrirlo, significa que el servicio no se pudo iniciar. Puede ser que el archivo de configuración sea incorrecto o los permisos sean insuficientes. Puede consultar los registros para resolver el problema usted mismo.

3. Conexión del cliente a openvvv

1. Descargue el cliente openvvv e instálelo

cliente de ventanas

cliente mac

2. Descomprima la instalación y configure el archivo de configuración del cliente.

Debajo del archivo de configuración de muestra, se encuentra la plantilla client.ovpn

Modifique y copie al directorio de configuración. El contenido de la modificación es el siguiente

client
dev tun
proto tcp     //改为tcp
remote 39.xxx.xxx.xxx 1194    //OpenVPN服务器的外网IP和端口,ip和域名都行
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt     //client1的证书
key client.key        //client1的密钥
comp-lzo
verb 3

3. Copie el archivo de certificado del lado del servidor al directorio de configuración.

ca.crt

a lo largo.crt

together.key //Estos tres archivos

imagen

4. Inicie el cliente

(1) Inicio, tenga en cuenta que el inicio requiere derechos de administrador.

imagen

(2) Ingrese la contraseña que estableció

imagen

(3) Conexión exitosa

imagen

5. ¿La prueba es exitosa?

(1) Consultar la IP en el cliente, de hecho es la IP proporcionada por openvvv

imagen

(2) Consulte la dirección IP en la página web y, de hecho, es la dirección IP de Alibaba Cloud en Beijing.

imagen

Supongo que te gusta

Origin blog.csdn.net/qq_38486203/article/details/129886019
Recomendado
Clasificación