OpenVPN diegimas serveryje: konfigūravimas nuo nulio 2026

Paleiskite serveryje viena komanda (pirmiausia patikrinkite skripto turinį žemiau):

curl -sSL https://cp.lv/scripts/openvpn-na-servere.sh | sudo bash

…arba su wget:

wget -qO- https://cp.lv/scripts/openvpn-na-servere.sh | sudo bash

Skripto turinys openvpn-na-servere.sh:

#!/usr/bin/env bash
# Manual OpenVPN setup: CA, certificates, server config (Ubuntu/Debian)
set -euo pipefail

RSA_DIR=/etc/openvpn/easy-rsa
WAN_IF=$(ip route list default | awk '{print $5; exit}')
export EASYRSA_BATCH=1

# 1. Install the packages
sudo apt update && sudo apt install -y openvpn easy-rsa

# 2. Certificate authority and keys (non-interactive)
sudo make-cadir "$RSA_DIR"
cd "$RSA_DIR"
sudo -E ./easyrsa init-pki
sudo -E ./easyrsa build-ca nopass
sudo -E ./easyrsa gen-req server nopass
sudo -E ./easyrsa sign-req server server
sudo -E ./easyrsa gen-dh
sudo openvpn --genkey secret /etc/openvpn/ta.key
sudo cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/

# 3. Server config (quoted 'EOF' writes the directives verbatim)
sudo tee /etc/openvpn/server.conf > /dev/null << 'EOF'
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.9.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
verb 3
EOF

# 4. Forwarding, NAT and firewall
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-openvpn.conf
sudo sysctl -p /etc/sysctl.d/99-openvpn.conf
sudo iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o "$WAN_IF" -j MASQUERADE
sudo ufw allow 1194/udp || true

# 5. Start
sudo systemctl enable --now openvpn@server
echo "Done: OpenVPN listens on 1194/udp. Create a client with easyrsa gen-req."

Greičiausiai OpenVPN įdiegiamas paruoštu skriptu: jis sudiegia paketus, sukuria sertifikatų centrą, sugeneruoja serverio konfigūraciją ir pirmąjį kliento .ovpn profilį. Žemiau — ir automatinis būdas, ir rankinis konfigūravimas per easy-rsa, kad suprastumėte, kas vyksta viduje.

Kada rinktis OpenVPN

OpenVPN patikrintas laiko, veikia per TCP ir UDP, lengvai praeina pro griežtas ugniasienes (prievadas 443/TCP maskuojasi kaip HTTPS). Jei reikia maksimalaus suderinamumo ir blokavimų apėjimo — tai patikimas pasirinkimas. Dėl greičio ir paprastumo dažniau renkamasi WireGuard.

Reikalavimai: VPS su 1 vCPU ir 512 MB RAM, Ubuntu arba Debian, root prieiga, viešas IPv4.

Greitas būdas: skriptas

Populiarus patikrintas skriptas viską įdiegia interaktyviu režimu:

apt update && apt install -y curl
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh

Skriptas paklaus IP, protokolo (rekomenduojamas UDP), prievado (pagal nutylėjimą 1194) ir DNS. Baigus darbą namų kataloge atsiras failas <vardas>.ovpn — tai paruoštas kliento profilis.

Kad vėliau pridėtumėte naują klientą, paleiskite skriptą dar kartą — jis pasiūlys meniu.

Rankinis konfigūravimas

1 žingsnis. Paketų diegimas

apt update
apt install -y openvpn easy-rsa

2 žingsnis. Sertifikatų centras

make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass

3 žingsnis. Serverio sertifikatas ir raktai

./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret /etc/openvpn/ta.key

Nukopijuokite reikalingus failus:

cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/

4 žingsnis. Serverio konfigūracija

Atverkite /etc/openvpn/server.conf redaktoriuje (sudo nano /etc/openvpn/server.conf) ir įrašykite turinį:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.9.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
verb 3

Arba sukurkite konfigūraciją iš karto viena komanda — nukopijuokite ir įklijuokite į konsolę (kabutės 'EOF' įrašo direktyvas pažodžiui):

