Установка OpenVPN на Ubuntu: пошаговое руководство
Подробная инструкция по установке и настройке OpenVPN на Ubuntu. Описаны установка сервера и клиента, генерация ключей, настройка брандмауэра и решение распространенных ошибок.
Содержание
Введение
OpenVPN — мощное и гибкое решение для создания защищенных VPN-соединений. Эта инструкция поможет установить и настроить OpenVPN на Ubuntu 20.04 или 22.04. Мы рассмотрим как серверную, так и клиентскую части, используя аутентификацию на основе сертификатов. Вы узнаете, как правильно сгенерировать ключи, настроить брандмауэр и решить типичные проблемы.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Сервер под управлением Ubuntu с root-доступом или sudo.
- Открытый порт 1194 (UDP) в брандмауэре.
- Статический IP-адрес сервера.
- Установленный пакет утилит (wget, curl).
Установка OpenVPN и Easy-RSA
Обновите пакеты и установите OpenVPN и Easy-RSA:
sudo apt update
sudo apt install openvpn easy-rsaEasy-RSA упрощает управление сертификатами. Создайте директорию для PKI (Public Key Infrastructure):
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 на ваш сетевой интерфейс):
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Настройка клиента
Создайте файл конфигурации клиента 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Затем объедините сертификаты и ключи в один файл (для удобства) или скопируйте их отдельно. Перенесите файл client1.ovpn на клиентскую машину. Импортируйте его в клиентское приложение OpenVPN.
Проверка подключения
На сервере проверьте статус:
sudo systemctl status openvpn@serverНа клиенте попробуйте подключиться. Если все правильно, вы получите IP из подсети 10.8.0.0/24. Проверьте доступность сервера и интернет-трафика через ping.
Устранение распространенных ошибок
Если подключение не устанавливается, проверьте:
- Открыт ли порт 1194 в брандмауэре сервера.
- Правильные ли пути к сертификатам в конфигах.
- Синхронизированы ли системные часы (сертификаты могут быть недействительны).
- Не заблокирован ли порт провайдером.
В логах клиента и сервера (журнал systemd) можно найти конкретные ошибки.
Заключение
Вы успешно установили и настроили OpenVPN на Ubuntu. Теперь вы можете безопасно подключаться к своей сети из любого места. Регулярно обновляйте сертификаты и следите за безопасностью сервера.
Мини-чеклист
- Убедиться, что порт 1194 UDP открыт на сервере
- Установить openvpn и easy-rsa
- Инициализировать PKI и построить CA
- Сгенерировать сертификаты сервера и клиента
- Настроить server.conf с правильными параметрами
- Включить IP-маршрутизацию и настроить NAT
- Запустить и включить сервис OpenVPN
- Скопировать конфигурацию на клиент
Частые ошибки
- Забыть открыть порт 1194 в брандмауэре
- Использовать неправильные пути к сертификатам в конфиге
- Не включить IP-маршрутизацию (net.ipv4.ip_forward=0)
- Игнорировать часовой пояс — сертификаты могут быть недействительны
- Путать ключи tls-crypt: на сервере 0, на клиенте 1
Источники и документация
FAQ
Как изменить порт OpenVPN?
Измените директиву port в server.conf на нужный номер. Также обновите правило брандмауэра и клиентский конфиг.
Почему клиент не может подключиться, хотя сервер запущен?
Проверьте логи сервера (journalctl -u openvpn@server). Частые причины: неверный IP сервера в конфиге клиента, заблокированный порт, несовпадение сертификатов.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