Установка и настройка VPN сервера OpenVPN: различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к навигации Перейти к поиску
Исправлены опасные шаги (потеря доступа или данных) — проверка вики 13.11.2026
Починка разметки: ссылки и жирный шрифт из Markdown, лишние обратные косые черты в коде, заголовки — проверка вики 13.11.2026
 
Строка 85: Строка 85:


2. Добавьте базовую конфигурацию:
2. Добавьте базовую конфигурацию:
<pre>\# Порт и протокол
<pre># Порт и протокол
port 1194
port 1194
proto udp
proto udp


\# Директории сертификатов
# Директории сертификатов
ca ca.crt
ca ca.crt
cert server.crt
cert server.crt
Строка 95: Строка 95:
dh dh.pem
dh dh.pem


\# Сеть для VPN клиентов
# Сеть для VPN клиентов
server 10.8.0.0 255.255.255.0
server 10.8.0.0 255.255.255.0


\# Маршруты для клиентов
# Маршруты для клиентов
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "dhcp-option DNS 8.8.4.4"


\# Настройки безопасности
# Настройки безопасности
tls-auth ta.key 0
tls-auth ta.key 0
cipher AES-256-GCM
cipher AES-256-GCM
auth SHA256
auth SHA256


\# Настройки клиентов
# Настройки клиентов
client-to-client
client-to-client
keepalive 10 120
keepalive 10 120
comp-lzo
comp-lzo


\# Логирование
# Логирование
log-append /var/log/openvpn.log
log-append /var/log/openvpn.log
verb 3
verb 3


\# Управление клиентами
# Управление клиентами
client-config-dir /etc/openvpn/ccd
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn-status.log
status /var/log/openvpn-status.log
Строка 125: Строка 125:


1. Для более продвинутой настройки добавьте:
1. Для более продвинутой настройки добавьте:
<pre>\# Дополнительные настройки безопасности
<pre># Дополнительные настройки безопасности
tls-version-min 1.2
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384


\# Настройки производительности
# Настройки производительности
sndbuf 393216
sndbuf 393216
rcvbuf 393216
rcvbuf 393216


\# Настройки сжатия
# Настройки сжатия
comp-lzo adaptive
comp-lzo adaptive


\# Настройки подключения
# Настройки подключения
max-clients 100
max-clients 100
duplicate-cn
duplicate-cn


\# Настройки логирования
# Настройки логирования
mute 20
mute 20
</pre>
</pre>
Строка 163: Строка 163:


2. Добавьте правила:
2. Добавьте правила:
<pre>\#!/bin/bash
<pre>#!/bin/bash


\# Разрешение трафика через VPN
# Разрешение трафика через VPN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
Строка 171: Строка 171:
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT


\# Разрешение OpenVPN порта
# Разрешение OpenVPN порта
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT


\# Сохранение правил
# Сохранение правил
iptables-save > /etc/iptables/rules.v4
iptables-save > /etc/iptables/rules.v4
</pre>
</pre>
Строка 240: Строка 240:


2. Добавьте содержимое:
2. Добавьте содержимое:
<pre>\#!/bin/bash
<pre>#!/bin/bash


if [ -z "$1" ]; then
if [ -z "$1" ]; then
Строка 250: Строка 250:
cd /etc/openvpn/easy-rsa
cd /etc/openvpn/easy-rsa


\# Создание клиентского сертификата
# Создание клиентского сертификата
./easyrsa gen-req $CLIENT_NAME nopass
./easyrsa gen-req $CLIENT_NAME nopass
./easyrsa sign-req client $CLIENT_NAME
./easyrsa sign-req client $CLIENT_NAME


\# Создание .ovpn файла
# Создание .ovpn файла
cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF
cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF
client
client
Строка 445: Строка 445:


1. '''Ограничение доступа по IP''':
1. '''Ограничение доступа по IP''':
<pre>\# В server.conf добавьте:
<pre># В server.conf добавьте:
client-config-dir /etc/openvpn/ccd
client-config-dir /etc/openvpn/ccd
</pre>
</pre>
Строка 463: Строка 463:


2. Добавьте содержимое:
2. Добавьте содержимое:
<pre>\#!/bin/bash
<pre>#!/bin/bash


\# Проверка статуса OpenVPN
# Проверка статуса OpenVPN
if ! systemctl is-active --quiet openvpn@server; then
if ! systemctl is-active --quiet openvpn@server; then
     echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com
     echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com
fi
fi


\# Проверка количества подключений
# Проверка количества подключений
CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST")
CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST")
if [ $CONNECTIONS -gt 50 ]; then
if [ $CONNECTIONS -gt 50 ]; then
Строка 517: Строка 517:
OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа.
OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа.


'''Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):'''
'''Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами [https://ark-hoster.ru ARK-HOSTER.RU]:'''


* '''[Выделенные серверы](https://ark-hoster.ru/dedicated/)''' - для критически важных VPN серверов
* '''[https://ark-hoster.ru/dedicated/ Выделенные серверы]''' - для критически важных VPN серверов
* '''[VPS/VDS серверы](https://ark-hoster.ru/vpsgame/)''' - для небольших и средних проектов
* '''[https://ark-hoster.ru/vpsgame/ VPS/VDS серверы]''' - для небольших и средних проектов


Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений!
Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений!

Текущая версия от 08:11, 14 ноября 2026

Установка и настройка VPN сервера (OpenVPN)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка OpenVPN

Обновление системы

1. Обновите систему:

sudo apt update

2. Установите необходимые пакеты:

sudo apt install -y openvpn easy-rsa

3. Проверьте версию OpenVPN:

openvpn --version

Создание директорий

1. Создайте директорию для OpenVPN:

sudo mkdir -p /etc/openvpn

2. Создайте директорию для сертификатов:

sudo mkdir -p /etc/openvpn/easy-rsa

3. Скопируйте easy-rsa:

sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/

4. Установите права доступа:

sudo chown -R root:root /etc/openvpn/easy-rsa
sudo chmod -R 755 /etc/openvpn/easy-rsa

3. Настройка PKI (Public Key Infrastructure)

Инициализация PKI

1. Перейдите в директорию easy-rsa:

cd /etc/openvpn/easy-rsa

2. Инициализируйте PKI:

sudo ./easyrsa init-pki

3. Создайте CA (Certificate Authority):

sudo ./easyrsa build-ca nopass

4. Создайте серверный сертификат:

sudo ./easyrsa gen-req server nopass
sudo ./easyrsa sign-req server server

5. Создайте клиентский сертификат:

sudo ./easyrsa gen-req client1 nopass
sudo ./easyrsa sign-req client client1

6. Создайте Diffie-Hellman параметры:

sudo ./easyrsa gen-dh

7. Создайте TLS ключ:

sudo openvpn --genkey --secret ta.key

Копирование сертификатов

1. Скопируйте сертификаты в директорию OpenVPN:

sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/
sudo cp ta.key /etc/openvpn/

2. Установите права доступа:

sudo chmod 600 /etc/openvpn/server.key
sudo chmod 600 /etc/openvpn/ta.key
sudo chmod 644 /etc/openvpn/ca.crt
sudo chmod 644 /etc/openvpn/server.crt
sudo chmod 644 /etc/openvpn/dh.pem

4. Создание конфигурации сервера

Основная конфигурация

1. Создайте конфигурационный файл сервера:

sudo nano /etc/openvpn/server.conf

2. Добавьте базовую конфигурацию:

# Порт и протокол
port 1194
proto udp

# Директории сертификатов
ca ca.crt
cert server.crt
key server.key
dh dh.pem

# Сеть для VPN клиентов
server 10.8.0.0 255.255.255.0

# Маршруты для клиентов
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"

# Настройки безопасности
tls-auth ta.key 0
cipher AES-256-GCM
auth SHA256

# Настройки клиентов
client-to-client
keepalive 10 120
comp-lzo

# Логирование
log-append /var/log/openvpn.log
verb 3

# Управление клиентами
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn-status.log

Расширенная конфигурация

1. Для более продвинутой настройки добавьте:

# Дополнительные настройки безопасности
tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384

# Настройки производительности
sndbuf 393216
rcvbuf 393216

# Настройки сжатия
comp-lzo adaptive

# Настройки подключения
max-clients 100
duplicate-cn

# Настройки логирования
mute 20

5. Настройка маршрутизации

Включение IP forwarding

1. Включите IP forwarding:

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf

