Openvpn ubuntu не работает

Обновлено: 04.07.2024

Я пытался использовать сетевой менеджер с плагином OpenVPN и тоже пытался в терминале с ovpn.conf файлом.

Все подключается (как говорится connection established ) в терминале, но нет доступа в интернет.

Я могу пинговать что угодно, даже шлюз туннеля.

Вот что я пробовал

  • отключить UFW;
  • перепробовал несколько конфигурационных файлов;

Тот же результат.

Пробовал галочкой опцию в VPN configaration > IPv4 > routes > use this connection only for resources on its network . После этого интернет снова заработал и VPN-шоу подключилось. Но мой трафик не зашифрован, а IP-адрес и местоположение остаются прежними. Наконец, я попробовал --redirect-gateway вариант, все еще бесполезный.

Я вне моей лиги сейчас. Пожалуйста помоги. Спасибо за чтение!

Вы хотите, чтобы весь трафик проходил через VPN-туннель? спасибо за комментирование и yes.imean мое местоположение осталось прежним. Пожалуйста, поставьте вывод в вопросе от команды, traceroute 8.8.8.8 когда вы подключены к vpn, а также введите команду формы, route -n когда вы подключены. я добавил, что выходной сигнал трассировки никуда не ушел, поэтому я покончил с этим

Я использую сетевой менеджер gnome с плагином OpenVPN Network Manager.

Вы можете установить его с помощью:

Мое соединение работает нормально, если я пытаюсь напрямую с OpenVPN. Но если я пытаюсь использовать Network Manager, он работает, но нет доступа в Интернет.

Вкладка IPv4

Тогда отметьте Use this connection only for resources on its network .

Маршруты IPv4

Нажмите Ok , затем Save и переподключите.

Хотя это позволяет доступ в Интернет, ваш доступ в Интернет не будет зашифрован, если вы это сделаете, правильно? Я попробовал это, и это показывало мой фактический IP в тестах браузера. @ gammapoint, я полагаю, вы используете VPN для подключения к сети, которая требует VPN. В этом случае ваш контент должен быть зашифрован только для связи с сетью VPN, а не для всего Интернета. И это не должно менять ваш IP с провайдером (вы получите дополнительный IP для VPN-соединения). Ценю ответ @RaelGugelminCunha. Я использую VPN для личной конфиденциальности (используя провайдера PIA), поэтому скрытый IP-адрес во время серфинга в Интернете является основной целью.

я исправил openvpn нет проблемы с интернетом также

сначала полностью удалите openvpn и autoremove после этого, затем добавьте ppa, как показано в ссылке, и выполните команды одну за другой, тогда yu должно быть в порядке .. и если нет проблем с dns, добавьте opendns в resolv.conf в его 202.67.222.222 и 208.67. 220.220 ссылка

Это работает вместе с пакетом network-manager-openvpn-gnome, отлично, спасибо! да я никогда не нашел рабочую ветку для этого. но приятно знать, что моя наполовину вмешивающаяся помощь кому-то помогает. очень ценимый человек: ') Если вы не хотите маршрутизировать нормальный трафик через vpn, тогда абсолютно не нужно устанавливать дополнительные ppa и другие сборки. Текущий плагин networkmanager отлично работает через графический интерфейс: myopenvpn -> Edit -> IPv4 Settings> Routes> enable « Использовать это соединение только для ресурсов в своей сети ». Ответ от @Rael должен быть принятым.

Проблема делает маршруты. Чтобы быть точным, маршрут по умолчанию.

Вторая проблема - это маршрут по умолчанию gw

0.0.0.0 10.211.1.2 128.0.0.0 UG 0 0 0 tun0

Проблема может быть исправлена ​​путем добавления маршрута вручную или проверки конфигурации на сервере vpn.

Чтобы установить ручной маршрут для всего трафика, перейдите tun0 после подключения к команде vpn put.

Подождите, вы можете добавить маршрут по умолчанию или по умолчанию, если вы хотите, чтобы трафик шел wlan0 с командой

sudo ip route add default via 172.16.156.65

или для маршрутизации трафика через vpn

sudo ip route add default via 10.211.1.2

После этого вы можете добавить еще маршрут

Пример, если вы хотите перейти 106.158.15.233 через wlan0

172.16.156.65 адрес вашего роутера

10.211.1.2 адрес вашего сервера vpn

А теперь что-то совершенно другое. Удалите все настройки для vpn, client, config in NM . После этого перезагрузите компьютер. Это поддержит нас в начале. Мы получим четкую таблицу маршрутизации. Попробуйте Аган с NM . Когда вы подключитесь, дайте мне выход из route -n . сделал это и дал вывод в РЕДАКТИРОВАТЬ 2 спасибо за терпение со мной .. просто не могу получить интернет через vpn и не хочу возвращаться к окнам. Я должен упомянуть еще раз, что он работал несколько раз, а не без подключения Хорошо, теперь мы чисты. Ваш Wi-Fi роутер включен 172.16.156.65 . Теперь создайте соединение с сервером vpn в NM . NM Затем перейдите, vpn затем добавьте адрес vpn-сервера, пользователя, пароль. Если это работа, то это если нет. Когда вы подключены сделать, route -n мы должны видеть с маршрутом добавить vpn.

Я знаю, что это старый, но у меня нет рабочего решения этой проблемы из этой темы, и у меня есть похожая проблема.

