Настройка OpenVPN сервера на Debian: пошаговое руководство
Подробное руководство по развертыванию OpenVPN сервера на Debian. Включает установку, конфигурацию сертификатов, настройку клиента и обеспечение безопасности.
Содержание
Настройка OpenVPN сервера на Debian — это практическая задача, которая решается за несколько шагов: установка пакетов, генерация сертификатов, конфигурация сервера и клиента, включение маршрутизации и настройка файрвола. В этом руководстве мы пройдем весь путь от начала до конца, чтобы вы получили рабочий VPN-сервер и смогли подключиться к нему с любого устройства.
Подготовка сервера Debian
Перед началом убедитесь, что у вас есть сервер с Debian 11 или 12, доступ по SSH с правами root, и открытый порт UDP 1194 в панели управления хостингом. Обновите систему и установите OpenVPN и EasyRSA:
apt update && apt upgrade -y
apt install openvpn easy-rsa -yEasyRSA — это набор скриптов для управления ключами и сертификатами. Создайте каталог для PKI (инфраструктуры открытых ключей) и перейдите в него:
make-cadir ~/easy-rsa
cd ~/easy-rsaГенерация сертификатов и ключей
Инициализируйте PKI и создайте корневой сертификат CA. В процессе вам будет предложено ввести пароль для CA и общее имя (Common Name) — укажите что-то вроде myvpn-ca:
./easyrsa init-pki
./easyrsa build-caТеперь создайте серверный сертификат и подпишите его:
./easyrsa gen-req server nopass
./easyrsa sign-req server serverСгенерируйте параметры Диффи-Хеллмана (это может занять несколько минут):
./easyrsa gen-dhТакже создайте ключ TLS для защиты от DoS-атак:
openvpn --genkey --secret ta.keyКонфигурация сервера OpenVPN
Скопируйте все необходимые файлы в каталог OpenVPN:
cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/Создайте файл конфигурации /etc/openvpn/server.conf с таким содержимым:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
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"
keepalive 10 120
persist-key
persist-tun
verb 3Здесь server 10.8.0.0 255.255.255.0 задает подсеть для клиентов, push "redirect-gateway" перенаправляет весь трафик через VPN, а tls-auth обеспечивает дополнительную защиту.
Включение IP-пересылки и настройка iptables
Чтобы клиенты могли выходить в интернет, включите IP-пересылку. Раскомментируйте строку в /etc/sysctl.conf:
net.ipv4.ip_forward=1Примените изменения:
sysctl -pНастройте iptables. Замените eth0 на ваш основной сетевой интерфейс (проверьте командой ip route):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -j ACCEPTСохраните правила, установив iptables-persistent:
apt install iptables-persistent -y
netfilter-persistent saveСоздание клиентского сертификата и конфигурации
Сгенерируйте сертификат для клиента (например, client1):
cd ~/easy-rsa
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1Скопируйте файлы ca.crt, client1.crt, client1.key и ta.key на клиентское устройство. Создайте файл конфигурации client1.ovpn:
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-GCM
auth SHA256
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3Замените YOUR_SERVER_IP на реальный IP вашего сервера. Импортируйте этот файл в OpenVPN на клиенте.
Запуск сервера и проверка подключения
Запустите OpenVPN и добавьте в автозагрузку:
systemctl start openvpn@server
systemctl enable openvpn@serverПроверьте статус:
systemctl status openvpn@serverЕсли сервер работает, подключитесь с клиента и проверьте IP-адрес командой curl ifconfig.me. Если отображается IP вашего сервера — всё настроено верно.
Типичные ошибки и их решение
- Клиенты подключаются, но нет доступа в интернет. Проверьте, включена ли IP-пересылка (
sysctl net.ipv4.ip_forwardдолжно быть 1) и правильно ли настроены правила iptables. - Ошибка прав доступа к файлам. Убедитесь, что все файлы в
/etc/openvpn/доступны для чтения пользователю nobody:chmod 644 /etc/openvpn/*. - Порт 1194 закрыт. Откройте порт в брандмауэре сервера и в панели хостинг-провайдера.
- Конфликт подсетей. Если ваша локальная сеть использует 10.8.0.0/24, измените подсеть в конфигурации сервера.
Часто задаваемые вопросы
Как изменить порт OpenVPN?
Измените директиву port в server.conf и в клиентском файле .ovpn укажите новый порт. Не забудьте открыть его в брандмауэре.
Можно ли использовать TCP вместо UDP?
Да, замените proto udp на proto tcp в конфигурациях сервера и клиента. TCP может быть полезен при нестабильном соединении, но обычно UDP быстрее.
Как добавить второго клиента?
Повторите шаги генерации клиентского сертификата с другим именем (например, client2) и создайте для него отдельный .ovpn файл.
Как отозвать сертификат клиента?
Используйте команду ./easyrsa revoke client1 в каталоге easy-rsa, затем обновите список отозванных сертификатов: ./easyrsa gen-crl и скопируйте crl.pem в /etc/openvpn/, добавив в конфигурацию сервера crl-verify crl.pem.
Как настроить OpenVPN на роутере?
На роутере обычно используется встроенный клиент OpenVPN. Импортируйте файл .ovpn в веб-интерфейс роутера, указав путь к сертификатам.
Если вам нужен быстрый и простой VPN для личного использования, обратите внимание на OpenVPN в Польше или OpenVPN для Android TV. Для старых систем, таких как Windows XP, может пригодиться VPN для XP.
Мини-чеклист
- Обновить систему и установить openvpn и easy-rsa
- Создать PKI и корневой сертификат CA
- Сгенерировать серверный сертификат и ключ
- Сгенерировать параметры Диффи-Хеллмана и ta.key
- Скопировать сертификаты в /etc/openvpn/
- Создать server.conf с правильными параметрами
- Включить IP-пересылку в sysctl.conf
- Настроить iptables для NAT и форвардинга
- Сохранить правила iptables
- Создать клиентский сертификат и конфигурацию
- Запустить OpenVPN и проверить статус
- Проверить подключение с клиента
Частые ошибки
- Не включена IP-пересылка
- Неправильные права на файлы сертификатов
- Порт 1194 закрыт брандмауэром
- Конфликт подсетей
- Неправильно указан IP сервера в конфигурации клиента
Источники и документация
FAQ
Как изменить порт OpenVPN?
Измените директиву port в server.conf и в клиентском файле .ovpn укажите новый порт. Не забудьте открыть его в брандмауэре.
Можно ли использовать TCP вместо UDP?
Да, замените proto udp на proto tcp в конфигурациях сервера и клиента. TCP может быть полезен при нестабильном соединении, но обычно UDP быстрее.
Как добавить второго клиента?
Повторите шаги генерации клиентского сертификата с другим именем (например, client2) и создайте для него отдельный .ovpn файл.
Как отозвать сертификат клиента?
Используйте команду ./easyrsa revoke client1 в каталоге easy-rsa, затем обновите список отозванных сертификатов: ./easyrsa gen-crl и скопируйте crl.pem в /etc/openvpn/, добавив в конфигурацию сервера crl-verify crl.pem.
Как настроить OpenVPN на роутере?
На роутере обычно используется встроенный клиент OpenVPN. Импортируйте файл .ovpn в веб-интерфейс роутера, указав путь к сертификатам.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