Установка OpenVPN на Debian 10
! Иллюстрация: VPN-туннель и логотип OpenVPN
OpenVPN — это свободное ПО для организации защищённого доступа к сети через ненадёжные каналы. Оно создаёт зашифрованный туннель, использует SSL/TLS для обмена ключами и умеет работать за NAT. В этом руководстве описана пошаговая настройка OpenVPN-сервера и клиента на Debian 10.
Требования
- Два сервера под управлением Debian 10 (или виртуальные машины).
- Примерные IP: сервер — 192.168.0.103, клиент — 192.168.0.102. Замените на свои адреса.
- Пароль root или доступ по sudo на обоих хостах.
Важно: используйте статические IP или корректно настройте перенос портов/маршрутизацию, если сервер находится за NAT.
Включение пересылки IP
Чтобы пакеты из VPN могли пробрасываться на внешний интерфейс, включите пересылку IPv4.
Откройте файл:
nano /etc/sysctl.confИзмените / добавьте строку:
net.ipv4.ip_forward=1
Сохраните и примените настройки:
sysctl -pПримечание: для временной активации можно выполнить echo 1 > /proc/sys/net/ipv4/ip_forward.
Установка OpenVPN
Установите пакет OpenVPN из репозитория Debian:
apt-get install openvpn -yПосле установки можно переходить к созданию PKI и сертификатов.
Генерация сертификатов и ключей сервера
Скопируйте Easy-RSA в конфигурационную директорию и подготовьте окружение:
cp -r /usr/share/easy-rsa /etc/openvpn/Перейдите в каталог Easy-RSA и переименуйте пример файла vars:
cd /etc/openvpn/easy-rsa
mv vars.example varsОтредактируйте vars и укажите свои поля (страна, провинция, город, организация, e‑mail и т.д.). По умолчанию в примере используются индийские значения — замените на актуальные для вашей инфраструктуры:
nano varsДобавьте/проверьте эти строки (вставлены как пример):
export KEY_COUNTRY="INDIA"
export KEY_PROVINCE="CA"
export KEY_CITY="Junagadh"
export KEY_ORG="Howtoforge"
export KEY_EMAIL="[email protected]"
export KEY_OU="OpenVPN"
Сохраните файл. Рекомендуется заменить значения на свои (например, COUNTRY=”RU”).
Инициализируйте PKI:
./easyrsa init-pkiСоздайте центр сертификации (CA) без пароля — удобнее для тестовой среды. Для боевого сервера рекомендуется использовать пароль или внешнее хранилище ключей:
./easyrsa build-ca nopassСгенерируйте запрос и приватный ключ сервера:
./easyrsa gen-req server nopassПодпишите запрос центром сертификации:
./easyrsa sign-req server serverСгенерируйте параметры Диффи-Хеллмана (может занимать долгое время):
./easyrsa gen-dhСоздайте HMAC-ключ для tls-auth (повышает защиту канала управления):
openvpn --genkey --secret ta.keyСкопируйте необходимые файлы в /etc/openvpn:
cp ta.key /etc/openvpn/
cp pki/ca.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/Важно: приватные ключи (server.key, ta.key и приватные ключи CA) должны храниться в защищённом каталоге с правами доступа, доступными только root.
Генерация сертификата и ключа клиента
На сервере Easy-RSA сгенерируйте ключ клиента:
./easyrsa gen-req client nopassПодпишите клиентский сертификат:
./easyrsa sign-req client clientСкопируйте сгенерированные клиентские файлы в отдельную папку для удобной передачи на клиент:
cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/Рекомендация: при экспорте клиентских файлов в продуктивной среде используйте защищённый канал (scp, sftp) и удаляйте временные копии отовсюду после передачи.
Настройка OpenVPN сервера
Создайте файл конфигурации сервера:
nano /etc/openvpn/server.confВставьте конфигурацию (пример):
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
Пояснения к важным параметрам:
- server 10.8.0.0 255.255.255.0 — подсеть виртуальной частной сети.
- push “redirect-gateway…” — перенаправляет весь клиентский трафик через VPN (обычно нужно для полноценной маскировки исходного IP).
- dhcp-option DNS — указывает DNS-серверы, которые будут предоставлены клиентам.
Запустите и проверьте службу:
systemctl start openvpn@server
systemctl status openvpn@serverОжидаемый статус: active (running) и сообщение “Initialization Sequence Completed”.
Установка и настройка клиента
На клиенте установите OpenVPN:
apt-get install openvpn -yСоздайте конфигурационный файл клиента:
nano /etc/openvpn/client.confПример конфигурации клиента:
client
dev tun
proto udp
remote 192.168.0.103 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3
Передайте файлы с сервера на клиент (используя защищённый канал):
scp [email protected]:/etc/openvpn/client/ca.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/client/client.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/client/client.key /etc/openvpn/
scp [email protected]:/etc/openvpn/ta.key /etc/openvpn/Запустите сервис:
systemctl start openvpn@clientПроверьте назначенный IP-интерфейса tun с помощью ifconfig или ip addr.
Проверка логов и подключений
На сервере можно в реальном времени наблюдать лог:
tail -f /var/log/openvpn/openvpn.logВ логе вы увидите подключение клиента, назначение виртуального IP и договорённый шифр.
Критерии приёмки
- Служба openvpn@server запущена и сообщает “Initialization Sequence Completed”.
- Клиент получает виртуальный IP (например, 10.8.0.x) и маршрут по умолчанию на сервер.
- Трафик с клиента идёт через сервер (проверяется внешним IP-адресом и traceroute).
- Логи не содержат ошибок TLS или проблем с сертификатами.
Контрольный список администратора
- Включена пересылка ip_forward.
- Сгенерирован CA и подписаны сервер/клиент сертификаты.
- Приватные ключи защищены и доступны только root.
- Порт UDP 1194 открыт и проброшен на сервере (если требуется).
- Конфигурации /etc/openvpn/server.conf и client.conf проверены на опечатки.
- Логи проверены и подключение клиента стабильно.
Шпаргалка команд
- Перезапуск сервиса сервера:
systemctl restart openvpn@server - Перезапуск клиента:
systemctl restart openvpn@client - Просмотр статуса:
systemctl status openvpn@server - Проверка интерфейсов:
ip addr - Следить за логом:
tail -f /var/log/openvpn/openvpn.log
Когда OpenVPN может не подойти
- Если нужно очень высокое время отклика и минимальная задержка для игр — VPN может увеличить задержку.
- Если требуется корпоративный SSO/PKI с интеграцией в существующий CA — возможно, предпочтительнее использовать корпоративное решение с централизованным управлением сертификатов.
- Для мобильных клиентов с нестабильными сетями можно рассмотреть WireGuard как более простой и быстрый протокол.
Альтернативы и когда их рассматривать
- WireGuard — проще в конфигурации, быстрее на большинстве платформ, но молодой экосистемой и иными требованиями к ключевому управлению.
- IPsec (strongSwan/LibreSwan) — хорош для межсайтовых VPN и совместимости с аппаратными шлюзами.
- Коммерческие VPN-решения — обычно предоставляют удобные клиенты, поддержку и управление пользователями.
Рекомендации по безопасности
- Ограничьте доступ к приватным ключам (chmod 600) и храните их вне публичных разделов.
- Регулярно обновляйте пакеты Debian и OpenSSL/OpenVPN.
- Рассмотрите использование TLS-авторизации (tls-auth или tls-crypt) и сильных шифровых наборов (AES-GCM, ECDHE).
- В продуктивной среде используйте пароль для CA или аппаратные модули HSM/KMS.
Итоги
Вы развернули OpenVPN-сервер и клиента на Debian 10: включили пересылку IP, установили пакет, создали PKI, подписали сертификаты, настроили конфигурации и запустили службы. Для боевого использования дополнительно настройте бэкап ключей, мониторинг и политику ротации сертификатов.
Важно: адаптируйте примерные значения (IP, DNS, поля в vars) под вашу инфраструктуру и требования безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента