Развернуть VPN сервер на Ubuntu Server можно за 30 минут, используя OpenVPN или WireGuard. OpenVPN обеспечивает универсальную совместимость, WireGuard — максимальную скорость и простоту. Выберите инструмент в зависимости от приоритетов: надежность и стандарты (OpenVPN) или производительность (WireGuard).
Причины выбрать собственный VPN сервер
- Полный контроль над шифрованием и маршрутизацией трафика
- Отсутствие логирования активности пользователей
- Независимость от политики провайдеров VPN
- Возможность использования для удаленного доступа к корпоративной сети
- Снижение затрат при подключении нескольких устройств
- Защита от DPI (Deep Packet Inspection) на уровне ISP
Предварительные требования
- Сервер или VPS с Ubuntu Server 20.04 LTS / 22.04 LTS / 24.04
- Статический IP адрес сервера
- Доступ по SSH с правами sudo
- Открытые порты 1194/UDP (OpenVPN) или 51820/UDP (WireGuard)
- Минимум 512 МБ оперативной памяти
Установка и настройка OpenVPN
- Обновите список пакетов:
sudo apt update && sudo apt upgrade -y - Установите OpenVPN и Easy-RSA:
sudo apt install openvpn easy-rsa -y - Создайте директорию для сертификатов:
mkdir -p ~/easyrsa && cd ~/easyrsa - Инициализируйте Easy-RSA:
easyrsa init-pki - Создайте корневой сертификат ЦС:
easyrsa build-ca nopass(нажмитеEnterдва раза) - Генерируйте сертификат сервера:
easyrsa gen-req server nopass - Подпишите сертификат сервера:
easyrsa sign-req server server(введитеyes) - Создайте ключ Diffie-Hellman:
easyrsa gen-dh(процесс займет 2–5 минут) - Скопируйте сертификаты в конфиг OpenVPN:
sudo cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem /etc/openvpn/server/ - Создайте конфигурацию сервера:
sudo nano /etc/openvpn/server/server.conf - Вставьте следующий текст конфигурации:
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt 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 cipher AES-256-CBC auth SHA256 user nobody group nogroup persist-key persist-tun status openvpn-status.log log /var/log/openvpn/openvpn.log verb 3 explicit-exit-notify 1 - Сохраните файл: нажмите
Ctrl+O, затемEnter, затемCtrl+X - Включите IP-форвардинг:
sudo nano /etc/sysctl.conf - Найдите строку
#net.ipv4.ip_forward=1и удалите символ# - Примените изменения:
sudo sysctl -p - Настройте firewall:
sudo ufw allow 1194/udp - Включите NAT для VPN трафика:
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE - Сохраните правила iptables постоянно:
sudo apt install iptables-persistent -y - При запросе выберите
Yesдля IPv4 и IPv6 - Запустите OpenVPN сервер:
sudo systemctl startАдрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. - Включите автозапуск:
sudo systemctl enableАдрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. - Проверьте статус:
sudo systemctl statusАдрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. - Создайте сертификат клиента:
cd ~/easyrsa && easyrsa gen-req client nopass - Подпишите сертификат клиента:
easyrsa sign-req client client(введитеyes) - Создайте конфиг клиента:
nano ~/client.ovpn - Вставьте содержимое:
client dev tun proto udp remote ВАШ_IP_СЕРВЕРА 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key remote-cert-tls server cipher AES-256-CBC auth SHA256 verb 3 - Добавьте содержимое файлов в конец конфига:
- Откройте:
cat ~/easyrsa/pki/ca.crtи скопируйте весь текст - В client.ovpn вставьте между строками
<ca>и</ca> - Повторите для
certиkeyиз client.crt и client.key
- Откройте:
- Скопируйте client.ovpn на клиентское устройство через SCP или вручную
Установка и настройка WireGuard (альтернатива)
- Установите WireGuard:
sudo apt install wireguard wireguard-tools -y - Перейдите в конфиг-директорию:
cd /etc/wireguard - Сгенерируйте приватный ключ сервера:
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey - Создайте конфиг сервера:
sudo nano /etc/wireguard/wg0.conf - Вставьте конфигурацию:
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = (содержимое из privatekey) PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = (публичный ключ клиента) AllowedIPs = 10.0.0.2/32 - Установите права доступа:
sudo chmod 600 /etc/wireguard/wg0.conf - Включите IP-форвардинг (если еще не сделано):
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf && sudo sysctl -p - Откройте порт в firewall:
sudo ufw allow 51820/udp - Запустите WireGuard:
sudo wg-quick up wg0 - Включите автозапуск:
sudo systemctl enable wg-quick@wg0 - Проверьте статус:
sudo wg show - Сгенерируйте ключи клиента:
wg genkey | tee client_privatekey | wg pubkey > client_publickey - Обновите конфиг сервера с публичным ключом клиента (добавьте [Peer] секцию из шага 5)
- Создайте конфиг клиента:
nano ~/client-wg0.conf - Вставьте:
[Interface] PrivateKey = (приватный ключ клиента) Address = 10.0.0.2/32 DNS = 8.8.8.8, 8.8.4.4 [Peer] PublicKey = (публичный ключ сервера) Endpoint = ВАШ_IP_СЕРВЕРА:51820 AllowedIPs = 0.0.0.0/0 - Скопируйте конфиг на клиентское устройство
Проверка и тестирование подключения
- На клиентском устройстве установите OpenVPN Connect (для OpenVPN) или WireGuard приложение
- Импортируйте конфиг: откройте приложение и загрузите файл .ovpn или .conf
- Нажмите кнопку подключения
- Проверьте IP адрес: откройте
https://whatismyipaddress.com— должен быть IP сервера - Проверьте логи сервера:
sudo tail -f /var/log/openvpn/openvpn.log(для OpenVPN) илиsudo wg show(для WireGuard)
Часто задаваемые вопросы
Какой протокол выбрать: OpenVPN или WireGuard? WireGuard быстрее и проще настраивается (код из 4000 строк vs 100000 в OpenVPN), но OpenVPN более универсален и поддерживается на всех платформах с обфускацией трафика.
Почему клиент не подключается? Проверьте открытие портов: sudo ufw status, правильность IP адреса сервера в конфиге клиента и наличие сертификатов в .ovpn файле (все три блока: ca, cert, key).
Как добавить нового клиента? Повторите процесс генерации сертификата (шаги 23–25 для OpenVPN или 13–15 для WireGuard) с новым именем и добавьте [Peer] блок в конфиг сервера.