Здесь моя проблема. Я загрузил ключи openVPN со своего роутера. установленный на виртуальной машине Linuxmint и ElementaryOS, как на виртуальной, так и на хост-ОС на ноутбуке. Обе версии создают одну и ту же проблему. VPN соединяется, но трафик через него абсолютно отсутствует. Включение «использовать это соединение только для ресурсов в своей сети» совершенно бесполезно, и я все равно не получаю доступ к сетевым ресурсам vpn. сотрите это.

Вот что я сделал .. Я заметил, что некоторые говорили, что когда они подключались через командную строку, vpn, казалось, работал. проблема должна заключаться в том, что вы не можете импортировать конфигурацию openVPN. так что я вытащил свой верный текстовый редактор, открыл файл openvpn .conf. Я заметил, что в профиле соединения openvpn есть вкладка «Дополнительно». с множеством различных вариантов. Поэтому я попытался перевести все параметры конфигурации на вкладку «Дополнительно» и что вы знаете . это сработало .

Так что я сделал это снова на ноутбуке с другим дистрибутивом .. Я изменил параметры Один за другим на этот раз, проверяя vpn каждый раз, и vpn начал работать после того, как я настроил сжатие.

В разделе «Параметры подключения VPN»> «Дополнительно»> «Проверить» использовать сжатие данных LZO (я установил адаптивный), туннель начал работать без проблем, и «Мой IP» отображается как внешний IP-адрес маршрутизатора vpn.

Там нет никаких специальных конфигов или брандмауэра или что-нибудь в моем опыте. Просто нужно настроить все параметры так же, как файл конфигурации, и вы можете использовать встроенный сетевой менеджер для его обработки.

OpenVPN - очень популярная программа для организации виртуальных сетей и VPN-серверов. Это очень удобно, так как вы можете объединить несколько компьютеров, находящихся в разных концах мира в одну виртуальную локальную сеть и для операционной системы всё будет выглядеть так, как будто эти компьютеры действительно находятся в одной локальной сети.

Но иногда сеть перестает работать или не получается её настроить. В этой статье мы разберём несколько причин, почему не подключается OpenVPN, с которыми лично сталкивался я и которые мне приходилось исправлять. Возможно, одна из них и привела к вашей поломке.

1. Сервис запущен?

Если вы только что установили и настроили OpenVPN, убедитесь, что его сервис запущен и работает. Если сервер не запущен, то, как правило, при попытке подключения вы будете получать ошибку "Connection refused". Для проверки выполните:

sudo systemctl status openvpn

В некоторых случаях сервис запускается с определённым конфигом. Тогда для проверки нужно указать этот конфигурационный файл:

sudo systemctl status openvpn@имя_конфига


Также вы можете посмотреть, слушает ли сервис подключения на порту OpenVPN:

ss -tlpn | grep openvpn


2. Открыт порт?

Если сервис запущен и слушает подключения на 1194 порту, а вы всё ещё не можете подключится, убедитесь, что этот порт не защищён брандмауэром на сервере. Для этого просто пробуем подключится к нему с помощью telnet:

telnet ip_сервера 1194

Когда всё хорошо, утилита сообщит об успешном подключении:


Если вы получаете такую же ошибку - "Connection refused" - или просто долго идёт подключение, но сервис запущен, значит порт закрыт. Открыть порт в Ubuntu можно с помощью команды:

sudo ufw allow 1194

sudo firewall-cmd --zone=trusted --add-service openvpn
sudo firewall-cmd --zone=trusted --add-service openvpn --permanent

Теперь можете снова попробовать подключаться к вашему OpenVPN-серверу и теперь всё должно заработать.

3. Соответствуют ли настройки?

Если сервер запущен и доступен извне, но вы всё ещё не можете подключится, то проверьте, соответствуют ли клиентская сторона настройкам сервера. Обратите внимание на тип подключения - tcp это или udp? Также обратите внимание на настройки шифрования и сжатия, особенно tls и comp-lzo. Все настройки, касающиеся подключения, должны быть одинаковыми как в конфигурационном файле клиента, так и сервера.

4. Используете ли правильные ключи?

Если вы подписывали ключи вручную, без использования какого-либо автоматического скрипта настройки OpenVPN, и поэтому они находятся в отдельных файлах от клиентского конфигурационного файла, тогда проверьте, используете ли вы правильные ключи и правильно ли они подписаны. Обычно при проблемах с ключами всё это очень хорошо видно в лог-файле OpenVPN. Но об этом позже. Попробуйте подписать ключи ещё раз.

5. Стабильная сеть?

Если OpenVPN подключается, но подключение постоянно разрывается, причиной этому может стать нестабильная сеть. Если вы знаете, что сеть у вас не очень стабильная или сильно загружена, уберите эти опции из конфигурационного файла клиента:

sudo vi /etc/openvpn/server.conf

Как правило, это решает проблему с сетью и программа может нормально работать даже в сети, которая постоянно разрывается. Также можно не удалять эти строки полностью, а просто увеличить их значения.

6. Проанализируйте лог файл

Если вам всё ещё не удалось выяснить, почему не работает подключение, значит это что-то более серьёзное и без анализа лог-файла вам не обойтись. При подключении в терминале клиента вы обычно будете получать примерно одну и ту же ошибку:

SIGUSR1[soft,connection-reset] received, process restarting


Более подробную информацию можно взять из лог-файла сервера. Лог-файл настраивается директивой log-append в конфигурационном файле сервера, обычно это /var/log/openvpn.log.

По умолчанию уровень логирования равен трём. На этом уровне вы мало что сможете понять. Вам нужен уровень 9, максимальный. Поэтому откройте конфигурационный файл и приведите настройки логирования к такому виду:

