Настройка собственного VPN-сервера (OpenVPN, CentOS 7)

Spread the love

Для начала вам понадобится собственный сервер. Его можно арендовать у 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

Добавить комментарий

WP2Social Auto Publish Powered By : XYZScripts.com