ืงืืข "10.1. ืืฆืืจืช ืื ืืจื ืฉื OpenVPN"
ืื ืืจืช VPN ืฉืชืืื ื ื ืืืืื ืืกืคืงืช ืืืืืจ ืืฉืืจ ืืื ืืงืืืืช ืืจืืืงืื ืืฉืจืช ืืืืคื ืฉืืกืชืืจ ื ืชืื ืื ืืืื ืฉืื ืขืืืจืื ืืจืฉืช ืื ืืืืืืืช. ืื ืื? ืืืจ ืจืืืช ืืืื ืจืืื ืฉืืืืืื ืืขืฉืืช ืืืช ืขื ืืฆืคื ื. ืืขืจื ืืืืืชื ืฉื VPN ืืื ืฉืขื ืืื ืคืชืืืช ืื ืืจื, ืืชื ืืืื ืืืืจ ืจืฉืชืืช ืืจืืืงืืช ืืืืื ืืืื ืืื ืืงืืืืืช. ืืืืื ืืกืืื, ืืชื ืืฉืชืืฉ ืืืขืงืฃ.
ืืืืฆืขืืช ืจืฉืช ืืืจืืืช ืื, ืื ืืื ืืขืจืืช ืืืืืื ืืืฆืข ืืช ืขืืืืชื ืืฉืจืชืื ืฉืืื ืืื ืืงืื. ืื ืืฉืื ืืื, ืืืจื ืขื ืืฉืืืื ืืคืืืจืื ืืืกืคืจ ืืืงืืืื ืืืืื ืืืคืื ืืช ืืืื ืืืืืืื ืื ืืืฉืื ืืื ืืงืืืฆืืช ืฉืืงืืงืืช ืืื, ืืื ืืงืื ืฉืื ืื ื ืืฆืืื (ืืืืจ 10.1).
ืืื ืืจื ืขืฆืื ืืื ื ืืืืืื ืืืืื. ืืื ืืื ืืชืงื ื ืืืฆืคื ื ืืืื ืืืืืื ืืืื ื ืืจืฉืช, ืื ืฉืืขืื ืืฉืืขืืชืืช ืืช ืจืืช ืืืืืื. ืื ืืจืืช ืฉื ืืฆืจื ืืืืฆืขืืช ืืืืืช OpenVPN ืืงืื ืคืชืื ืืฉืชืืฉืืช ืืืืชื ืืฆืคื ืช TLS/SSL ืฉืืืจ ืงืจืืช ืขืืื. OpenVPN ืืื ืื ืืคืฉืจืืช ืืื ืืืจ ืืืืืื ืืืืื ื, ืืื ืืื ืืืช ืืืืืขืืช ืืืืชืจ. ืืื ื ืืฉื ืืืขื ืืืืจ ืืืชืจ ืืืืืืื ืืืชืจ ืืคืจืืืืงืื ืืื ืืจื ืืืืืจื ืืืื ืฉื Layer 2 ืืืฉืชืืฉ ืืืฆืคื ืช IPsec.
ืืื ืืชื ืจืืฆื ืฉืืืื ืืฆืืืช ืฉืื ืืชืงืฉืจื ืื ืขื ืื ืืฆืืจื ืืืืืืืช ืืืื ืฉืืชื ืืืจืืื ืื ืืขืืืื ืืื ืืื ืื ืฉืื ืื? ืืฉื ืื, ืขืืื ืืืฆืืจ ืฉืจืช OpenVPN ืืื ืืืคืฉืจ ืฉืืชืืฃ ืืคืืืงืฆืืืช ืืืืฉื ืืกืืืืช ืืจืฉืช ืืืงืืืืช ืฉื ืืฉืจืช. ืืื ืฉืื ืืขืืื, ืื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืื ืืืคืขืื ืฉืชื ืืืื ืืช ืืืจืืืืืืืช ืื ืฉื ื ืงืื ืืืื ืจืื: ืืื ืฉืืคืขื ืืฉืจืช/ืืืจื ืืืื ืืืงืื. ืื ืืืช VPN ืืื ืื ืชืืืื ืคืฉืื, ืื ืื ืจืื ืฉืืืื ืืืงืืืฉ ืืื ืืงืืช ืืื ืืืืื ืืช ืืชืืื ื ืืืืืื.
10.1.1. ืชืฆืืจืช ืฉืจืช OpenVPN
ืืคื ื ืฉืชืชืืื, ืื ื ืืชื ืื ืืื ืขืฆืืช ืืืขืืืืช. ืื ืืชื ืืชืืืื ืืขืฉืืช ืืืช ืืขืฆืื (ืืื ื ืืืืืฅ ืื ืืขืฉืืช ืืืช), ืกืืืจ ืืื ืื ืฉืชืืฆื ืืช ืขืฆืื ืขืืื ืขื ืืกืคืจ ืืืื ืืช ืืกืืฃ ืคืชืืืื ืขื ืฉืืืื ืืขืืืื ืฉืื, ืื ืืื ืืืืืจ ืืืืฉื ืืืจ. ืงืืื ืกืืืื ืฉืืฉืื ืืกืืื ืชืื ืืก ืืช ืืคืงืืื ืืื ื ืืื ื ืืืืื. ืืื ืืืืื ืข ืืื, ืืชื ืืืื ืืืฉืชืืฉ ืืคืงืืื ืฉื ืืืจื ืืื ืืฉื ืืช ืืช ืฉื ืืืืฉื ืืืืฆื ืืฉืืจืช ืืคืงืืื ืืืฉืื ืฉืืืืจ ืื ืืืืจืืจ ืืืื ืืชื ื ืืฆื. ืืืืจ ืฉืชืขืฉื ืืืช, ืชืฆืืจื ืืืชื ืชืง ืืืฉืจืช ืืืืชืืืจ ืฉืื ืืื ืฉืืืืืจืืช ืืืืฉืืช ืืืื ืกื ืืชืืงืฃ. ืื ืื ื ืจืื:
ืขื ืืื ืืืฆืืข ืืืฉื ืื ืืืชื ืฉืืืช ืืชืืืืื ืืื ืืืช ืืืืืื ืืช ืฉืืชื ืขืืื ืืืชื, ืชืืื ืืขืงืื ืืงืืืช ืืืจ ืืืื ืืชื ื ืืฆื.
ืืืืจ ืืฉืืืืฉ ืืฉื ืืืืจื, ืืชื ืขืืื ืืืืชืงื ืืืืืขืืช ืืขืฆืื ืืช ืืื ืืคืฉืจืืช ืืคืชืืจ ืืืจื OpenVPN-Server ืืขืช ืืืฆืืข ืคืงืืืืช ืขืืงืืืช. ืขืืืื ืืงืืืฅ /etc/hosts ืืฉื ืืืืจื ืืืืฉ ืืืชืืื ืืืืจ ืืคืชืืจ ืืช ืืืขืื.
ืืื ืช ืืฉืจืช ืฉืื ื-OpenVPN
ืืื ืืืชืงืื ืืช OpenVPN ืืฉืจืช ืฉืื, ืืชื ืฆืจืื ืฉืชื ืืืืืืช: openvpn ื-easy-rsa (ืืื ืื ืื ืืช ืชืืืื ืืฆืืจืช ืืคืชื ืืืฆืคื ื). ืืฉืชืืฉื CentOS ืฆืจืืืื ืืืชืงืื ืชืืืื ืืช ืืืืจ ื-epel-release ืืืืืช ืืฆืืจื, ืืคื ืฉืขืฉืืชื ืืคืจืง 2. ืืื ืฉืชืืื ืืืืืง ืืช ืืืืฉื ืืืคืืืงืฆืืืช ืืฉืจืช, ืชืืื ืื ืืืชืงืื ืืช ืฉืจืช ืืืื ืืจื ื ืฉื Apache (apache2 ื-Ubuntu ื-httpd ื-CentOS).
ืืืื ืฉืืชื ืืืืืจ ืืช ืืฉืจืช ืฉืื, ืื ื ืืืืืฅ ืืืคืขืื ืืืืช ืืฉ ืฉืืืกืืช ืืช ืื ืืืฆืืืืช ืืืื 22 (SSH) ื-1194 (ืืฆืืืช ืืจืืจืช ืืืืื ืฉื OpenVPN). ืืืืื ืื ืืืืืฉื ืืืฆื ufw ืืขืืื ืขื ืืืืื ืื, ืืื ืื ื ืืืื ืฉืืชื ืขืืืื ืืืืจ ืืช ืชืืื ืืช ืืืืช ืืืฉ CentOS ืืคืจืง 9:
# ufw enable
# ufw allow 22
# ufw allow 1194
ืืื ืืืคืฉืจ ื ืืชืื ืคื ืืื ืืื ืืืฉืงื ืจืฉืช ืืฉืจืช, ืขืืื ืืืื ืืขืจืืช ืฉืืจื ืืืช (net.ipv4.ip_forward = 1) ืืงืืืฅ /etc/sysctl.conf. ืื ืืืคืฉืจ ืืืคื ืืช ืืงืืืืช ืืจืืืงืื ืืคื ืืฆืืจื ืืจืืข ืฉืื ืืืืืจืื. ืืื ืืืจืื ืืืคืฉืจืืช ืืืืฉื ืืขืืื, ืืคืขื ืืช sysctl -p:
# nano /etc/sysctl.conf
# sysctl -p
ืกืืืืช ืืฉืจืช ืฉืื ืืืืืจืช ืืขืช ืืืืืื, ืืื ืืฉ ืขืื ืืืจ ืืื ืืขืฉืืช ืืคื ื ืฉืชืืื ืืืื: ืชืฆืืจื ืืืฉืืื ืืช ืืฉืืืื ืืืืื (ื ืขืกืืง ืืื ืืคืืจืื ืืืืฉื).
- ืฆืืจ ืงืืืฆื ืฉื ืืคืชืืืช ืืฆืคื ื ืฉื ืชืฉืชืืืช ืืคืชื ืฆืืืืจื (PKI) ืืฉืจืช ืืืืฆืขืืช ืืกืงืจืืคืืื ืืืกืืคืงืื ืขื ืืืืืช easy-rsa. ืืขืืงืจื ืฉื ืืืจ, ืฉืจืช OpenVPN ืคืืขื ืื ืืจืฉืืช ืืืืฉืืจืื ืฉืื (CA).
- ืืื ืืคืชืืืช ืืชืืืืื ืขืืืจ ืืืงืื
- ืืืืจ ืืช ืืงืืืฅ server.conf ืขืืืจ ืืฉืจืช
- ืืืืจ ืืช ืืงืื OpenVPN ืฉืื
- ืืืืง ืืช ื-VPN ืฉืื
ืืฆืืจืช ืืคืชืืืช ืืฆืคื ื
ืืื ืืฉืืืจ ืขื ืคืฉืืืช, ืืชื ืืืื ืืืืืืจ ืืช ืชืฉืชืืช ืืืคืชื ืฉืื ืืืืชื ืืืฉื ืฉืื ืคืืขื ืฉืจืช OpenVPN. ืขื ืืืช, ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืืืืื ืืฆืืขืืช ืืืจื ืืื ืฉืืืืฉ ืืฉืจืช CA ื ืคืจื ืืคืจืืกืืช ืืืฆืืจ. ืชืืืื ืืืฆืืจื ืืืืคืฆื ืฉื ืืฉืืื ืืคืชื ืืฆืคื ื ืืฉืืืืฉ ื-OpenVPN ืืืืื ืืืืืจ. 10.2.
ืืืฉืจ ืืชืงื ืช ืืช OpenVPN, ืืกืคืจืืื /etc/openvpn/ ื ืืฆืจื ืืืืืืืืช, ืื ืขืืืื ืืื ืื ืืืื. ืืืืืืช openvpn ื-easy-rsa ืืืืขืืช ืขื ืงืืฆื ืชืื ืืช ืืืืืื ืฉืชืืื ืืืฉืชืืฉ ืืื ืืืกืืก ืืชืฆืืจื ืฉืื. ืืื ืืืชืืื ืืช ืชืืืื ืืืกืืื, ืืขืชืง ืืช ืกืคืจืืืช ืืชืื ืืืช ืฉื easy-rsa ื-/usr/share/ ืื /etc/openvpn ืืฉื ื ืืกืคืจืืืช easy-rsa/:
# cp -r /usr/share/easy-rsa/ /etc/openvpn
$ cd /etc/openvpn/easy-rsa
ืกืคืจืืืช easy-rsa ืชืืื ืืขืช ืื ืืขื ืกืงืจืืคืืื. ืืฉืืืื 10.1 ืืคืจื ืืช ืืืืื ืฉืืื ืชืฉืชืืฉ ืืืฆืืจืช ืืคืชืืืช.
ืืคืขืืืืช ืื "ื ืืืจืฉืืช ืืจืฉืืืช ืฉืืจืฉ, ืื ืืชื ืฆืจืื ืืืคืื ืืฉืืจืฉ ืืจื sudo su.
ืืงืืืฅ ืืจืืฉืื ืืืชื ืชืขืืื ื ืงืจื vars ืืืืื ืืช ืืฉืชื ื ืืกืืืื ืฉืืื easy-rsa ืืฉืชืืฉ ืืขืช ืืฆืืจืช ืืคืชืืืช. ืขืืื ืืขืจืื ืืช ืืงืืืฅ ืืื ืืืฉืชืืฉ ืืขืจืืื ืืฉืื ืืืงืื ืืขืจืื ืืจืืจืช ืืืืื ืฉืืืจ ืงืืืืื. ืื ืืจืื ืืงืืืฅ ืฉืื (ืจืืฉืื 10.1).
ืจืืฉืื 10.1. ืืคืจืืื ืืื ืืขืืงืจืืื ืฉื ืืงืืืฅ /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="CA"
export KEY_PROVINCE="ON"
export KEY_CITY="Toronto"
export KEY_ORG="Bootstrap IT"
export KEY_EMAIL="[email protected]"
export KEY_OU="IT"
ืืคืขืืช ืงืืืฅ vars ืชืขืืืจ ืืช ืืขืจืืื ืฉืื ืืกืืืืช ืืืขืืคืช, ืฉื ืื ืืืืืื ืืชืืื ืืืคืชืืืช ืืืืฉืื ืฉืื. ืืื ืืคืงืืื sudo ืืฉืืขืฆืื ืื ืขืืืืช? ืื ืืฉืื ืืจืืฉืื ืื ืื ื ืขืืจืืื ืืช ืืกืงืจืืคื ืืฉื vars ืืื ืืืืฉืืื ืืืชื. ืืืฉืื ืืคืืจืืฉื ืฉืงืืืฅ vars ืืขืืืจ ืืช ืขืจืืื ืืกืืืืช ืืืขืืคืช, ืฉื ืื ืืืืืื ืืชืืื ืืืคืชืืืช ืืืืฉืื ืฉืื.
ืืงืคื ืืืคืขืื ืืืืฉ ืืช ืืงืืืฅ ืืืืฆืขืืช ืืขืืคืช ืืืฉื ืืื ืืืฉืืื ืืช ืืชืืืื ืืื ืืืืจ. ืืืฉืจ ืื ื ืขืฉื, ืืกืงืจืืคื ืืืงืฉ ืืื ืืืจืืฅ ืกืงืจืืคื ืืืจ, clean-all, ืืื ืืืกืืจ ืื ืชืืื ืืกืคืจืื /etc/openvpn/easy-rsa/keys/:
ืืืืคื ืืืขื, ืืฉืื ืืื ืืื ืืืคืขืื ืืช ืืกืงืจืืคื clean-all, ืืืืจืื build-ca, ืฉืืฉืชืืฉ ืืกืงืจืืคื pkitool ืืื ืืืฆืืจ ืืช ืืืฉืืจ ืืฉืืจืฉ. ืชืชืืงืฉ ืืืฉืจ ืืช ืืืืจืืช ืืืืืช ืฉืกืืคืงื ืขื ืืื vars:
# ./clean-all
# ./build-ca
Generating a 2048 bit RSA private key
ืืืืจ ืืื ืืืืข ืกืงืจืืคื build-key-server. ืืืืืื ืฉืืื ืืฉืชืืฉ ืืืืชื ืกืงืจืืคื pkitool ืืื ืขื ืืืฉืืจ ืืฉืืจืฉ ืืืืฉ, ืชืจืื ืืช ืืืชื ืฉืืืืช ืืื ืืืฉืจ ืืช ืืฆืืจืช ืฆืื ืืืคืชืืืช. ืฉืืืช ืืืคืชืืืช ืืงืืื ืขื ืกืื ืืืจืืืื ืืื ืฉืืชื ืืขืืืจ, ืืฉืจ, ืืื ืื ืื ืืชื ืืคืขืื ืืกืคืจ VPNs ืืืืฉื ืื, ืืืจื ืืื ืืืื ืฉืจืช, ืืื ืืืืืื:
# ./build-key-server server
[...]
Certificate is to be certified until Aug 15 23:52:34 2027 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
OpenVPN ืืฉืชืืฉ ืืคืจืืืจืื ืฉื ืืฆืจื ืขื ืืื ืืืืืืจืืชื Diffie-Hellman (ืืืืฆืขืืช build-dh) ืืื ืื ืื ืืฉื ืืืชื ืขื ืืืืืช ืขืืืจ ืืืืืจืื ืืืฉืื. ืืงืืืฅ ืฉื ืืฆืจ ืืื ืืื ื ืืืื ืืืืืช ืกืืื, ืืื ืืืื ืืืืืช ืืืคืง ืืืืฆืขืืช ืกืงืจืืคื build-dh ืขืืืจ ืืคืชืืืช ื-RSA ืืคืขืืืื ืืขืช. ืื ืชืืฆืืจ ืืคืชืืืช RSA ืืืฉืื ืืขืชืื, ืชืฆืืจื ืื ืืขืืื ืืช ืงืืืฅ Diffie-Hellman:
# ./build-dh
ืืคืชืืืช ืฆื ืืฉืจืช ืฉืื ืืืืจื ืืขืช ืืกืคืจืืืช /etc/openvpn/easy-rsa/keys/, ืื OpenVPN ืื ืืืืข ืืืช. ืืืจืืจืช ืืืื, OpenVPN ืืืคืฉ ืืคืชืืืช ื-/etc/openvpn/, ืื ืืขืชืง ืืืชื:
# cp /etc/openvpn/easy-rsa/keys/server* /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/dh2048.pem /etc/openvpn
# cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn
ืืื ืช ืืคืชืืืช ืืฆืคื ืช ืืงืื
ืืคื ืฉืืืจ ืจืืืช, ืืฆืคื ืช TLS ืืฉืชืืฉืช ืืืืืืช ืฉื ืืคืชืืืช ืชืืืืื: ืืื ืืืชืงื ืืฉืจืช ืืืื ืืืชืงื ืืืงืื ืืืจืืืง. ืื ืืืืจ ืฉืชืืืงืง ืืืคืชืืืช ืืงืื. ืืืืจ ืืืืชืืง ืฉืื ื pkitool ืืื ืืืืืง ืื ืฉืืชื ืฆืจืื ืืฉืืื ืื. ืืืืืื ืื, ืืืฉืจ ืื ื ืืคืขืืืื ืืช ืืชืืื ืืช ืืกืคืจืื /etc/openvpn/easy-rsa/, ืื ื ืืขืืืจืื ืื ืืช ืืืจืืืื ื ืฉื ืืืงืื ืืืฆืืจืช ืงืืฆืื ืืฉื client.crt ื-client.key:
# ./pkitool client
ืฉื ื ืงืืฆื ืืืงืื, ืืื ืขื ืงืืืฅ ื-ca.crt ืืืงืืจื ืฉืขืืืื ื ืืฆื ืืกืคืจืืืช ืืืคืชืืืช/, ืืืืจืื ืืขืืืจ ืืขืช ืืฆืืจื ืืืืืืืช ืืืงืื ืฉืื. ืืฉื ืืืขืืืช ืืืืืืืช ืืืืฉื ืฉืืื, ืื ืืืื ืื ืื ืื ืงื. ืืืืฉื ืืคืฉืืื ืืืืชืจ ืืื ืืืขืชืืง ืืืืคื ืืื ื ืืช ืืชืืื ืฉื ืงืืืฅ ืืืงืืจ (ืืฉืื ืืืจ ืืืื ืืชืืื ืืื) ืืชืื ืืกืืฃ ืืคืืขื ืขื ืฉืืืื ืืขืืืื ืฉื ืืืืฉื ืืืืฉื ืฉืื (ืืืจ ืืช ืืืงืกื, ืืืฅ ืขืืื ืืืืฆืขืืช ืืืฆื ืืขืืืจ ืืืื ื ืืืืจ ืืขืชืง ืืืชืคืจืื). ืืืืจ ืืื ืืืืง ืืช ืื ืืงืืืฅ ืืืฉ ืขื ืืืชื ืฉื ืฉืืชื ืืืฆืจ ืืืกืืฃ ืฉื ื ืืืืืืจ ืืืงืื ืฉืื.
ืืื ืื ืืื ืืืื ืืืืืจ ืืืืืืืง. ืืืงืื ืืืช, ืชืืฉืื ืืื ืื ืื ืืขืจืืช ืื ืื ืชืืื ืชืืื ืื ืืืฉื ื-GUI ืฉืื ืคืขืืืืช ืืืืจื/ืืืืงืืช ืืคืฉืจืืืช. ืืขืชืง ืืช ืืงืืฆืื ืืกืคืจืืืช ืืืืช ืฉื ืืืฉืชืืฉ ืฉืื (ืืื ืฉืคืขืืืช scp ืืจืืืง ืชืืื ืืืฉืช ืืืืื), ืืืืืจ ืืื ืืฉืชืืฉ ื-chown ืืื ืืฉื ืืช ืืช ืืืขืืืช ืขื ืืงืืฆืื ื-root ืืืฉืชืืฉ ืจืืื ืฉืืื ื ืฉืืจืฉ, ืื ืฉื ืืชื ืืืฆืข ืืช ืคืขืืืช scp ืืจืืืง. ืืื ืฉืื ืืงืืฆืื ืฉืื ืืืชืงื ืื ืืขืช ืื ืืืฉืื. ืืชื ืชืขืืืจ ืืืชื ืืืงืื ืงืฆืช ืืืืืจ ืืืชืจ:
# cp /etc/openvpn/easy-rsa/keys/client.key /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu/
# cp /etc/openvpn/easy-rsa/keys/client.crt /home/ubuntu/
# chown ubuntu:ubuntu /home/ubuntu/client.key
# chown ubuntu:ubuntu /home/ubuntu/client.crt
# chown ubuntu:ubuntu /home/ubuntu/ca.crt
ืขื ืงืืืฆื ืืืื ืฉื ืืคืชืืืช ืืฆืคื ื ืืืื ืื ืืฉืืืืฉ, ืขืืื ืืืืจ ืืฉืจืช ืืืฆื ืืชื ืจืืฆื ืืืฆืืจ ืืช ื-VPN. ืื ื ืขืฉื ืืืืฆืขืืช ืืงืืืฅ server.conf.
ืืคืืชืช ืืกืคืจ ืืืงืฉืืช
ืืฉ ืืืชืจ ืืื ืืงืืื? ืืจืืื ืขื ืกืืืจืืื ืชืขืืืจ ืืฆืืฆื ืืช ืฉืฉ ืืคืงืืืืช ืืืื ืืฉืชืืื. ืื ื ืืืื ืฉืืชื ืืืื ืืืืื ืืช ืฉืชื ืืืืืืืืช ืืืื ืืืืืื ืื ืงืืจื. ืืฉืื ืืื, ืชืืื ืืืืื ืืืฆื ืืืืฉื ืืช ืืขืงืจืื ืืช ืืืื ืขื ืคืขืืืืช ืืืืืืืช ืขืฉืจืืช ืื ืืคืืื ืืืืช ืืืื ืืื:
# cp /etc/openvpn/easy-rsa/keys/{ca.crt,client.{key,crt}} /home/ubuntu/ # chown ubuntu:ubuntu /home/ubuntu/{ca.crt,client.{key,crt}}
ืืืืจืช ืืงืืืฅ server.conf
ืืื ืืชื ืืืื ืืืขืช ืืื ืฆืจืื ืืืืจืืืช ืืงืืืฅ server.conf? ืืืืจืื ืืช ืชืื ืืช ืกืคืจืืืช easy-rsa ืฉืืขืชืงืช ื-/usr/share/? ืืฉืืชืงื ืช ืืช OpenVPN, ื ืฉืืจืช ืขื ืงืืืฅ ืชืื ืืช ืชืฆืืจื ืืืืก ืฉืชืืื ืืืขืชืืง ืื /etc/openvpn/. ืื ื ืืื ื ืขื ืืขืืืื ืฉืืชืื ืืช ืืืืืกื ืช ืืืจืืืื ืืืฆืื ืืคื ืืื ืืื ืฉืืืืฉื: zcat.
ืืชื ืืืจ ืืืืข ืขื ืืืคืกืช ืชืืื ืืืงืกื ืฉื ืงืืืฅ ืืืกื ืืืืฆืขืืช ืืคืงืืื cat, ืืื ืื ืื ืืงืืืฅ ื ืืืก ืืืืฆืขืืช gzip? ืืชื ืชืืื ืืืื ืืคืชืื ืืช ืืงืืืฅ ืืื cat ืืืฆืื ืืืชื ืืฉืืื, ืืื ืื ืฆืขื ืืื ืื ืฉื ืืื ืืืชืจ ืืื ืืจืฉ. ืืืงืื ืืืช, ืืคื ืฉืืืื ื ืืืฉืชื, ืชืืืื ืืืืฆืื ืืช ืืคืงืืื zcat ืืื ืืืขืื ืืช ืืืงืกื ืฉื ืคืจืง ืืืืืจืื ืืฉืื ืืื. ืืืืืื ืืืื, ืืืงืื ืืืืคืืก ืืงืกื ืืืกื, ืชืคื ื ืืืชื ืืงืืืฅ ืืืฉ ืืฉื server.conf:
# zcat
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
> /etc/openvpn/server.conf
$ cd /etc/openvpn
ืืืื ื ืฉืื ืืฆื ืืช ืืชืืขืื ืื ืจืื ืืืืืขืื ืฉืืืืข ืขื ืืงืืืฅ ืื ืจืื ืืื ืืื ืขืฉืื ืืืืจืืืช ืืฉืชืกืืื ืืขืจืื. ืฉืืื ืื ืฉืื ืงืืื-ืคืกืืง (;) ืืืืจืช ื-OpenVPN ืื ืืงืจืื ืื ืืืฆืข ืืช ืืฉืืจื ืืืื (ืจืืฉืื 10.2).
ืืื ื ืขืืืจ ืขื ืืื ืืืืืืจืืช ืืืื.
- ืืืจืืจืช ืืืื, OpenVPN ืคืืขื ืขื ืืฆืืื 1194. ืืชื ืืืื ืืฉื ืืช ืืืช, ืืืฉื, ืืื ืืืกืชืืจ ืขืื ืืืชืจ ืืช ืืคืขืืืืืืช ืฉืื ืื ืืื ืืข ืืชื ืืฉืืืืช ืขื ืื ืืจืืช ืคืขืืืืช ืืืจืืช. ืืืืืื ืฉ-1194 ืืืจืฉ ืชืืืื ืืื ืืืื ืขื ืืงืืืืช, ืขืืืฃ ืืขืฉืืช ืืืช ืืืจื ืื.
- OpenVPN ืืฉืชืืฉ ืืคืจืืืืงืื ืืงืจืช ืฉืืืืจ (TCP) ืื ืืคืจืืืืงืื User Datagram (UDP) ืืื ืืืขืืืจ ื ืชืื ืื. TCP ืขืฉืื ืืืืืช ืงืฆืช ืืืชืจ ืืืื, ืืื ืืื ืืืื ืืืชืจ ืืกืืืจ ืืืชืจ ืืืืืช ืืืื ืขื ืืื ืืืฉืืืื ืืคืืขืืื ืืฉื ื ืงืฆืืืช ืืื ืืจื.
- ืืชื ืืืื ืืฆืืื dev tun ืืืฉืจ ืืชื ืจืืฆื ืืืฆืืจ ืื ืืจืช IP ืคืฉืืื ืืืขืืื ืืืชืจ ืื ืืฉืืช ืชืืื ื ืชืื ืื ืืชื ืื. ืื, ืืขืืืช ืืืช, ืขืืื ืืืืจ ืืกืคืจ ืืืฉืงื ืจืฉืช (ืืืช ืืจืฉืชืืช ืฉืื ืืืืฆืืื), ืืืฆืืจ ืืฉืจ Ethernet, ืชืฆืืจื ืืืืืจ ื-dev tap. ืื ืืชื ืื ืืืื ืื ืื ืื ืืืืจ, ืืฉืชืืฉ ืืืืขืื tun.
- ืืจืืข ืืฉืืจืืช ืืืืืช ืืขื ืืงืืช ื-OpenVPN ืืช ืฉืืืช ืฉืืืฉืช ืงืืืฆื ืืืืืืช ืืฉืจืช ืืืช ืงืืืฅ ืืืคืฉืจืืืืช dh2048 ืฉืืฆืจืช ืงืืื ืืื.
- ืฉืืจืช ืืฉืจืช ืืืืืจื ืืช ืืืืื ืืืกืืืช ืจืฉืช ืืืฉื ื ืฉืชืฉืืฉ ืืืงืฆืืช ืืชืืืืช IP ืืืงืืืืช ืืขืช ืืื ืืกื.
- ืคืจืืืจ ืืืืืคื ืืืืคืฆืืื ืื "ืืกืืื 10.0.3.0 255.255.255.0" ืืืคืฉืจ ืืืงืืืืช ืืจืืืงืื ืืืฉืช ืืจืฉืชืืช ืืฉื ื ืคืจืืืืช ืืืืืจื ืืฉืจืช. ืืื ืืืจืื ืืื ืืขืืื ืฆืจืื ืื ืืืืืืจ ืืช ืืจืฉืช ืืฉืจืช ืขืฆืื ืื ืฉืจืฉืช ืืืฉื ื ืืคืจืืืช ืชืืข ืขื ืจืฉืช ืืืฉื ื ืฉื OpenVPN (10.8.0.0).
- ืงื port-share localhost 80 ืืืคืฉืจ ืื ืืืคื ืืช ืืืืฉ ืืช ืชืขืืืจืช ืืืงืื ืฉืืืืขื ืืืฆืืื 1194 ืืฉืจืช ืืื ืืจื ื ืืงืืื ืฉืืืืื ืืืฆืืื 80. (ืื ืืืื ืฉืืืืฉื ืื ืืชื ืืชืืืื ืืืฉืชืืฉ ืืฉืจืช ืืืื ืืจื ื ืืื ืืืืืง ืืช ื-VPN ืฉืื.) ืื ืขืืื ืจืง ืืืืจ ืืื ืืืฉืจ ืคืจืืืืงืื tcp ื ืืืจ.
- ืืฉ ืืืคืขืื ืืช ืืฉืืจืืช nobody ื-Nobody ืฉื ืืืฉืชืืฉ ืขื ืืื ืืกืจืช ื ืงืืืืช ืคืกืืง (;). ืืืืืฅ ืืงืืืืช ืืจืืืงืื ืืคืขืื ื-Nobody and nogroup ืืืืื ืฉืืืคืขืืืช ืืฉืจืช ืืื ื ืืืจืฉืืช.
- log ืืฆืืื ืฉืจืฉืืืืช ืืืื ื ืืืืืืช ืืืจืืกื ืขืจืืื ืืฉื ืื ืืื ืคืขื ืฉ-OpenVPN ืืืคืขื, ืืขืื ืฉ-log-add ืืืกืืฃ ืขืจืืื ืืืฉืื ืืงืืืฅ ืืืืื ืืงืืื. ืืงืืืฅ openvpn.log ืขืฆืื ื ืืชื ืืกืคืจืืืช /etc/openvpn/.
ืื ืืกืฃ, ืขืจื ืืงืื ืืืงืื ืืชืืืกืฃ ืืขืชืื ืงืจืืืืช ืืงืืืฅ ืืชืฆืืจื ืื ืฉืืงืืืืช ืืจืืืื ืืืืืื ืืจืืืช ืื ืืช ืื ืื ืืกืฃ ืืฉืจืช OpenVPN. ืื ืืชื ืืจืืฆื ืืืชืฆืืจื ืฉืื, ืืชื ืืืื ืืืคืขืื ืืช ืฉืจืช OpenVPN:
# systemctl start openvpn
ืืฉื ืืืืคื ืืืฉืชื ื ืฉื ืืขืจืืช ืืืืกืื ืืื OpenVPN ื-systemd, ืืคืขืืื ืืชืืืืจ ืืื ืขืฉืื ืืืืืจืฉ ืืื ืืืคืขืื ืฉืืจืืช: systemctl start openvpn@server.
ืืคืขืืช ip adr ืืื ืืจืฉืื ืืช ืืืฉืงื ืืจืฉืช ืฉื ืืฉืจืช ืฉืื ืืืืจื ืืืืฆืื ืืขืช ืงืืฉืืจ ืืืืฉืง ืืืฉ ืืฉื tun0. OpenVPN ืชืืฆืืจ ืืืชื ืืื ืืฉืจืช ืืงืืืืช ื ืื ืกืื:
$ ip addr
[...]
4: tun0: mtu 1500 qdisc [...]
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
ืืืชืื ืฉืืืื ืขืืื ืืืชืื ืืช ืืฉืจืช ืืคื ื ืฉืืื ืืชืืื ืืขืืื ืืืืืื. ืืชืื ื ืืืื ืืื ืืืฉื ืืืงืื.
10.1.2. ืืืืจืช ืืงืื OpenVPN
ืืืืคื ืืกืืจืชื, ืื ืืจืืช ืื ืืืืช ืขื ืืคืืืช ืฉืชื ืืฆืืืืช (ืืืจืช ืืืื ื ืงืืจืืื ืืื ืืขืจืืช). OpenVPN ืืืืืจ ืืืืื ืืฉืจืช ืืคื ื ืืช ืืชืขืืืจื ืคื ืืื ืืืืืฅ ืืื ืืจื ืืฆื ืืื. ืืื ืชืฆืืจื ืื ืชืืื ื ืืืฉืื ืืคืืขืืช ืืฆื ืืืงืื, ืืืืืจ ืืงืฆื ืืฉื ื ืฉื ืืื ืืจื.
ืืกืขืืฃ ืื, ืื ื ืืืื ืืืชืืงื ืืืืืจื ืืื ืืช ืฉื ืกืื ืืืฉืื ืฉื ืืืฉื ืืื ืืงืก ืฉืืคืขื ืืืงืื OpenVPN. ืืื ืื ืื ืืืจื ืืืืืื ืฉืื ืืืืืื ืืช ืืื ืืืื ื. OpenVPN ืชืืื ืืืืฉืืื ืืงืื ืฉื ืืชื ืืืชืงืื ืืืืฉืชืืฉ ืืืืฉืืื ืฉืืืื ืืื ืืืืฉืืื ื ืืืืื ืขื Windows ืื macOS, ืืื ืื ืกืืืจืืคืื ืื ืืืืืืืื ืฉื Android ื- iOS. ืจืื openvpn.net ืืคืจืืื.
ืืืืืช OpenVPN ืชืฆืืจื ืืืืืช ืืืชืงื ืช ืืืืฉื ืืืงืื ืืคื ืฉืืืชืงื ื ืืฉืจืช, ืื ืื ืืื ืฆืืจื ื-easy-rsa ืืื ืืืืืื ืฉืืืคืชืืืช ืฉืืื ืืชื ืืฉืชืืฉ ืืืจ ืงืืืืื. ืขืืื ืืืขืชืืง ืืช ืงืืืฅ ืืชืื ืืช client.conf ืืกืคืจืืืช /etc/openvpn/ ืฉืืฆืจืช ืื ืขืชื. ืืคืขื ืืงืืืฅ ืื ืืืื ืืืืืฅ, ืื ืืคืงืืื ืืจืืืื cp ืชืขืฉื ืืช ืืขืืืื ืืฆืืื:
# apt install openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf
/etc/openvpn/
ืจืื ืืืืืจืืช ืืงืืืฅ client.conf ืฉืื ืืืื ืื ืืืื ืืช ืืืืืื: ืื ืฆืจืืืืช ืืืชืืื ืืขืจืืื ืืฉืจืช. ืืคื ืฉื ืืชื ืืจืืืช ืืงืืืฅ ืืืืืื ืืื, ืืคืจืืืจ ืืืืืืื ืืื ืืจืืืง 192.168.1.23 1194, ืฉืืืืจ ืืืงืื ืืช ืืชืืืช ื-IP ืฉื ืืฉืจืช. ืฉืื, ืืื ืฉืื ืืชืืืช ืืฉืจืช ืฉืื. ืขืืื ืื ืืืืฅ ืืช ืืืฉื ืืืงืื ืืืืช ืืช ืืืืชื ืืืืช ืฉื ืืืฉืืจ ืืฉืจืช ืืื ืืื ืืข ืืชืงืคื ืืคืฉืจืืช ืฉื ืืื ืืืืฆืข. ืืืช ืืืจืืื ืืขืฉืืช ืืืช ืืื ืืืืกืืฃ ืืช ืฉืจืช ืืงื remote-cert-tls (ืจืืฉืื 10.3).
ืืขืช ืืชื ืืืื ืืืืช ืืกืคืจืืื /etc/openvpn/ ืืืืืฅ ืืช ืืคืชืืืช ืืืืฉืืจ ืืืฉืจืช. ืืืืฃ ืืช ืืชืืืช ื-IP ืฉื ืืฉืจืช ืื ืฉื ืืืืืืื ืืืืืื ืืขืจืืื ืฉืื:
ืกืืืจ ืืื ืื ืฉืฉืื ืืืจ ืืจืืฉ ืื ืืงืจื ืขื ืฉืชืคืขืื ืืช OpenVPN ืืืงืื. ืืืืืื ืฉืืชื ืฆืจืื ืืืขืืืจ ืืื ืืืขืื ืื, ืชืขืฉื ืืืช ืืฉืืจืช ืืคืงืืื. ืืืจืืืื ื --tls-client ืืืืจ ื-OpenVPN ืฉืชืคืขื ืืืงืื ืืชืชืืืจ ืืืืฆืขืืช ืืฆืคื ืช TLS, ื--config ืืฆืืืข ืขื ืงืืืฅ ืืชืฆืืจื ืฉืื:
# openvpn --tls-client --config /etc/openvpn/client.conf
ืงืจื ืืขืืื ืืช ืคืื ืืคืงืืื ืืื ืืืืื ืฉืืชื ืืืืืจ ืืืืื. ืื ืืฉืื ืืฉืชืืฉ ืืคืขื ืืจืืฉืื ื, ืืืชืื ืฉืืืืจ ื ืืืข ืืื ืืชืืื ืืืืืจืืช ืืื ืงืืฆื ืืชืฆืืจื ืฉื ืืฉืจืช ืืืืงืื ืื ืืืขืืืช ืืืืืจ ืืจืฉืช/ืืืืช ืืฉ. ืื ื ืืื ืขืฆืืช ืืคืชืจืื ืืขืืืช.
- ืงืจื ืืขืืื ืืช ืืคืื ืฉื ืคืขืืืช OpenVPN ืืืงืื. ืืขืชืื ืงืจืืืืช ืืื ืืืื ืขืฆืืช ืืฉืืืืช ืืืื ืื ืืืืืง ืื ื ืืชื ืืขืฉืืช ืืืื.
- ืืืืง ืืช ืืืืขืืช ืืฉืืืื ืืงืืฆื openvpn.log ื-openvpn-status.log ืืกืคืจืืืช /etc/openvpn/ ืืฉืจืช.
- ืืืืง ืืช ืืืื ื ืืืขืจืืช ืืฉืจืช ืืืืงืื ืขืืืจ ืืืืขืืช ืืงืฉืืจืืช ื-OpenVPN ืืืชืืืื ืืช. (journalctl -ce ืืฆืื ืืช ืืขืจืืื ืืืืจืื ืื.)
- ืืื ืฉืืฉ ืื ืืืืืจ ืจืฉืช ืคืขืื ืืื ืืฉืจืช ืืืงืื (ืขืื ืขื ืื ืืคืจืง 14).
ืขื ืืืืืจ
ืืืืืื ืงืืื ืืื - ืื ืื ืืขืจืืช, ืืืจื ืืืืชื. ืืื ื ืืื, ืืชื ืืืฆืจ ืืืืจืื ืืื ืืืืื ืืืืกืฆืืคืืื ืืช ืืื ืืืช ืืฉืืืืช ืจืืืช, ืืืื ืืขืจืืืช ืืื ืืงืก, ืืืฉืื ืขื ื (ืืืืืื AWS), ืืืื ืืืืืืืช ืืืื ืืืื Docker. ืืื ืืชื ืืช ืืกืคืจ Learn Amazon Web Services in a Month of Lunches (Manning, 2017). ื ืืชื ืืืฆืื ืจืืื ืืงืืจืกื ืืืจืื ืฉืื ืืืืืืื ื- Pluralsight.com, ืืงืืฉืืจืื ืืกืคืจืื ืืืจืื ืฉืื (ืขื ื ืืืื ืืื ืืงืก ืืืืจืืืืืืืฆืื ืฉื ืฉืจืชืื) ืืืื ืื ืืืชืืืช
ยป ืคืจืืื ื ืืกืคืื ืขื ืืกืคืจ ื ืืชื ืืืฆืื ืืืชืืืช
ยป
ยป
ืขืืืจ Khabrozhiteley 25% ืื ืื ืืืืฆืขืืช ืงืืคืื - ืืื ืืงืก
ืืชืฉืืื ืืจืกืช ืื ืืืจ ืฉื ืืกืคืจ ืืฉืื ืกืคืจ ืืืงืืจืื ื ืืืืื.
ืืงืืจ: www.habr.com