log-append /var/log/openvpn.log
verb 9

Теперь перезапустите OpenVPN:

sudo systemctl restart openvpn@имя_конфига

Откройте лог-файл и попробуйте снова подключится:

tail -f /var/log/openvpn.log

Здесь вы увидите очень много информации, просмотрите её внимательно и найдите, где именно находится проблема. Обычно программа сама говорит где проблема и как её решить. Главное, потом не забудьте вернуть значение параметра verb по умолчанию (3) иначе лог-файл очень быстро займёт всё свободное место на жёстком диске.

7. Два пользователя одновременно

Если по одному и тому же конфигурационному файлу пытаются подключится два или больше пользователей одновременно, то OpenVPN примет только одно подключение, а все остальные будет сбрасывать. Это поведение можно изменить, добавив к конфигурации сервера строчку:

Но лучше так не делать и создавать для каждого пользователя или устройства отдельный конфигурационный файл, тогда можно будет просто отследить, кто и когда подключался.

8. Истек срок действия crl

CRL - это список отозванных сертификатов. Этот файл имеет свой срок действия, и он может истекать. Если это произойдёт, то в логе вы найдёте ошибку "CRL has expired". Для быстрого её решения можно просто закомментировать строчку:

Но тогда отозванные сертификаты перестанут быть отозванными. Другой вариант - это создать этот файл заново. Если у вас установлен пакет скриптов EasyRSA, который, обычно, автоматически устанавливается вместе с OpenVPN, то сделать это очень просто. Перейдите в папку со скриптами:

Затем скопируйте полученный файл в папку с файлами OpenVPN:

cp /etc/openvpn/easy-rsa/pki/crl.pem /etc/openvpn/crl.pem

Готово, теперь у вас всё будет работать.

9. Сервер перегружен

Если вы не можете подключится или подключение разрывается, причиной этому может стать недостаточное количество ресурсов на сервере. Убедитесь, что сервер ничем не перегружен, а на жёстком диске есть свободное место.

Выводы

Сегодня мы разобрали несколько причин, почему может возникнуть ошибка "не удалось подключиться к OpenVPN". Конечно, это только самые простые проблемы, и при более серьёзном использовании программы можно столкнутся с более крупными проблемами. Какие казусы с подключением к OpenVPN вам приходилось решать? Напишите свои варианты решений в комментариях!

Для удобства настройки заходим под суперпользователем:

Подготовка Ubuntu

Обновляем установленные пакеты:

apt-get update && apt-get upgrade

Устанавливаем утилиту для синхронизации времени:

apt-get install chrony

Разрешаем ее автозапуск и стартуем сервис:

systemctl enable chrony --now

Установим правильную временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере московское время.

Если в нашей системе используется брандмауэр, открываем порт, на котором будет слушать OpenVPN:

iptables -I INPUT -p udp --dport 443 -j ACCEPT

* в данной инструкции предполагается, что мы настроим VPN-сервер на UDP-порту 443, однако, по-умолчанию, OpenVPN работает на порту 1194.

Для сохранения правила используем iptables-persistent:

apt-get install iptables-persistent

Установка, настройка и запуск VPN-сервера

Обязательные шаги для развертывания сервиса — установка программного обеспечения, генерация сертификатов, настройка OpenVPN. Рассмотрим эти процессы по шагам.

Установка OpenVPN

Устанавливаем необходимые пакеты следующей командой:

apt-get install openvpn easy-rsa

Создание сертификатов

Создаем каталог, в котором разместим готовые сертификаты для OpenVPN:

mkdir -p /etc/openvpn/keys

Создаем каталог, в который будем помещать все сгенерированные сертификаты:

Переходим в созданный нами каталог:

Скопируем в него шаблоны скриптов для формирования сертификатов:

