Установка OpenVPN на Ubuntu: пошаговое руководство
Пошаговая инструкция по установке OpenVPN на Ubuntu: от установки пакетов до настройки клиента и решения типичных проблем. Подходит для версий 20.04 и 22.04.
Содержание
Что нужно для установки OpenVPN на Ubuntu
Чтобы установить OpenVPN на Ubuntu, вам понадобится сервер с Ubuntu 20.04 или 22.04, доступ к root или sudo, а также открытый порт 1194 (UDP) в брандмауэре. Если вы планируете подключаться к серверу извне, убедитесь, что у вас статический IP-адрес. Для генерации сертификатов используйте Easy-RSA — это стандартный инструмент для управления ключами в OpenVPN.
Установка OpenVPN и Easy-RSA
Обновите список пакетов и установите необходимые программы:
sudo apt update
sudo apt install openvpn easy-rsaПосле установки создайте отдельную директорию для Easy-RSA, чтобы не смешивать файлы с системными:
make-cadir ~/easy-rsa
cd ~/easy-rsaИнициализируйте инфраструктуру открытых ключей (PKI) и создайте корневой сертификат:
./easyrsa init-pki
./easyrsa build-ca nopassПри запросе введите имя вашего центра сертификации, например MyCA. Этот сертификат будет использоваться для подписи всех остальных ключей.
Генерация сертификатов для сервера и клиентов
Создайте сертификат и ключ для сервера без пароля (чтобы сервер мог запускаться автоматически):
./easyrsa gen-req server nopass
./easyrsa sign-req server serverЗатем сгенерируйте параметры Диффи-Хеллмана — это может занять несколько минут:
./easyrsa gen-dhДля дополнительной защиты создайте ключ TLS (tls-crypt), который шифрует управляющий канал:
openvpn --genkey --secret ta.keyТеперь создайте сертификат для каждого клиента. Например, для клиента client1:
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1Скопируйте все необходимые файлы в каталог OpenVPN:
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem ta.key /etc/openvpn/Настройка сервера OpenVPN
Создайте файл конфигурации сервера /etc/openvpn/server.conf со следующим содержимым:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-crypt ta.key 0
auth SHA256
cipher AES-256-GCM
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
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
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3Включите IP-маршрутизацию, чтобы клиенты могли выходить в интернет через сервер:
sudo sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.confНастройте NAT с помощью iptables. Замените eth0 на ваш сетевой интерфейс (узнать его можно командой ip route):
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo iptables -A INPUT -p udp --dport 1194 -j ACCEPT
sudo iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPTЧтобы правила сохранялись после перезагрузки, установите пакет iptables-persistent:
sudo apt install iptables-persistent -y
sudo netfilter-persistent saveЗапустите OpenVPN и добавьте его в автозагрузку:
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@serverНастройка клиента OpenVPN на Ubuntu
На клиентской машине создайте файл конфигурации client1.ovpn со следующим содержимым:
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-crypt ta.key 1
auth SHA256
cipher AES-256-GCM
verb 3Замените YOUR_SERVER_IP на реальный IP-адрес вашего сервера. Скопируйте файлы ca.crt, client1.crt, client1.key и ta.key на клиентскую машину и поместите их в ту же директорию, что и файл .ovpn.
Для подключения используйте команду:
sudo openvpn --config client1.ovpnИли импортируйте файл в графический клиент OpenVPN, если он установлен.
Проверка подключения и типичные ошибки
После запуска клиента проверьте, получил ли он IP-адрес из подсети 10.8.0.0/24. На сервере выполните:
sudo systemctl status openvpn@serverЕсли подключение не устанавливается, проверьте:
- Открыт ли порт 1194 в брандмауэре сервера.
- Правильные ли пути к сертификатам в конфигурационных файлах.
- Синхронизированы ли системные часы — сертификаты могут быть недействительны при расхождении времени.
- Не блокирует ли порт провайдер.
Подробные ошибки смотрите в журналах: journalctl -u openvpn@server на сервере и в выводе клиента.
Дополнительные советы и альтернативы
Если вам нужен более простой способ настройки VPN на Ubuntu, обратите внимание на Amnezia VPN — он поддерживает OpenVPN и другие протоколы с удобным графическим интерфейсом. Также вы можете ознакомиться с обзором OpenVPN 3.8 для новых функций. Если вы ищете клиент для Windows, прочитайте как скачать OpenVPN для Windows 11.
Мини-чеклист
- Убедитесь, что у вас есть root-доступ или sudo на сервере Ubuntu.
- Откройте порт 1194 UDP в брандмауэре.
- Установите openvpn и easy-rsa через apt.
- Создайте PKI и корневой сертификат с помощью easyrsa.
- Сгенерируйте сертификаты для сервера и каждого клиента.
- Скопируйте сертификаты в /etc/openvpn/.
- Настройте server.conf с правильными параметрами.
- Включите IP-маршрутизацию и настройте NAT через iptables.
- Запустите и включите службу openvpn@server.
- Создайте клиентский конфиг и подключитесь.
Частые ошибки
- Забывают открыть порт 1194 в брандмауэре.
- Используют неправильные пути к сертификатам в конфигурации.
- Не включают IP-маршрутизацию, из-за чего клиенты не получают интернет.
- Не синхронизируют время на сервере и клиенте, что приводит к ошибкам сертификатов.
- Путают ключ tls-crypt: на сервере указывается 0, на клиенте — 1.
Источники и документация
FAQ
Как установить OpenVPN на Ubuntu 22.04?
Процесс установки аналогичен описанному выше: обновите пакеты, установите openvpn и easy-rsa, сгенерируйте сертификаты и настройте конфигурацию. Все команды подходят для Ubuntu 22.04.
Как настроить OpenVPN клиент на Ubuntu?
Создайте файл .ovpn с параметрами клиента, скопируйте сертификаты и ключи, затем подключитесь через команду openvpn --config client.ovpn или импортируйте в графический клиент.
Почему OpenVPN не подключается на Ubuntu?
Проверьте, открыт ли порт 1194, правильность путей к сертификатам, синхронизацию времени и логи сервера и клиента. Часто проблема в брандмауэре или неверных ключах.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