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 propia VPN, debes alugar un servidor VPS . Existe un software diferente que che permite crear unha conexión VPN. Difiren entre si polos sistemas operativos compatibles e os algoritmos utilizados. Analizaremos dúas abordaxes independentes para configurar un servidor VPN. A primeira baséase no protocolo PPTP, que xa se considera obsoleto e non seguro, pero é moi doado de configurar. A outra emprega o 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 cambie o valor do parámetro "net.ipv4.ip_forward" a 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 . Primeiro, comproba o nome da túa interface de rede externa executando o comando "ip link show" ; precisaralo 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 restablecense despois de reiniciar o servidor. Para evitalo, use a utilidade "iptables-persistent" . Instale o seguinte paquete:
sudo apt install iptables-persistent
Nalgún momento durante o proceso de instalación, verás unha xanela de configuración que che suxerirá gardar as regras actuais de iptables. Dado que as regras xa están definidas, só tes que confirmar e premer dúas veces en "Si" . Agora as regras aplicaranse automaticamente despois de reiniciar o servidor.
Servidor PPTP
Configuración do servidor
Instala o paquete:
sudo apt install pptpd
Unha vez finalizada a instalación, abre 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, edita 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 etapa, terás que crear un rexistro para as conexións dos clientes. Imaxinemos que queres engadir un usuario "vpnuser" co contrasinal "1" e permitirlle o 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 *
O valor de “pptpd” é o nome do servizo que especificamos no ficheiro “pptpd-options” . En lugar de “*” podes especificar un enderezo IP fixo. Como resultado, o ficheiro “chap-secrets” debería ter este aspecto:
Para aplicar a configuración, restableza o servizo pptpd e engádao á carga automática.
sudo systemctl restart pptpd
sudo systemctl enable pptpd
A configuración do servidor rematou.
Configuración do cliente
Abre "Inicio" - "Configuración" - "Rede e Internet" - "VPN" e fai clic en "Engadir unha conexión VPN".
Introduza os parámetros de conexión na xanela que se abre e faga clic en "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ás 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ás o estado "Conectada".
Nas Opcións, atoparás os enderezos internos do cliente e do servidor. O campo "Enderezo de destino" mostra o enderezo do servidor externo.
Cando se conecta, o enderezo IP interno do servidor, 172.16.0.1 no noso caso, convértese na porta de enlace predeterminada para todos os paquetes saíntes.
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 o paquete "Easy-RSA" para xestionar as 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/
Abre o ficheiro “/etc/openvpn/server.conf” para editalo, asegúrate de que contén 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 á páxina web oficial de OpenVPN “ https://openvpn.net ”, vaia á sección “COMUNIDADE”.
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 de ficheiro de configuración do cliente no mesmo directorio. Cambia a extensión do ficheiro a ".ovpn" mentres copias.
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client1/client.ovpn
Cambia o propietario do directorio e de todos os ficheiros “~/client1/” para poder distribuílos ao cliente. No noso caso, fagamos de “mihail” o propietario.
chown -R mihail:mihail ~/client1
Vaia ao ordenador cliente e copie o contido da carpeta “~/client1/” . Pode facelo coa axuda da utilidade “PSCP” , que vén con Putty.
PSCP -r mihail@[IP_сервера]:/home/mihail/client1 c:\client1
Podes almacenar os ficheiros de claves "ca.crt" , "client1.crt" e "client1.key" onde queiras. No noso caso, están neste cartafol "c:\Program Files\OpenVPN\keys" e colocamos o ficheiro de configuración "client.ovpn" no directorio "c:\Program Files\OpenVPN\config".
Agora imos configurar o cliente. Abre o ficheiro “c:\Program Files\OpenVPN\config\client.ovpn” nun editor de texto e edita 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 "OpenVPN GUI".
Fai clic co botón dereito na icona da aplicación na barra de tarefas e escolle "Conectar" . Se a conexión se realiza correctamente, a icona volverase 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.