cp -r /usr/share/easy-rsa/* .

Чтобы ускорить процесс создания ключей, откроем на редактирование следующий файл:

и приведем его к следующему виду:

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.

Запускаем отредактированный файл на исполнение:

Почистим каталог от старых сертификатов:

Для генерирования сертификатов необходим конфигурационный файл openssl.cnf — по умолчанию, он отсутствует, но есть файл openssl-1.0.0.cnf. Создаем на него симлинк:

ln -s openssl-1.0.0.cnf openssl.cnf

* в каталоге /etc/openvpn/easy-rsa может быть несколько разных версий конфигурационного файла openssl-x.x.x.cnf. Чтобы узнать точное имя файла, вводим команду ls /etc/openvpn/easy-rsa.

Следующие действия будут записеть от версии OpenVPN. Более новая позволяет создавать сертификаты на основе Easy RSA 3, старая работает на базе 2-й версии. Понять, какой вариант наш можно посмотрев на содержимое каталога easy-rsa:

Либо мы увидим в нем утилиту easyrsa (новая версия), либо набор утилит, начинающихся на build.

Рассмотрим процесс формирования сертификата с использованием как RSA3, так и RSA2.

а) Если используется новая версия (утилита easyrsa)

1. Инициализируем PKI:

2. Создаем корневой сертификат:

* после вводим дважды пароль.

На запрос «Common Name» можно просто нажать Enter:

Common Name (eg: your user, host, or server name) [Easy-RSA CA]:

3. Создаем запрос на сертификат для сервера:

./easyrsa gen-req server nopass

* nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.

На запрос «Common Name» можно просто нажать Enter:

Common Name (eg: your user, host, or server name) [server]:

4. Генерируем сам сертификат:

./easyrsa sign-req server server

После ввода команды подтверждаем правильность данных, введя yes:

и вводим пароль, который указывали при создании корневого сертификата:

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:

Готово. Ключ для сервера создан.

5. Формируем ключ Диффи-Хеллмана:

Создаем ta-ключ командой:

openvpn --genkey --secret pki/ta.key

Скопируем созданные ключи в рабочий каталог:

cp pki/ca.crt /etc/openvpn/keys/

cp pki/issued/server.crt /etc/openvpn/keys/

cp pki/private/server.key /etc/openvpn/keys/

cp pki/dh.pem /etc/openvpn/keys/

cp pki/ta.key /etc/openvpn/keys/

б) Если используется старая версия (утилиты build-)

1. Генерируем последовательность центра сертификации:

На все запросы нажимаем Enter.

2. Запускаем build-dh.bat (сертификат с использованием алгоритма Диффи-Хеллмана):

* команда может выполняться долго — это нормально.

3. Генерируем сертификат для сервера:

* где server — имя сертификата; на все запросы нажимаем Enter.

В конце подтверждаем два раза корректность информации вводом y:

Certificate is to be certified until Aug 8 21:12:24 2031 GMT (3650 days)
Sign the certificate? [y/n]: y

1 out of 1 certificate requests certified, commit? [y/n] y
Write out database with 1 new entries
Data Base Updated

Создаем ta-ключ командой:

openvpn --genkey --secret keys/ta.key

Скопируем созданные ключи в рабочий каталог:

cp keys/ca.crt /etc/openvpn/keys/

cp keys/server. /etc/openvpn/keys/

cp keys/dh2048.pem /etc/openvpn/keys/dh.pem

cp keys/ta.key /etc/openvpn/keys/

Настройка OpenVPN-сервера

Создаем конфигурационный файл:

И вставляем в него следующее:

local 192.168.0.15
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo

  • local — IP-адрес, на котором будет обрабатывать запросы OpenVPN;
  • port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных. Порт 1194 является стандартным для OpenVPN).
  • proto — используемый транспортный протокол.
  • dev — виртуальный сетевой адаптер, который будет создан для работы OpenVPN.
  • ca — путь до сертификата корневого центра сертификации.
  • cert — путь до открытого сертификата сервера.
  • key — путь до закрытого сертификата сервера.
  • dh — путь до ключа Диффи - Хеллмана.
  • tls-auth — путь до tls-ключа.
  • server — задаем IP-адрес сервера в сети VPN.
  • ifconfig-pool-persist — путь к файлу для хранения клиентских IP-адресов.
  • keepalive X Y — каждые X секунд отправляется ping-запрос на удаленный узел. Если за Y секунд не получено ответа — перезапускать туннель.
  • max-clients — максимум одновременных подключений.
  • persist-key — не перезагружать ключи при повторной загрузки из-за разрыва соединения.
  • persist-tun — не изменять устройства tun/tap при перезапуске сервера.
  • status — путь до журнала статусов.
  • log-append — путь до файла лога с дополнительным выводом информации.
  • verb — уровень логирования событий. От 0 до 9.
  • mute — ограничение количества подряд отправляемых в лог событий.
  • daemon — работа в режиме демона.
  • mode — в каком режиме работает openvpn (сервер или клиент).
  • tls-server — указывает, что данный сервер работает с использованием TLS.
  • comp-lzo — использовать сжатие.

Создадим каталог для логов:

Разрешаем автоматический старт сервиса vpn и запускаем его:

systemctl enable openvpn@server --now

Настройка OpenVPN-клиента

Сертификат должен быть сформирован на сервер, после чего перенесен на клиентское устройство. Рассмотрим процесс подробнее.

На сервере

Создадим каталог, куда поместим сертификаты для обмена:

* сертификаты будут скопированы в каталог /tmp для удобства их переноса на клиентский компьютер.

Переходим в каталог easy-rsa:

Создаем системные переменные, настроенные ранее в файле vars:

Как в случае формирования сертификата для сервера, наши следующие шаги зависят от версии RSA.

а) Для новой версии (easyrsa)

Создаем сертификат для клиента:

./easyrsa build-client-full client1 nopass

Вводим пароль, который указывали при создании корневого сертификата:

Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:

Скопируем ключи во временную директорию:

cp pki/issued/client1.crt pki/private/client1.key pki/ca.crt pki/ta.key /tmp/keys/

Разрешим доступ на чтения всем пользователям:

chmod -R a+r /tmp/keys

б) Для старой версии (build)

Создаем сертификат для клиента:

* на все запросы отвечаем Enter.

В конце отвечаем на два вопроса утвердительно:

Certificate is to be certified until Aug 8 21:49:30 2031 GMT (3650 days)
Sign the certificate? [y/n]: y

1 out of 1 certificate requests certified, commit? [y/n] y
Write out database with 1 new entries
Data Base Updated

Скопируем ключи во временную директорию:

cp keys/client1. keys/ca.crt keys/ta.key /tmp/keys/

Разрешим доступ на чтения всем пользователям:

chmod -R a+r /tmp/keys

На клиенте

Клиент OpenVPN может быть установлен на Windows, Linux, Android и Mac OS. Мы рассмотрим пример работы с Windows.

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Загрузка клиента openvpn для Windows

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее файлы ca.crt, client1.crt, client1.key, ta.key из каталога /tmp/keys на сервере, например, при помощи программы WinSCP.

После переноса файлов, не забываем удалить ключи из временного каталога на сервере:

Теперь возвращаемся к компьютеру с Windows, открываем блокнот от имени администратора и вставляем следующие строки:

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0

* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы.
* подробнее про настройку клиента OpenVPN.

Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Запуск подключения openvpn-клиента к серверу

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Доступ к локальной сети

Для настройки доступа к локальной сети, воспользуйтесь инструкцией Настройка доступа к локальной сети клиентам OpenVPN в Linux.

Аутентификация пользователей

Позволяет требовать от пользователя ввод логина и пароля при каждом подключении. Также идентификация каждого пользователя необходима для уникальной идентификации каждого из них и выдачи разных IP-адресов.

Настройка на сервере

Открываем конфигурационный файл openvpn:

И добавляем следующие строчки:

plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so login
tmp-dir /etc/openvpn/tmp

Создаем каталог для временных файлов и задаем на него права:

chmod 777 /etc/openvpn/tmp

systemctl restart openvpn@server

Создаем учетную запись для авторизации:

useradd vpn1 -s /sbin/nologin

Настройка на клиенте

В конфигурационный файл клиента добавляем:

Можно пробовать подключаться.

Если необходимо настроить авторизацию, но автоматизировать вход клиента, открываем конфигурационный файл последнего и строку для авторизации меняем на:

* где auth.txt — файл, в котором мы будем хранить логин и пароль.

Создаем текстовый файл auth.txt в той же папке, где находится файл конфигурации со следующим содержимым:

* где username — логин пользователя, а password — пароль.

Описанный метод аутентификации является базовым и требует наличие обычной системной учетной записи. Если необходима более сложная авторизация на базе LDAP, можно воспользоваться инструкцией

Автоматический запуск клиента

Если необходимо, чтобы клиент OpenVPN запускался при старте операционной системы Windows и подключался к серверу, просто открываем службы и находим OpenVPNService. Переводим его в режим автозапуска:

Настройка службы OpenVPN для автоматического старта

Статические IP для клиентов

На сервере для каждого клиента генерируем свой сертификат. Например, для client2 вводим следующие команды:

После чего переходим к каталог keys, где находятся новые сертификаты и копируем их на клиентский компьютер. Полный список файлов, которые необходимо копировать:

  • ca.crt
  • client2.crt
  • client2.key
  • dh2048.pem
  • ta.key

Также на сервере открываем следующий файл и заносим статический адрес для клиента:

* в данном примере клиент client будет получать IP 172.16.10.4, а client2 — 172.16.10.24.

В конфигурационном файле server.conf должна быть строчка:

systemctl restart openvpn@server

Теперь на клиенте не забываем указать правильные названия файлов в конфигурационном файле клиента:

cert client2.crt
key client2.key

Доступ в Интернет через VPN-сервер

Настройка делает так, что клиенты VPN-сервера начинают использовать последний как шлюз по умолчанию. Таким образом, весь трафик идет через наш сервер.

Открываем на сервере конфигурационный файл:

push "redirect-gateway def1"
push "dhcp-option DNS 77.88.8.8"

systemctl restart openvpn@server

* сервер должен быть настроен в качестве шлюза. Подробнее в инструкции Настройка Интернет шлюза на Ubuntu.

Возможные проблемы при работе с OpenVPN

1. failed to start openvpn robust and highly flexible tunneling application on server

Описание: при запуске сервера получаем данную ошибку.

Причина: как правило, связано с отсутствием сертификата.

Решение: открываем лог /var/log/openvpn/openvpn.log и смотрим, с каким сертификатом проблема. Проверяем, что все файлы скопированы и что мы не забыли сгенерировать все сертификаты.

2. Постоянно разрывается соединение

Описание: с периодичностью от 1 до 5 минут постоянно рвется соединение с сервером. После нескольких минут переподключается.

Причина: как правило, конфликт IP-адресов. Такая ситуация возникает при случаях, когда подключение выполняется с нескольких компьютеров одновременно с одинаковыми данными авторизации (логином и паролем).

Решение: настройте клиента для подключения к серверу с уникальными логином и паролем.

3. ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

Описание: ошибка возникаем при попытке запустить сервис openvpn.

Причина: не загружается модуль tun.

Решение: необходимо перед запуском сервиса openvpn создавать устройство tun. Для этого мы создадим скрипт, который будет создавать устройство при запуске сервера.

Создаем каталог, в который поместим скрипт:

Создадим сам скрипт:

/bin/mkdir /dev/net
/bin/mknod /dev/net/tun c 10 200

* данный скрипт создает каталог /dev/net, а в нем — устройство tun.

Создаем юнит для автозапуска скрипта:

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/scripts/tun.sh"

Перечитываем изменения в systemd:

Разрешаем автозапуск юнита tun и стартуем скрипт:

systemctl enable tun --now

Теперь можно запустить openvpn:

systemctl start openvpn@server

Перезагружаем сервер, чтобы убедиться а работе сервиса после старта компьютера.

В этой статье я покажу как настроить сервер VPN с помощью OpenVPN на Ubuntu 20.04.

Как настроить OpenVPN в системе Ubuntu 20.04

Как настроить OpenVPN в системе Ubuntu 20.04

Требования для настройки:

Мы будем использовать два сервера Ubuntu работающих на версии 20.04:

  • Сервер Центра Сертификации (ЦС), который будет проверять запрос и подписывать сертификаты клиентов.
  • Сервер OpenVPN, на котором мы установим VPN.

Настройка сервера центра сертификации Ubuntu

Рекомендую сохранить автономный сервер в качестве центра сертификации (certificate authority). Делается это из соображений безопасности. Давайте перейдем к настройке сервера центра сертификации.

Сначала убедитесь, что система обновлена. Выполните следующую команду:

Вам нужно будет создать некорневого пользователя для конфигураций сервера центра сертификации.

Теперь дайте пользователю привилегии sudo:

Далее выйдите из системы, а затем снова войдите в систему.

Установка EasyRSA на сервер центра сертификации

Чтобы установить easy-rsa, загрузите инструмент управления PKI с github. Это можно сделать с помощью wget команды:

Затем распакуйте файл tgz:

Чтобы ограничить доступ только для пользователя, используйте:

Теперь переместите EasyRSA в каталог opt

Для этой конфигурации мы будем использовать версию EasyRSA 3.0.8.

Создание сервера центра сертификации с помощью EasyRSA

Первое что требуется сделать это создать файл с именем vars для хранения информации об организации. Для этого мы можем использовать пример файла, доступного в каталоге EasyRSA-3.0.8.

Чтобы перечислить файлы в каталоге EasyRSA, используйте команду:

В терминале вы увидите следующий ответ:

Сделайте копию файла vars.example как vars:

Теперь откройте файл vars и добавьте информацию об организации в конец файла:

$ vim vars
set_var EASYRSA_REQ_COUNTRY "CM"
set_var EASYRSA_REQ_PROVINCE "Littoral"
set_var EASYRSA_REQ_CITY "Douala"
set_var EASYRSA_REQ_ORG "OPEN-SHARE"
set_var EASYRSA_REQ_EMAIL "admin@open-share.com"
set_var EASYRSA_REQ_OU "Com"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Теперь инициализируйте PKI на сервере центра сертификации. После инициализации сервер создаст папку pki.

Теперь мы можем создать корневую пару открытых и закрытых ключей для нашего ЦС. Во время этого процесса вас попросят ввести кодовую фразу для пары ключей. А так же она потребуется, когда вам нужно будет подписать или отозвать сертификат. Но в нашем случае мы будем использовать команду так, чтобы нам кодовая фраза не предлагалась. Вам также будет предложено указать Общее имя (CN), но мы оставим его по умолчанию, нажав клавишу Enter.

Это создаст корневой сертификат с именем ca.crt в каталоге pki и приватным ключом ca.key в каталоге pki/private.

Вот и все наш сервер центра сертификации готов!

Установка и настройка сервера Openvpn

Давайте перейдем ко второму серверу, чтобы установить и настроить openvpn. Вам также потребуется создать некорневого пользователя на этом сервере и предоставить ему соответствующие sudo привилегии.

Чтобы установить openvpn на ubuntu, выполните следующие команды:

$ sudo apt update
$ sudo apt install openvpn

На сервере openvpn утилита easyrsa будет использоваться для генерации запроса сертификата, который будет проверен и подписан сервером центра сертификации (ЦА). Выполните те же действия, что и в предыдущем разделе, чтобы установить Easyrsa.

Теперь распакуйте загруженный файл tgz:

Ограничьте доступ только пользователю:

Переместите EasyRSA-3.0.8 в opt каталог:

Создание PKI на сервере OpenVPN Ubuntu

Теперь нам нужно создать PKI, который поможет запрашивать и управлять сертификатами TLS для клиентов и других серверов, которые будут подключаться к нашей VPN сети.

Эта команда позволяет создать файл vars мы описывали это выше:

Теперь отредактируйте файл vars с помощью утилиты VIM, добавив следующие строки в конце файла:

$ vim vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Чтобы создать папку PKI на сервере openvpn, запустите файл easyrsa сценария:

Вы увидите следующий ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /opt/EasyRSA-3.0.8/pki

Создайте запрос сертификата сервера и сгенерируйте закрытый ключ

Теперь мы сгенерируем закрытый ключ и запросим сертификат на сервере OpenVPN. Далее мы передадим файл запроса сертификата на сервер центра сертификации (ЦА). который будет подписан, чтобы создать необходимый сертификат

Находясь в той же папке, мы можем сгенерировать запрос nopass . Следующая команда создает файл закрытого ключа с именем openvpn-server.key и файл запроса сертификата с именем openvpn-server.req.

$ ./easyrsa gen-req openvpn-server nopass

Вывод в терминале:

Теперь скопируйте файл ключа сервера с именем openvpn-server.key в каталог с именем /etc/openvpn/server.

$ sudo cp /opt/EasyRSA-3.0.8/pki/private/openvpn-server.key /etc/openvpn/server

Затем скопируйте файл запроса сертификата на сервер ЦА (центра сертификации):

$ scp /opt/EasyRSA-3.0.8/pki/reqs/openvpn-server.req malain@192.168.216.108:/tmp

На сервере ЦА перейдите в каталог easyrsa,

Чтобы импортировать запрос, выполните следующую команду:

$ ./easyrsa import-req /tmp/openvpn-server.req openvpn-server

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020


The request has been successfully imported with a short name of: openvpn-server
You may now use this name to perform signing operations on this request.

А теперь подпишите запрос. Поскольку мы подписываем запрос сервера, мы должны использовать директиву server перед общим именем нашего сервера openvpn. Если бы это был запрос клиента, мы должны были бы использовать директиву client вместо server .

Подписать запрос:

$ ./easyrsa sign-req server openvpn-server

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:
subject=
commonName = openvpn-server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Using configuration from /opt/EasyRSA-3.0.8/pki/easy-rsa-4100.IbygpP/tmp.hJY2T5
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName :ASN.1 12:'openvpn-server'
Certificate is to be certified until Jul 1 19:50:36 2023 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /opt/EasyRSA-3.0.8/pki/issued/openvpn-server.crt

Теперь запрос сертификата сервера OpenVPN подписан сервером ЦА, нам нужно передать подписанный запрос и открытый сертификат на сервер OpenVPN.

Теперь мы сгенерируем предварительный общий ключ tls-crypt. Это гарантирует что наш OpenVPN-сервер способен справляться с не аутентифицированным трафиком, сканированием портов и некоторыми атаками, которые могут использовать много ресурсов сервера.

Ответ в терминале:

Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time . +. . . . +. +. +. . +. . ++*++*++*++*

DH parameters of size 2048 created at /opt/EasyRSA-3.0.8/pki/dh.pem

Далее вводим команду

Теперь скопируйте ключ и pem файлы в каталог /etc/openvpn/server:

$ sudo cp ta.key pki/dh.pem /etc/openvpn/server

Создание сертификата клиента и пары ключей

Нам нужно будет создать каталог для хранения сертификатов и ключей клиентов. Обязательно предоставьте разрешение пользователю, не являющемуся пользователем root.

$ sudo mkdir -p /opt/client-configs/keys
$ sudo chown franck:franck -R /opt/client-configs
$ sudo chmod 700 -R /opt/client-configs

Сгенерируйте запрос на сертификат клиента:

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa gen-req my-pc nopass

Ответ в терминале:

Теперь скопируйте клиентский ключ в каталог client-configs:

$ cp pki/private/my-pc.key /opt/client-configs/keys/

Скопируйте файл запроса сертификата клиента на сервер центра сертификации:

На сервере центра сертификации импортируйте CSR:

$ cd /opt/EasyRSA-3.0.8
$ ./easyrsa import-req /tmp/my-pc.req my-pc


Note: using Easy-RSA configuration from: /opt/EasyRSA-3.0.8/vars
Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020


The request has been successfully imported with a short name of: my-pc
You may now use this name to perform signing operations on this request.

Теперь мы должны подписать запрос для клиента, набрав:

Ответ в терминале:

Скопируйте сертификат клиента на сервер openvpn:

Теперь на сервере openvpn нам нужно скопировать все клиентские файлы в каталог клиента, который мы создали ранее.

$ sudo cp /tmp/my-pc.crt /opt/client-configs/keys/

$ sudo cp /etc/openvpn/server/ca.crt /opt/client-configs/keys/

$ cp /opt/EasyRSA-3.0.8/ta.key /opt/client-configs/keys/

Убедитесь в том, что пользователь не является root и имеет разрешения на файлы.

$ sudo chown franck:franck /opt/client-configs/keys/*

Настройка VPN-сервиса

Для настройки VPN сервиса мы должны сделать копию шаблонов

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/

Затем распакуйте файл

$ sudo gzip -d /etc/openvpn/server/server.conf.gz

Далее войдите в папку

Некоторые линии будут заменены, чтобы соответствовать нашей конфигурации::

Таким образом, файл должен выглядеть следующим образом:

$ sudo vim /etc/openvpn/server/server.conf
tls-crypt ta.key
cipher AES-256-CBC
auth SHA256
dh dh.pem
user nobody
group nogroup
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
port 1194
proto udp
explicit-exit-notify 1
cert openvpn-server.crt
key openvpn-server.key

Вы должны активировать переадресацию ip-адресов, отредактировав значение net.ipv4.ip_forward в файле /etc/sysctl.conf.

$ sudo vim /etc/sysctl.conf
net.ipv4.ip_forward=1

Чтобы изменения, внесенные в файл /etc/sysctl.conf, вступили в силу, выполните команду:

Теперь вам нужно разрешить OpenVPN в вашем брандмауэре. Для этого включите маскарад. Для этого вам необходимо определить имя вашего общедоступного сетевого интерфейса:

$ ip route | grep default
default via X.X.X.X dev eth0 proto static

В нашем случае это eth0. Теперь мы должны добавить правила маскарадов в конфигурацию брандмауэра, поэтому добавим строку ниже в верхней части файлов правил:

Теперь давайте отредактируем ufw, чтобы разрешить пересылку пакетов по умолчанию.

$ sudo vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Откройте порт openvpn на брандмауэре:

Чтобы перезапустить службу ufw, введите:

Чтобы включить запуск службы openvpn при запуске системы, введите:

$ sudo systemctl enable openvpn-server@server

Чтобы запустить openvpn, введите:

$ sudo systemctl start openvpn-server@server

Вы можете проверить статус openvpn с помощью:

$ sudo systemctl status openvpn-server@server

Чтобы проверить туннельный интерфейс, введите:

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::c3d9:85d1:e2a9:6b2c/64 scope link stable-privacy
valid_lft forever preferred_lft forever

Настройка vpn-файлов для клиентов

Теперь мы должны скопировать пример конфигурационного файла

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /opt/client-configs/base.conf

Дайте разрешение не корневому пользователю

$ sudo chown franck:franck -R /opt/client-configs/

Отредактируйте файл base.conf

Теперь мы создадим скрипт для генерации сертификатов и зашифрованных файлов на клиенте. Скрипт также сделает копию файла base.conf и соберет все ключи и сертификаты, созданные для клиентов. Для каждого клиента нам потребуется сгенерировать сертификат и ключ перед запуском скрипта

Убедитесь, что сценарий может быть запущен пользователем, не являющимся пользователем root.

$ chmod 700 /opt/client-configs/make_config.sh

Теперь вы можете сгенерировать файл подключения клиента на основе конфигурации ключа клиента и сертификата (my-pc.crt и my-pc.key)

Теперь запустите скрипт за которым следует общее имя используемое для клиента. Он создаст клиентский vpn-файл для использования.

Вы можете проверить результат:

Подключение клиента к OpenVPN-соединению

Установите openvpn клиент. Он будет использоваться для установки vpn-соединения с сервером

$ sudo apt update && sudo apt install openvpn -y

Теперь скопируйте клиентский файл OpenVPN, который находится на сервере. Копировать надо на клиентский компьютер. После этого на клиентском компьютере выполните следующую команду:

$ rsync -av franck@X.X.X.X:/opt/client-configs/files/my-pc.ovpn .

Перед редактированием конфигурационного файла клиента OpenVPN мы должны проверить, используем ли мы resolvconf или systemd-resolved для разрешения DNS

С этим значением nameserver 127.0.0.53 он показывает, что вы используете systemd-resolved. Далее установите пакет, который поможет systemd-resolved использовать VPN для разрешения DNS при подключении.

$ sudo apt install openvpn-systemd-resolved

Теперь мы можем отредактировать файл vpn-клиента, раскомментировав строки, необходимые для systemd-resolved

$ vim my-pc.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Для системы, использующей update-resolv-conf раскомментируйте строки

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Теперь попробуем подключиться к VPN с помощью команды openvpn:

Вы можете проверить информацию ip для туннельного интерфейса

Эта команда покажет IP-адрес туннеля, и мы можем пингануть сервер OpenVPN. С помощью пинга вы поймете подключились вы на сервер или нет.

Заключение

При использовании OpenVPN легко настроить VPN-соединение. Это хорошее решение, если вы хотите настроить VPN на своем облачном сервере без использования какого-либо специализированного ПО.

И успешно - локальные хосты на той стороне доступны, могу подключиться к нем через ssh, например. Но вот беда: сразу после старта клиента не могу никуда зайти через браузер - все страницы оказываются недоступны. До этого ни разу не пользовался openvpn - подскажите хотя бы с чего начать поиск проблемы? Спасибо.


7,869 2 2 золотых знака 9 9 серебряных знаков 35 35 бронзовых знаков попробуйте настроить подключение через графический интерфейс, скорее всего у вас появится возможность через настройки подключиться по VPN с указанием протокола OpenVPN. и там есть галочка, она называется примерно как "Использовать это соединение только для ресурсов этой сети", отмечаете эту галку для вашего VPN-соединения и проблема скорее всего будет решена. также в конфиге можно попробовать добавить строку "route-method exe" (без кавычек) по моему это тоже решает проблему насколько я понимаю эти настройки касаются сервера, а не клента, я прав? в данном случае как настроен сервер не имеет особого значения, так как у вас уже клиент пытается добавить в роутинг данные с сервера, а там видимо запрещено трафик через него гонять (по умолчанию вроде так и работает) и эта галочка дает понять клиенту, чтобы он роутинг добавлял не для всего подряд, а только для IP из сети VPN.. примерно так.

Столкнулся с такой же проблемой. Ubuntu 20.04, OpenVPN, использую настройки через GUI, хотя разницы по проблеме не заметил, запускать через консоль или интерфейс.

Можно предположить, что на это влияют настройки сервера VPN, к которому идет подключение. Он отправляет конфигурацию для автоматической настройки вашей сети (маршруты, DNS, шлюзы) и отсюда появляются проблемы.

Я нашел 4 варианта исправления проблемы, я воспользовался сначала третьим, затем вторым:

Использовать это подключение только для этой сети

  1. Обратиться к админам VPN и сообщить о проблеме. Если это их работа, то они должны помочь. Конфигурация той сети не должна влиять на вашу (ее решаете не вы, а администратор сети, к которой подключаетесь).
  2. В настройках VPN в GUI (если через GUI идет подключение) указать "Использовать это подключение только для ресурсов в этой сети" («Use only for resources on this connection»). Нужные маршруты заработают, и интернет будет работать. НО! Если вы используете не IP-адреса, а именованные адреса серверов, например, myhost.host.local, то они скорее всего не будут работать. Вместо этого, для подключения нужно использовать IP-адреса этих хостов. Чтобы получить IP-адреса, можно использовать команду traceroute <myhost.host.local - имя хоста> , который выведет конечный IP-адрес хоста, если он доступен. Чтобы получить его адрес, у вас должна быть отключена галочка "Использовать это подключение только для ресурсов этой сети". Получив список IP-адресов вы можете указать их в файле /etc/hosts в соответствии с адресом или же везде, где вы используете именованные адреса, заменить их на IP-адреса. Эффект будет такой же, но во втором случае не требуются права root. Вы также можете спросить у администраторов уже готовый список этих именованных хостов и адресов.
  3. Эффекта, который был достигнут в пункте 2, можно достигнуть путем указания конкретных маршрутов для конкретных IP-адресов. Для этого можно воспользоваться той же командой traceroute <hostname> , а также route -n . В результате этих команд вы получите список нужных вам адресов, как в решении 2 и укажите их в маршрутах для настройки сети. Можно также попробовать указать целую подсеть, если для вашей сети это актуально.
  4. Можно в ваш файл конфигурации VPN указать опцию pull-filter ignore "dhcp-option DNS" . В этом случае вы столкнетесь с такими же проблемами как и в пункте 2 и решить их нужно будет также.

Читайте также: