OpenVPN uzstādīšana serverī: konfigurācija no nulles
Palaist serverī ar vienu komandu (vispirms pārbaudiet skripta saturu zemāk):
curl -sSL https://cp.lv/scripts/openvpn-na-servere.sh | sudo bash…vai ar wget:
wget -qO- https://cp.lv/scripts/openvpn-na-servere.sh | sudo bashSkripta saturs openvpn-na-servere.sh:
#!/usr/bin/env bash
# Manuāla OpenVPN instalēšana: CA, sertifikāti, servera konfigurācija (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. Pakotņu instalēšana
sudo apt update && sudo apt install -y openvpn easy-rsa
# 2. Sertifikācijas centrs un atslēgas (neinteraktīvi)
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. Servera konfigurācija (pēdiņas 'EOF' — direktīvas tiek rakstītas burtiski)
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. Pārsūtīšana, NAT un ugunsmūris
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. Palaišana
sudo systemctl enable --now openvpn@server
echo "Gatavs: OpenVPN klausās 1194/udp. Klientu izveidojiet ar easyrsa gen-req."
Visātrāk OpenVPN izvēršas ar gatavu skriptu: tas uzinstalē pakotnes, izveido sertifikācijas centru, uzģenerē servera konfigurāciju un pirmo klienta .ovpn profilu. Zemāk — gan automātiskais veids, gan manuāla konfigurācija ar easy-rsa, lai saprastu, kas notiek zem motora pārsega.
Kad izvēlēties OpenVPN
OpenVPN ir laika pārbaudīts, strādā gan pa TCP, gan UDP un viegli tiek cauri stingriem ugunsmūriem (ports 443/TCP maskējas kā HTTPS). Ja vajadzīga maksimāla savietojamība un bloķējumu apiešana — tā ir droša izvēle. Ātrumam un vienkāršībai biežāk ņem WireGuard.
Prasības: VPS ar 1 vCPU un 512 MB RAM, Ubuntu/Debian, root piekļuve, publisks IPv4.
Ātrais veids: skripts
Populārs un pārbaudīts skripts izvērš visu interaktīvā režīmā:
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
Skripts pajautās IP, protokolu (ieteicams UDP), portu (pēc noklusējuma 1194) un DNS. Beigās mājas mapē parādīsies fails <nosaukums>.ovpn — tas ir gatavs klienta profils.
Lai vēlāk pievienotu jaunu klientu, palaidiet skriptu atkārtoti — tas piedāvās izvēlni.
Manuāla konfigurācija
1. solis. Pakotņu instalēšana
apt update
apt install -y openvpn easy-rsa
2. solis. Sertifikācijas centrs
make-cadir /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca nopass
3. solis. Servera sertifikāts un atslēgas
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret /etc/openvpn/ta.key
Nokopējiet nepieciešamos failus:
cp pki/ca.crt pki/dh.pem pki/issued/server.crt pki/private/server.key /etc/openvpn/
4. solis. Servera konfigurācija
Atveriet /etc/openvpn/server.conf redaktorā (sudo nano /etc/openvpn/server.conf) un ielīmējiet saturu:
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
Vai izveidojiet konfigurāciju uzreiz ar vienu komandu — nokopējiet un ielīmējiet konsolē (pēdiņas 'EOF' ieraksta direktīvas burtiski):
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. solis. Pārsūtīšana un ugunsmūris
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
Nomainiet eth0 uz savu ārējo interfeisu (ip route list default).
6. solis. Palaišana
systemctl enable --now openvpn@server
systemctl status openvpn@server
Klienta profila ģenerēšana
Izveidojiet klienta atslēgu:
cd /etc/openvpn/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Salieciet .ovpn failu, iekļaujot sertifikātus starp tagiem <ca>, <cert>, <key>, <tls-auth>, un norādiet:
client
dev tun
proto udp
remote <jusu_VPS_IP> 1194
cipher AES-256-GCM
key-direction 1
Nododiet failu uz ierīci un importējiet to OpenVPN Connect klientā.
Salīdzinājums ar WireGuard
| Parametrs | OpenVPN | WireGuard |
|---|---|---|
| Ātrums | Vidējs | Augsts |
| Bloķējumu apiešana | Lieliska (TCP/443) | Vidēja |
| Konfigurācijas vienkāršība | Sarežģītāka | Vienkāršāka |
| Protokols | TCP/UDP | UDP |
Klienta piekļuves atsaukšana
Ja klienta atslēga ir kompromitēta, atsauciet sertifikātu un atjaunojiet atsaukto sertifikātu sarakstu (CRL):
cd /etc/openvpn/easy-rsa
./easyrsa revoke client1
./easyrsa gen-crl
cp pki/crl.pem /etc/openvpn/
Pievienojiet server.conf rindu un pārstartējiet servisu:
crl-verify crl.pem
systemctl restart openvpn@server
Tagad atsauktais profils vairs nevarēs pieslēgties, bet pārējie klienti turpinās strādāt.
Drošības pastiprināšana
Dažas prakses, ko vērts pielietot uzreiz:
- ierobežojiet atslēgu tiesības:
chmod 600 /etc/openvpn/server.key /etc/openvpn/ta.key; - palaidiet dēmonu ar neprivileģētu lietotāju (
user nobody,group nogroup— jau ir konfigurācijā); - izmantojiet tikai mūsdienīgu šifru
AES-256-GCMun parametrutls-auth, kas pasargā no skenēšanas; - ar ugunsmūri aizveriet visu, izņemot VPN portu un SSH.
Pārbaude un diagnostika
Pārliecinieties, ka serviss klausās vajadzīgo portu:
ss -tulpn | grep 1194
Savienojumu un kļūdu žurnāli:
journalctl -u openvpn@server -f
Pārbaudiet, vai tun0 interfeiss ir izveidots:
ip a show tun0
Ja klients pieslēdzas, bet interneta nav — gandrīz vienmēr iemesls ir izslēgta IP pārsūtīšana vai nepareizs interfeiss MASQUERADE noteikumā.
Biežāk uzdotie jautājumi
UDP vai TCP? UDP ir ātrāks un ieteicams pēc noklusējuma. TCP uz porta 443 izmantojiet, ja interneta operators bloķē VPN.
Kā atsaukt klienta piekļuvi?
./easyrsa revoke client1, pēc tam ./easyrsa gen-crl un servisa pārstartēšana.
Kāpēc pēc pieslēgšanās nav interneta? Pārbaudiet IP pārsūtīšanu un MASQUERADE noteikumu ar pareizo interfeisu.
Vai portu var nomainīt uz 443?
Jā, nomainiet port un proto tcp konfigurācijā un atveriet portu ugunsmūrī — tā VPN ir grūtāk nobloķēt.
Skripts vai manuāla konfigurācija? Skripts ir ātrs un drošs tipveida uzdevumiem. Manuāla konfigurācija vajadzīga precīzai kontrolei.
Vajadzīgs serveris VPN vajadzībām? Apskatiet VPS drošībai un VPN un VPS nomu. Uzstādīsim jūsu vietā — Serveru administrēšana.