2. Примените изменения:

sudo sysctl -p

3. Проверьте настройку:

cat /proc/sys/net/ipv4/ip_forward

Настройка iptables

1. Создайте скрипт для настройки iptables:

sudo nano /etc/openvpn/iptables-rules.sh

2. Добавьте правила:

#!/bin/bash

# Разрешение трафика через VPN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT

# Разрешение OpenVPN порта
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT

# Сохранение правил
iptables-save > /etc/iptables/rules.v4

Внимание: скрипт только добавляет правила для VPN. Не вставляйте в него iptables -F и iptables -P … ACCEPT: эти команды стирают действующие правила файрвола (в том числе правила UFW и fail2ban) и открывают сервер. Запускайте скрипт один раз: при повторном запуске правила задвоятся.

3. Сделайте скрипт исполняемым:

sudo chmod +x /etc/openvpn/iptables-rules.sh

4. Запустите скрипт:

sudo /etc/openvpn/iptables-rules.sh

6. Настройка клиентских конфигураций

Создание клиентских конфигураций

1. Создайте директорию для клиентских конфигураций:

sudo mkdir -p /etc/openvpn/clients

2. Создайте базовую клиентскую конфигурацию:

sudo nano /etc/openvpn/clients/client1.ovpn

3. Добавьте содержимое:

client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
auth SHA256
verb 3

<ca>
-----BEGIN CERTIFICATE-----
[Содержимое ca.crt]
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
[Содержимое client1.crt]
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
[Содержимое client1.key]
-----END PRIVATE KEY-----
</key>

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
[Содержимое ta.key]
-----END OpenVPN Static key V1-----
</tls-auth>

Создание скрипта для генерации клиентов

1. Создайте скрипт для автоматического создания клиентов:

sudo nano /etc/openvpn/create-client.sh

2. Добавьте содержимое:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 <client-name>"
    exit 1
fi

CLIENT_NAME=$1
cd /etc/openvpn/easy-rsa

# Создание клиентского сертификата
./easyrsa gen-req $CLIENT_NAME nopass
./easyrsa sign-req client $CLIENT_NAME

# Создание .ovpn файла
cat > /etc/openvpn/clients/$CLIENT_NAME.ovpn << EOF
client
dev tun
proto udp
remote $(curl -s ifconfig.me) 1194
resolv-retry infinite
nobind
persist-key
persist-tun
cipher AES-256-GCM
auth SHA256
verb 3

<ca>
$(cat pki/ca.crt)
</ca>

<cert>
$(cat pki/issued/$CLIENT_NAME.crt)
</cert>

<key>
$(cat pki/private/$CLIENT_NAME.key)
</key>

<tls-auth>
$(cat ta.key)
</tls-auth>
EOF

echo "Client configuration created: /etc/openvpn/clients/$CLIENT_NAME.ovpn"

3. Сделайте скрипт исполняемым:

sudo chmod +x /etc/openvpn/create-client.sh

4. Создайте клиента:

sudo /etc/openvpn/create-client.sh client2

7. Запуск и управление OpenVPN

Запуск OpenVPN

1. Запустите OpenVPN сервер:

sudo systemctl start openvpn@server

2. Включите автозапуск:

sudo systemctl enable openvpn@server

3. Проверьте статус:

sudo systemctl status openvpn@server

Управление сервисом

1. Запуск сервера:

sudo systemctl start openvpn@server

2. Остановка сервера:

sudo systemctl stop openvpn@server

3. Перезапуск сервера:

sudo systemctl restart openvpn@server

4. Проверка статуса:

sudo systemctl status openvpn@server

5. Просмотр логов:

sudo journalctl -u openvpn@server -f

8. Настройка файрвола

Настройка UFW

1. Разрешите OpenVPN порт:

sudo ufw allow 1194/udp

2. Разрешите SSH (если еще не разрешен):

sudo ufw allow ssh

3. Включите UFW:

sudo ufw enable

4. Проверьте статус:

sudo ufw status

Настройка iptables (альтернатива)

1. Создайте правила для OpenVPN:

sudo iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT

2. Настройте NAT для VPN трафика:

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

3. Сохраните правила:

sudo iptables-save > /etc/iptables/rules.v4

9. Мониторинг и управление

Просмотр подключенных клиентов

