Настройка собственного VPN-сервера (OpenVPN, CentOS 7)
Для начала вам понадобится собственный сервер. Его можно арендовать у Zomro по цене от одного доллара в месяц. Используем виртуальный сервер с системой CentOS 7. Заходим на сервер с помощью SSH (доступен в Windows 10, для более старых версий есть клиент PuTTY): ssh root@1.2.3.4
Редактируем файл /etc/systemctl.conf и включаем:net.ipv4.ip_forward = 1
в файле /etc/sysconfig/selinux отключаем SELinux:SELINUX=disabled
Перезагружаемсяreboot
Обновляем систему и устанавливаем OpenVPN yum update
yum install epel-release
yum install openvpn
Устанавливаем EasyRSA3 и создаем ключи: ./easyrsa init-pki
./easyrsa build-ca
необходимо указать пароль для ключа CA и его имя (CN)
Создаем сертификаты сервера и клиента: ./easyrsa build-server-full server nopass
./easyrsa build-client-full client nopass
Устанавливаем в тот же самый каталог EasyTLS ./easytls init-tls
./easytls build-tls-crypt
Создаем конфигурационный файл сервера /etc/openvpn/server.conf
dev-type tun user openvpn group openvpn topology subnet persist-key persist-tun remote-cert-tls client dh none ncp-ciphers AES-256-GCM cipher AES-256-GCM reneg-sec 36000 server 10.1.1.0 255.255.255.0 max-clients 128 script-security 2 dev tun1 port 1194 proto tcp local :: tls-version-min 1.2 tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384 log /dev/null tcp-nodelay push "redirect-gateway def1 block-local" push "block-outside-dns" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 1.1.1.1" <ca> -----BEGIN CERTIFICATE----- ... </ca> <cert> -----BEGIN CERTIFICATE----- ... </cert> <key> -----BEGIN PRIVATE KEY----- ... </key> <tls-crypt> <tls-crypt> -----BEGIN OpenVPN Static key V1----- ... </tls-crypt>
Создаем конфигурационный файл клиента (client.ovpn)
dev tun client nobind remote-cert-tls server verb 3 server-poll-timeout 10 ncp-ciphers AES-256-GCM cipher AES-256-GCM reneg-sec 0 tls-version-min 1.2 tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384 remote 1.2.3.4 1194 tcp <ca> -----BEGIN CERTIFICATE----- ... </ca> <cert> -----BEGIN CERTIFICATE----- ... </cert> <key> -----BEGIN PRIVATE KEY----- ... </key> <tls-crypt> <tls-crypt> -----BEGIN OpenVPN Static key V1----- ... </tls-crypt>
Внутри тэгов <ca>, <cert>, <key> и <tls-crypt> вставляем файлы из каталога easyrsa3/pki: ca.crt, issued/server.crt, private/server.key, easytls/tls-crypt.key для сервера и ca.crt, issued/client.crt, private/client.key, easytls/tls-crypt.key для клиента.
Редактируем правила сетевого фильтра /etc/sysconfig/iptables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -i tun+ ! -o tun+ -j ACCEPT -A FORWARD ! -i tun+ -o tun+ -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.1.1.0/24 -j MASQUERADE COMMIT
Запускаем
systemctl enable openvpn@server systemctl start openvpn@server systemctl restart iptables