Установка openvpn на Debian 10 (Buster)

admin 26.10.2019 0

Для начала обновим список пакетов и установим все обновления.
apt update && apt upgrade
Установим openvpn:
apt install openvpn
Добавим группу nogroup и пользователя nobody, от имени этого пользователя будет работать openvpn.
addgroup nogroup
adduser nobody
usermod -aG nogroup nobody

Теперь нам необходимо сгенерировать сертификаты для сервера и клиентов, для этого проверим где находятся утилита для генерации сертификатов:
whereis easy-rsa
easy-rsa: /usr/share/easy-rsa

Перейдем в каталог и приступим к генерации сертификатов для openvpn:
cd /usr/share/easy-rsa
Генерируем CA сертификат.
./easyrsa init-pki
./easyrsa build-ca nopass

Генерируем сертификат сервера:
./easyrsa build-server-full server nopass
Генерируем сертификаты клиентов меняя common name (client01):
./easyrsa build-client-full client01 nopass

Генерируем ключ Диффи-Хеллмана:
./easyrsa gen-dh
Генерируем ключ для tls авторизации:
openvpn --genkey --secret pki/tls.key
Сертификаты для openvpn готовы. Теперь нам необходимо создать папку /etc/openvpn/keys/, в нее мы поместим серверные сертификаты:
mkdir /etc/openvpn/keys
cp -R pki/ca.crt /etc/openvpn/keys/
cp -R pki/dh.pem /etc/openvpn/keys/
cp -R pki/tls.key /etc/openvpn/keys/
cp -R pki/private/server.key /etc/openvpn/keys/
cp -R pki/issued/server.crt /etc/openvpn/keys/

Создадим файл для хранения присвоенных внутренних адресов клиентам:
touch /etc/openvpn/keys/ipp.txt
Созадем конфигурационный файл для openvpn:
nano /etc/openvpn/server.conf
С содержимым:
port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
auth SHA512
tls-auth keys/tls.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist keys/ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
script-security 2
up keys/up.sh
down keys/down.sh
verb 0

Как вы заметили в конфигурационном файле указаны up\down скрипты, они будут выполнятся при запуске и выключения сервиса, в них мы поместим правила для iptables. Создаем файлы с указанным содержимым.Обратите внимание Вам необходимо отредактировать содержимое файлов а именно:
-o ens3
--to-source 1.1.1.1

В первом параметре необходимо указать интерфейс, через который весь трафик из vpn будет отправляться в интернет, во втором указать ip адрес вашего сервера\vps. Узнать имя интерфейса и адрес сервера выполнив команду:
ip addr
nano /etc/openvpn/keys/up.sh
#!/bin/sh
iptables -t nat -A POSTROUTING --src 10.8.0.0/24 -o ens3 -j SNAT --to-source 1.1.1.1
echo 1 > /proc/sys/net/ipv4/ip_forward

nano /etc/openvpn/keys/down.sh
#!/bin/sh
iptables -t nat -D POSTROUTING --src 10.8.0.0/24 -o ens3 -j SNAT --to-source 1.1.1.1

Теперь необходимо добавить права на выполнение файлам:
chmod +x /etc/openvpn/keys/up.sh
chmod +x /etc/openvpn/keys/down.sh

Добавляем сервис openvpn в автозагрузку:
systemctl enable openvpn@server
И запускаем его:
systemctl start openvpn@server

Подготовим клиентские сертификаты, для каждого клиента создадим отдельную папку, и туда поместим сертификаты:
mkdir /root/client01
cp -R pki/ca.crt /root/client01/
cp -R pki/dh.pem /root/client01/
cp -R pki/tls.key /root/client01/
cp -R pki/private/client01.key /root/client01/
cp -R pki/issued/client01.crt /root/client01/

Скачиваем клиентские сертификаты из папки /root/ и создаем файл конфигурации для клиента со следующим содержимым(Не забудьте исправить параметр remote и указать Ваш ip адрес):
client
dev tun
proto tcp
remote 1.1.1.1 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
ignore-unknown-option block-outside-dns
block-outside-dns
verb 3
ca ca.crt
cert client01.crt
key client01.key
tls-auth tls.key 1
dh dh.pem

Поздравляю. Настройка openvpn на этом закончена.

Оцените статью

средняя оценка 5 / 5. оценок 1

No votes so far! Be the first to rate this post.

Возможно вам понравится

Оставьте свой комментарий

Ваш email не будет опубликован.