1. Просмотр статуса подключений:

sudo cat /var/log/openvpn-status.log

2. Просмотр активных подключений:

sudo netstat -tulnp | grep :1194

3. Просмотр туннельных интерфейсов:

ip addr show tun0

Управление клиентами

1. Отключение клиента:

echo "kill CLIENT_NAME" | sudo nc -U /var/run/openvpn.server.sock

2. Перезапуск сервера:

sudo systemctl restart openvpn@server

3. Просмотр логов в реальном времени:

sudo tail -f /var/log/openvpn.log

10. Настройка клиентских устройств

Windows клиент

1. Скачайте OpenVPN клиент с официального сайта 2. Установите клиент 3. Скопируйте .ovpn файл в папку config 4. Запустите OpenVPN и подключитесь

Linux клиент

1. Установите OpenVPN:

sudo apt install openvpn

2. Скопируйте .ovpn файл:

sudo cp client1.ovpn /etc/openvpn/

3. Подключитесь:

sudo openvpn --config /etc/openvpn/client1.ovpn

Android/iOS клиент

1. Установите OpenVPN Connect из магазина приложений 2. Импортируйте .ovpn файл 3. Подключитесь к VPN

11. Дополнительные настройки

Настройка DNS

1. Установите и настройте DNS сервер:

sudo apt install -y dnsmasq

2. Настройте dnsmasq:

sudo nano /etc/dnsmasq.conf

3. Добавьте настройки:

interface=tun0
dhcp-range=10.8.0.2,10.8.0.10,255.255.255.0,12h

4. Запустите dnsmasq:

sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq

Настройка логирования

1. Настройте ротацию логов:

sudo nano /etc/logrotate.d/openvpn

2. Добавьте конфигурацию:

/var/log/openvpn.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 644 root root
    postrotate
        systemctl reload openvpn@server
    endscript
}

12. Безопасность

Дополнительные меры безопасности

1. Ограничение доступа по IP:

# В server.conf добавьте:
client-config-dir /etc/openvpn/ccd

2. Создание файла конфигурации клиента:

sudo nano /etc/openvpn/ccd/client1

3. Добавьте ограничения:

ifconfig-push 10.8.0.10 10.8.0.9
iroute 192.168.1.0 255.255.255.0

Мониторинг безопасности

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/vpn-monitor.sh

2. Добавьте содержимое:

#!/bin/bash

# Проверка статуса OpenVPN
if ! systemctl is-active --quiet openvpn@server; then
    echo "OpenVPN server is down!" | mail -s "VPN Alert" admin@example.com
fi

# Проверка количества подключений
CONNECTIONS=$(cat /var/log/openvpn-status.log | grep -c "CLIENT_LIST")
if [ $CONNECTIONS -gt 50 ]; then
    echo "Too many VPN connections: $CONNECTIONS" | mail -s "VPN Alert" admin@example.com
fi

3. Добавьте в crontab:

*/5 * * * * /usr/local/bin/vpn-monitor.sh

13. Устранение неполадок

Частые проблемы

1. OpenVPN не запускается:

  • Проверьте конфигурацию:
    sudo openvpn --config /etc/openvpn/server.conf --test-crypto
  • Проверьте права доступа к сертификатам
  • Проверьте логи:
    sudo journalctl -u openvpn@server

2. Клиенты не могут подключиться:

  • Проверьте файрвол
  • Проверьте сетевые настройки
  • Проверьте сертификаты клиентов

3. Проблемы с маршрутизацией:

  • Проверьте IP forwarding:
    cat /proc/sys/net/ipv4/ip_forward
  • Проверьте iptables правила
  • Проверьте сетевые интерфейсы

Диагностика

1. Проверка статуса:

sudo systemctl status openvpn@server

2. Проверка портов:

sudo netstat -tulnp | grep :1194

3. Проверка туннеля:

ip addr show tun0

4. Проверка маршрутов:

ip route show

Заключение

OpenVPN сервер успешно установлен и настроен! Теперь у вас есть безопасное VPN соединение для удаленного доступа.

Для размещения ваших VPN серверов на надежном хостинге рекомендуем воспользоваться услугами ARK-HOSTER.RU:

Наши специалисты помогут с настройкой OpenVPN и обеспечением безопасности ваших VPN соединений!