Настройка OpenVPN на Debian
Подготовка⌗
Устанавливаем пакет openvpn
$ apt update && apt install openvpn -y
Делаем симлинк на каталог с переменными и настройками easy-rsa
$ ln -s /usr/share/easy-rsa /etc/openvpn/easy-rsa
И настраиваем переменные в каталоге /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moscow"
export KEY_CITY="Moscow"
export KEY_ORG="MySiteCompay"
export KEY_EMAIL="admin@custom.domain"
export KEY_CN="DOMAIN"
export KEY_OU="DOMAIN"
export KEY_NAME="openvpn-custom.domain"
export KEY_ALTNAMES="openvpn-server"
Запускаем скрипт
$ . ./vars
Настройка сервера⌗
Генерация сертификатов⌗
$ ./easyrsa init-pki
$ ./easyrsa build-ca
Ключ для протокола Diffie–Hellman
$ ./easyrsa gen-dh
Генерируем сертификат сервера
$ ./easyrsa gen-req server nopass
$ ./easyrsa sign-req server server
Для повышение безопасности, можно запустить без параметра nopass
Еще сделаем ключ для tls-аутентификации
$ openvpn --genkey --secret pki/ta.key
Конфигурация⌗
Создаем файл /etc/openvpn/server/server.conf
port 1337
proto udp
dev tun
cipher AES-256-GCM
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/vpn-server.crt
key /etc/openvpn/easy-rsa/pki/private/vpn-server.key
tls-auth /etc/openvpn/easy-rsa/pki/ta.key 0
persist-key
persist-tun
dh /etc/openvpn/easy-rsa/pki/dh.pem
topology subnet
server 10.2.0.0 255.255.255.0
client-config-dir /etc/openvpn/server/ccd/
;ifconfig-pool-persist /etc/openvpn/server/ipp.txt
status /etc/openvpn/server/status.log
push "dhcp-option DNS 10.2.0.1"
client-to-client
keepalive 30 900
user nobody
group nogroup
;log /var/log/openvpn/openvpn.log
;log-append /var/log/openvpn/openvpn.log
verb 3
;mute 20
explicit-exit-notify 1
Проверяем настройку
$ openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
Включаем юнит для автозапуска через systemd и проверяем статус
$ systemctl enable openvpn-server@server.service
$ systemctl start openvpn-server@server.service
$ systemctl status openvpn-server@server.service
Добавление клиента⌗
Переходим в /etc/openvpn/easy-rsa/
и запускаем скрипт, который проставит переменные окружения
$ . ./vars
Создаем сертификат и ключ клиента
$ ./easyrsa build-client-full client-name nopass
Копируем сгенерированные файлы в конфиг клиента (например, создаем client-name.ovpn
)
client
dev tun
proto udp
remote custom.domain 1337
resolv-retry infinite
nobind
persist-key
persist-tun
<ca>
Копируем контент из /etc/openvpn/easy-rsa/pki/ca.crt
</ca>
key-direction 1
<tls-auth>
Копируем контент из /etc/openvpn/easy-rsa/pki/ta.key
</tls-auth>
<cert>
Копируем контент из /etc/openvpn/easy-rsa/pki/issued/client-name.crt
</cert>
<key>
Копируем контент из /etc/openvpn/easy-rsa/pki/private/client-name.key
</key>
remote-cert-tls server
cipher AES-256-GCM
verb 3
Удаление клиента⌗
./easyrsa revoke client-name
Другие записи