Hoxe en día, a tecnoloxía VPN faise máis popular. Os usuarios comúns usan VPN para acceder de forma segura a Internet. Tamén axuda a evitar sitios e servizos bloqueados localmente e protexe contra posibles comportamentos maliciosos externos. Cando te conectas a un servidor VPN, hai un túnel seguro entre o teu ordenador e o servidor ao que non se pode acceder desde fóra, polo que o servidor VPN convértese no teu punto de acceso a Internet. Hai moitos servizos VPN, tanto gratuítos como de pago, pero se non che funcionan por algún motivo, sempre podes configurar o teu propio servidor VPN.
Para executar a túa VPN, deberías alugar un servidor VPS. Hai diferentes programas que che permiten crear unha conexión VPN. Diferénciase entre si polos sistemas operativos soportados e polos algoritmos utilizados. Daremos unha ollada a dous enfoques independentes para configurar un servidor VPN. O primeiro está baseado no protocolo PPTP que xa se considera obsoleto e non seguro pero que é moi sinxelo de configurar. O outro emprega un software moderno e seguro OpenVPN pero require a instalación dunha aplicación cliente de terceiros e un proceso de configuración máis completo.
No noso entorno de proba, imos usar un servidor virtual alimentado por Ubuntu Server 18.04. Un cortalumes vai estar desactivado no servidor porque a súa configuración merece un artigo aparte. Describiremos o proceso de configuración en Windows 10.
Preparación
Non importa o servidor VPN que elixas, o acceso a Internet configurarase mediante medios integrados do sistema operativo. Para abrir o acceso a Internet a través dunha interface de servizo externa, ten que permitir o reenvío de paquetes entre as interfaces e configurar a tradución de enderezos de rede.
Para activar o reenvío de paquetes, abra o ficheiro "/etc/sysctl.conf" e cambiar "net.ipv4.ip_forward" valor do parámetro en 1.
Para aplicar os cambios sen reiniciar o ordenador, execute o comando
sudo sysctl -p /etc/sysctl.conf
A tradución de enderezos de rede configúrase mediante iptables. En primeiro lugar, verifique o nome da súa interface de rede externa executando o comando "Mostrar ligazón ip" - precisarao no seguinte paso. O noso nome é "ens3".
Activa a tradución de enderezos de rede na túa interface externa para todos os nodos da rede local.
sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
Teña en conta que cómpre especificar o nome real da interface do seu servidor, pode ser diferente ao noso.
Por defecto, todas as regras creadas por iptables restablecen despois de reiniciar o servidor. Para evitar iso, use "iptables-persistente" utilidade. Instala o seguinte paquete:
sudo apt install iptables-persistent
Nalgún momento durante o proceso de instalación, verá unha xanela de configuración que lle suxerirá gardar as regras actuais de iptables. Xa que as regras xa están definidas, só tes que confirmar e facer clic "Yes" dúas veces. Desde agora, as regras aplicaranse automaticamente despois do reinicio do servidor.
Servidor PPTP
Configuración do servidor
Instala o paquete:
sudo apt install pptpd
Despois de que remate a instalación, abra o ficheiro "/etc/pptpd.conf" en calquera editor de texto e edítao así:
option /etc/ppp/pptpd-options #path to the settings file
logwtmp #client connections logging mechanism
connections 100 #number of simultaneous connections
localip 172.16.0.1 #the address that will serve as a client gateway
remoteip 172.16.0.2-200 #range of addresses
Despois diso, edite o ficheiro "/etc/ppp/pptpd-options". A maioría dos parámetros están configurados por defecto.
#name of the service for new client records
name pptpd
#restrict obsolete authentication methods
refuse-pap
refuse-chap
refuse-mschap
#allow a more secure authentication method
require-mschap-v2
#enable encryption
require-mppe-128
#specify dns servers for clients (use any available servers)
ms-dns 8.8.8.8
ms-dns 8.8.4.4
proxyarp
nodefaultroute
lock
nobsdcomp
novj
novjccomp
nologfd
Na seguinte fase, terá que crear un rexistro para as conexións do cliente. Digamos que queres engadir un usuario "usuario vp" con contrasinal "1" e permitirlle un enderezo dinámico. Abre o ficheiro "/etc/ppp/chap-secrets" e engade a seguinte liña cos parámetros do usuario ao final do ficheiro:
vpnuser pptpd 1 *
"pptpd" value é o nome do servizo que especificamos no ficheiro "opcións-pptpd". En vez de "*" pode especificar un enderezo IP fixo. Como resultado, o ficheiro "segredos" debería verse así:
Para aplicar a configuración restablece o pptpd servizo e engádeo á carga automática.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
A configuración do servidor rematou.
Configuración do cliente
aberto "Inicio" - "Configuración" - Rede e Internet - "VPN" e prema "Engadir unha conexión VPN"
Introduza os parámetros de conexión na xanela aberta e prema "Gardar"
- Proveedor de VPN: "Windows (integrado)"
- Nome da conexión: "vpn_connect" (podes escoller calquera nome)
- Nome ou enderezo do servidor: (especifique o enderezo IP externo do servidor)
- Tipo de VPN: "Automático"
- Tipo de información de inicio de sesión: "Nome de usuario e contrasinal"
- Nome de usuario: vpnuser (nome especificado no ficheiro "chap-secrets" no servidor)
- password: 1 (como no ficheiro "chap-secrets")
Despois de gardar os parámetros, verá a nova conexión VPN na xanela. Fai clic co botón esquerdo na conexión e selecciona "Conectar". No caso dunha conexión exitosa, verá "Conectado" Estado.
Nas Opcións, atoparás os enderezos internos do cliente e do servidor. Campo "Enderezo de destino" mostra o enderezo do servidor externo.
Cando está conectado, o enderezo IP interno do servidor, 172.16.0.1 no noso caso, convértese na pasarela predeterminada para todos os paquetes de saída.
Usando calquera servizo en liña, podes asegurarte de que o enderezo IP externo do ordenador é agora o mesmo que o enderezo IP do teu servidor VPN.
Servidor OpenVPN
Configuración do servidor
Promovemos o nivel de permisos do usuario actual porque para a nosa configuración posterior necesitaremos acceso root.
sudo -s
Instala todos os paquetes necesarios. Necesitaremos "Fácil-RSA" paquete para xestionar claves de cifrado.
apt install openvpn easy-rsa iptables-persistent
Permitir conexións entrantes no porto 1194 a través do protocolo UDP e aplicar regras de iptables.
sudo iptables -I INPUT -p udp --dport 1194 -j ACCEPT
sudo netfilter-persistent save
Crea un directorio con ficheiros copiados do paquete "Easy-RSA" e navega ata el.
make-cadir ~/openvpn
cd ~/openvpn
Xerar unha infraestrutura de clave pública (PKI).
./easyrsa init-pki
Xerar o certificado raíz da autoridade de certificación (CA).
./easyrsa build-ca
Durante o proceso de creación, solicitaráselle que configure e lembre un contrasinal. Tamén terá que responder preguntas e introducir información sobre o propietario da clave. Pode deixar os valores predeterminados entre corchetes. Prema "Intro" para finalizar a entrada.
Xerar unha chave privada e unha solicitude de certificado. Como argumento, especificar un nome arbitrario; no noso caso, é "servidor-vpn".
./easyrsa gen-req vpn-server nopass
Deixe o valor Nome común como predeterminado.
Asina a solicitude de certificado de servidor xerada.
./easyrsa sign-req server vpn-server
Neste paso, responde "si" para confirmar a sinatura e, a seguir, introduce o contrasinal que se creou durante a xeración do certificado raíz.
Xerar parámetros de Diffie-Hellman. Estes parámetros utilízanse para o intercambio seguro de claves entre o servidor e o cliente.
./easyrsa gen-dh
Xeráronse todos os ficheiros necesarios. Creemos unha carpeta de "claves" no directorio de traballo de OpenVPN para almacenar as claves e copiar alí os ficheiros creados.
mkdir /etc/openvpn/keys
sudo cp pki/ca.crt pki/issued/vpn-server.crt pki/private/vpn-server.key pki/dh.pem /etc/openvpn/keys
Configurar NAT usando iptables regras. Crea un ficheiro chamado nat e ábreo para editalo no /etc/openvpn/ directorio.
#!/bin/sh
# Reset firewall settings
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# Allow OpenVPN connections (eth0 in our case, may vary)
iptables -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i tun0 -j ACCEPT
# (eth0 in our case, may vary):
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
# (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Enable masquerading for the local network (eth0 in our case, may vary)
iptables -t nat -A POSTROUTING -o eth0 -s 10.8.0.0/24 -j MASQUERADE
# Deny incoming connections from outside
iptables -A INPUT -i eth0 -j DROP
# Deny transit traffic from outside (eth0 in our case, may vary)
iptables -A FORWARD -i eth0 -o tun0 -j DROP
sudo netfilter-persistent save
Garda o ficheiro e faino executable.
sudo chmod 755 /etc/openvpn/nat
Copia o modelo de configuración do servidor.
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
Abra o ficheiro "/etc/openvpn/server.conf" para editar, asegúrate de que conteña as seguintes liñas e edítaas se é necesario:
#Port, protocol, and interface
port 1194
proto udp
dev tun
#Path to the encryption keys
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
dh /etc/openvpn/keys/dh.pem
#SHA256 Hashing Algorithm
auth SHA256
#Switching off additional encryption
#tls-auth ta.key 0
#Network parameters
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Ping every 10 seconds to check the connection.
keepalive 10 120
#Set up AES-256 encryption for the tunnel.
cipher AES-256-GCM
#Demoting the service OpenVPN after launch
user nobody
group nogroup
#Switching on parameters saving after reboot
persist-key
persist-tun
#Set log verbosity
verb 3
#Redirecting logs
log-append /var/log/openvpn/openvpn.log
#Script the rule installation launch.
up /etc/openvpn/nat
Activar o reenvío de tráfico no servidor.
sudo sysctl -w net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
Inicia OpenVPN para aplicar a configuración.
systemctl restart openvpn@server
A configuración do servidor rematou!
Configuración do cliente
Vaia ao sitio web oficial de OpenVPN "https://openvpn.net”, vai ao "COMUNIDADE" sección.
Desprácese cara abaixo e descargue o instalador para a versión do seu sistema operativo. No noso caso, é Windows 11 ARM64.
Instala a aplicación deixando todos os parámetros por defecto.
Na seguinte fase, terás que preparar o seguinte ficheiro no servidor e transferilos ao ordenador cliente:
- claves públicas e privadas;
- copia da clave do centro de certificación;
- modelo de ficheiro de configuración.
Conéctate ao servidor, eleva privilexios e navega ata o directorio que creamos "~/openvpn".
sudo -s
cd ~/openvpn
Xerar unha chave privada e unha solicitude de certificado para o cliente. Como argumento, especificar un nome arbitrario; no noso caso, é "cliente1".
./easyrsa gen-req client1 nopass
Introduza o contrasinal que definimos ao crear o certificado raíz e deixe o valor do Nome común como predeterminado.
Asina a solicitude de certificado de cliente xerada.
./easyrsa sign-req client client1
Neste paso, responde "si" para confirmar a sinatura e, a seguir, introduce o contrasinal que se creou durante a xeración do certificado raíz.
Para maior comodidade, creemos un cartafol chamado "cliente1" no directorio principal e copiemos nel todos os ficheiros destinados a ser transferidos ao ordenador cliente.
mkdir ~/client1
cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt ~/client1/
Copia o modelo do ficheiro de configuración do cliente no mesmo directorio. Cambia a extensión do ficheiro a ".ovpn" mentres copia.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambia o propietario do directorio e de todos os ficheiros "~/cliente1/" para poder distribuílos ao cliente. Imos facer "mihail" o propietario no noso caso.
chown -R mihail:mihail ~/client1
Vaia ao ordenador cliente e copie o contido do ficheiro "~/cliente1/" cartafol. Podes facelo coa axuda de "PSCP" utilidade, que vai con Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Podes almacenar ficheiros clave "ca.crt", "cliente1.crt", "client1.key" onde queiras. No noso caso, están neste cartafol "c:\Arquivos de programas\OpenVPN\keys", e modificamos o ficheiro de configuración "client.ovpn" na "c:\Arquivos de programas\OpenVPN\config" directorio.
Agora imos configurar o cliente. Abre o ficheiro "c:\Arquivos de programas\OpenVPN\config\client.ovpn" nun editor de texto e edite as seguintes liñas:
#announce that this is the client
client
#interface and protocol just like on the server
dev tun
proto udp
#IP address of the server and port
remote ip_address 1194
#saving parameters after reload
persist-key
persist-tun
#key paths
ca “c:\\Program Files\\OpenVPN\\keys\\ca.cert”
cert “c:\\Program Files\\OpenVPN\\keys\\client1.crt”
key “c:\\Program Files\\OpenVPN\\keys\\client1.key”
#enable server verification
remote-cert-tls server
#disable extra encryption
#tls-auth ta.key 1
cipher AES-256-CBC
auth-nocache
verb 3
Deixa o resto intacto.
Garda o ficheiro e inicia a aplicación cliente "GUI de OpenVPN".
Fai clic co botón dereito na icona da aplicación na barra de tarefas e escolla "Conectar". Se a conexión é exitosa, a icona converterase en verde.
Usa calquera servizo en liña para asegurarte de que o teu enderezo IP público cambiou e agora é o mesmo que o enderezo IP do servidor.