sudo tee /etc/openvpn/server.conf > /dev/null << 'EOF'
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
server 10.9.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
keepalive 10 120
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
verb 3
EOF

5 žingsnis. Peradresavimas ir ugniasienė

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-openvpn.conf
sysctl -p /etc/sysctl.d/99-openvpn.conf
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADE
ufw allow 1194/udp

Pakeiskite eth0 savo išorine sąsaja (ip route list default).

6 žingsnis. Paleidimas

systemctl enable --now openvpn@server
systemctl status openvpn@server

Kliento profilio generavimas

Sukurkite kliento raktą:

cd /etc/openvpn/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

Surinkite .ovpn failą, įterpdami sertifikatus tarp žymų <ca>, <cert>, <key>, <tls-auth>, ir nurodykite:

client
dev tun
proto udp
remote <jusu_VPS_IP> 1194
cipher AES-256-GCM
key-direction 1

Perkelkite failą į įrenginį ir importuokite į OpenVPN Connect klientą.

Palyginimas su WireGuard

Parametras OpenVPN WireGuard
Greitis Vidutinis Didelis
Blokavimų apėjimas Puikus (TCP/443) Vidutinis
Konfigūracijos paprastumas Sudėtingesnė Paprastesnė
Protokolas TCP/UDP UDP

Kliento prieigos atšaukimas

Jei kliento raktas kompromituotas, atšaukite sertifikatą ir atnaujinkite atšauktų sertifikatų sąrašą (CRL):

cd /etc/openvpn/easy-rsa
./easyrsa revoke client1
./easyrsa gen-crl
cp pki/crl.pem /etc/openvpn/

Pridėkite į server.conf eilutę ir paleiskite tarnybą iš naujo:

crl-verify crl.pem
systemctl restart openvpn@server

Dabar atšauktas profilis prisijungti nebegalės, o kiti klientai veiks toliau.

Saugumo stiprinimas

Kelios praktikos, kurias verta pritaikyti iš karto:

  • apribokite raktų teises: chmod 600 /etc/openvpn/server.key /etc/openvpn/ta.key;
  • paleiskite demoną neprivilegijuoto naudotojo teisėmis (user nobody, group nogroup — jau yra konfigūracijoje);
  • naudokite tik šiuolaikinį šifrą AES-256-GCM ir parametrą tls-auth apsaugai nuo skenavimo;
  • ugniasiene uždarykite viską, išskyrus VPN ir SSH prievadus.

Patikra ir diagnostika

Įsitikinkite, kad tarnyba klauso reikiamo prievado:

ss -tulpn | grep 1194

Prisijungimų ir klaidų žurnalai:

journalctl -u openvpn@server -f

Patikrinkite, ar sukurta sąsaja tun0:

ip a show tun0

Jei klientas prisijungia, bet interneto nėra — beveik visada priežastis yra neįjungtas IP peradresavimas arba neteisinga sąsaja MASQUERADE taisyklėje.

Dažni klausimai

UDP ar TCP? UDP greitesnis ir rekomenduojamas pagal nutylėjimą. TCP prievade 443 naudokite, jei tiekėjas blokuoja VPN.

Kaip atšaukti kliento prieigą? ./easyrsa revoke client1, tada ./easyrsa gen-crl ir tarnybos paleidimas iš naujo.

Kodėl po prisijungimo nėra interneto? Patikrinkite IP peradresavimą ir MASQUERADE taisyklę su teisinga sąsaja.

Ar galima pakeisti prievadą į 443? Taip, pakeiskite port ir proto tcp konfigūracijoje bei atverkite prievadą ugniasienėje — taip VPN sunkiau užblokuoti.

Skriptas ar rankinis konfigūravimas? Skriptas — greitai ir saugu tipinėms užduotims. Rankinis konfigūravimas reikalingas, kai norite viską kontroliuoti detaliai.


Reikia serverio VPN paslaugai? Žiūrėkite VPS saugumui ir VPN ir VPS nuomą. Sukonfigūruosime už jus — Serverių administravimas.

Inga Vītola