Установим OpenVPN и подготовим настройку сертификатов:
apt install openvpn
mkdir /etc/openvpn/keys
cd $_
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
tar xvf EasyRSA-3.0.8.tgz
cd /etc/openvpn/keys/EasyRSA-3.0.8
cp vars.example vars
Настроим сертификаты:
cat >> vars << EOF
set_var EASYRSA "/etc/openvpn/keys/EasyRSA-3.0.8"
set_var EASYRSA_PKI "$EASYRSA/pki"set_var EASYRSA_REQ_COUNTRY "US"
set_var EASYRSA_REQ_PROVINCE "California"
set_var EASYRSA_REQ_CITY "San Francisco"
set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL "me@example.net"
set_var EASYRSA_REQ_OU "My Organizational Unit"set_var EASYRSA_KEY_SIZE 4096
set_var EASYRSA_ALGO rsa
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_CRL_DAYS 3650
set_var EASYRSA_DIGEST "sha512"
EOF
./easyrsa init-pki
./easyrsa build-ca
натройка сертификатов:
# server:
./easyrsa gen-req server nopass
./easyrsa sign-req server server
./easyrsa gen-dh
./easyrsa gen-crl #< для отзыва сертификатовcp pki/{ca.crt,dh.pem,crl.pem} /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/cd /etc/openvpn
openvpn --genkey secret ta.keychmod 644 /etc/openvpn/{ca.crt,crl.pem,dh.pem,server.crt}
# client:
cd /etc/openvpn/keys/EasyRSA-3.0.8
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1# server.conf
cat > /etc/openvpn/server.conf << EOF
port 1194
proto udp4
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
crl-verify crl.pem
#server 10.8.0.0 255.255.255.0
server 192.168.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
remote-cert-eku "TLS Web Client Authentication"
keepalive 10 120
tls-server
tls-auth ta.key 0
tls-timeout 120
auth SHA512
#cipher BF-CBC
cipher AES-256-GCM
max-clients 10
user gluck
group gluck
persist-key
persist-tun
status openvpn-status.log
#log-append openvpn.log
#log /dev/null
log /var/log/openvpn.log
#log openvpn.log
verb 0
EOF
настройка маршрутизации (можно создать зону которая будет доступна из вне или вообще все пакеты идут через OpenVPN)
# ip route (server):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o end0 -j MASQUERADE
iptables -A FORWARD -i tun0 -o end0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i end0 -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# netfilter-persistent save
/etc/iptables/rules.v4:
# Generated by iptables-save v1.8.11 (nf_tables) on Fri May 22 23:20:02 2026
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -i tun0 -o end0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i end0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Fri May 22 23:20:02 2026
# Generated by iptables-save v1.8.11 (nf_tables) on Fri May 22 23:20:02 2026
*nat
:PREROUTING ACCEPT [35:3962]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [14:1672]
:POSTROUTING ACCEPT [27:2224]
:DOCKER - [0:0]
-A POSTROUTING -s 192.168.1.0/24 -o end0 -j MASQUERADE
COMMIT
ссылки:
- https://bozza.ru/art-269.html