- Ubuntu → Настраиваем OpenVPN клиент Linux на примере Ubuntu
- Настройка OpenVPN клиента
- Установка
- Windows
- Linux CentOS
- Linux Ubuntu
- Android
- Настройка
- Пример конфигурационного файла
- Параметры конфигурационного файла
- Сертификаты
- Настройка OpenVPN подключения Linux
- Установка пакета OpenVPN
- Подключение OpenVPN в командной строке
- Не подключается OpenVPN
- 1. Сервис запущен?
- 2. Открыт порт?
- 3. Соответствуют ли настройки?
- 4. Используете ли правильные ключи?
- 5. Стабильная сеть?
- 6. Проанализируйте лог файл
- 7. Два пользователя одновременно
- 8. Истек срок действия crl
- 9. Сервер перегружен
- Выводы
Ubuntu → Настраиваем OpenVPN клиент Linux на примере Ubuntu
Как и обещал, в выкладываю статью по настройке OpenVPN клиента Linux, мы с вами уже настроили OpenVPN сервер, и нам осталось настроить подключение к нему, иначе для чего он нам нужен, если к нему никто не подключается… С данным мануалом настройка будет весьма проста, эта схема была успешно оттестирована в условиях IT компании и работает по сей день.
Установим пакет OpenVPN:
Поднимем права до root:
Теперь нам необходимо создать конфигурационный файл клиента.
Нам остаётся скачать c OpenVPN сервера, где живет наш удостоверяющий центр, 4 файла:
И положить их в директорию /etc/openvpn рядом с файлом client.conf
т.к. это у нас обычный пользователь, то он должен ходить в нашу локальную сеть, а в интрнет через свое подключение, выясним как ходят пакеты для этого выполним трассировку пакета в локальную сеть:
traceroute 172.16.1.20
traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms
2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms
Видно что пакет ушел на адрес 172.16.10.1 и с интерфеса eth1 в локальную сеть к целевому IP
Выполним трассировку к google.ru, получаем ответ вида:
traceroute google.ru
traceroute to google.ru (173.194.32.159), 30 hops max, 60 byte packets
1 111.111.111.111 (111.111.111.111) 1.360 ms 1.252 ms 1.177 ms
2 46.61.227.225 (46.61.227.225) 1.865 ms 1.271 ms 1.707 ms
3 95.167.90.39 (95.167.90.39) 18.209 ms 95.167.90.37 (95.167.90.37) 18.170 ms 95.167.90.39 (95.167.90.39) 18.496 ms
4 74.125.146.86 (74.125.146.86) 17.827 ms 17.984 ms 17.946 ms
5 216.239.42.97 (216.239.42.97) 17.771 ms 18.058 ms 18.319 ms
6 216.239.42.83 (216.239.42.83) 17.765 ms 216.239.42.49 (216.239.42.49) 19.130 ms 19.004 ms
7 72.14.236.242 (72.14.236.242) 19.287 ms 18.554 ms 18.802 ms
8 173.194.32.159 (173.194.32.159) 18.025 ms 18.269 ms 18.224 ms
Видно что ответ вылетел черз шлюз сети к которой подключен клиент, а не через наш VPN канал
Для обычного пользователя все работает как надо, чтобы проверить под пользователем supersuer нам необходимо положить ключи в директорию openvpn и поменять запись в client.conf указывающих на названия ключа и сертификата
перезапустить OpenVPN клиента и повторить трасисровку пакетов
traceroute 172.16.1.20
traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms
2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms
В локальную сеть пакеты ходят без изменений, тут ничего не поменялось
traceroute google.ru
traceroute to google.ru (173.194.122.248), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 6.115 ms 11.448 ms 11.500 ms
2 222.222.222.222 (222.222.222.222) 11.614 ms 11.649 ms 11.676 ms
3 10.158.192.1 (10.158.192.1) 11.691 ms 11.705 ms 11.719 ms
4 v811.m9-3.caravan.ru (212.24.42.49) 11.729 ms 11.744 ms 11.751 ms
5 msk-ix-gw1.google.com (195.208.208.232) 11.736 ms 15.341 ms 15.350 ms
6 66.249.94.100 (66.249.94.100) 15.346 ms 5.884 ms 8.451 ms
7 72.14.252.22 (72.14.252.22) 49.777 ms 49.787 ms 49.796 ms
8 173.194.122.248 (173.194.122.248) 49.510 ms 49.620 ms 49.671 m
А тут видно что пакет попал на наш OpenVPN сервер и вылетел во внешний мир через интерфейс eth0
Значит и эта маршрутизация работает правильно
На этом я свой опус пожалуй и закончу, если нашли ошибку пишите в личку, возникли вопросы оставляйте их в комментариях.
Источник
Настройка OpenVPN клиента
В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.
Установка
Windows
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для нужной Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Linux CentOS
Устанавливаем репозиторий EPEL:
yum install epel-release
yum install openvpn
Linux Ubuntu
apt-get install openvpn
Android
Установка выполняется из Google Play. Набираем в поиске OpenVPN Connect — нажимаем установить и принимаем условия.
Настройка
После установки программы конфигурационный файл не создается автоматически и его нужно создать вручную.
В системах Windows создаем файл config.ovpn в папке %programfiles%\OpenVPN\config.
* имя файла может быть любым, расширение должно быть .ovpn.
Для создания конфигурационного файла в Linux выполняем команду:
* чтобы служба openvpn автоматически выполняла соединение, необходимо, чтобы конфигурационный файл назывался client.conf.
Пример конфигурационного файла
client
dev tun
proto udp
remote 192.168.0.15 443
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
dh dh2048.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
comp-lzo
verb 0
Параметры конфигурационного файла
| Параметр | Значения | Описание |
|---|---|---|
| client | Строка говорит о том, что конфигурационный файл описывает клиентское подключение (программа сама устанавливает соединение, а не ждет, как сервер). | |
| dev | tap или tun | Выбор виртуального сетевого драйвера. TUN — сетевой уровень модели OSI, оперирует IP-пакетами. TAP — эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. Настраивая OpenVPN клиента, в большинстве случаев, необходимо выбирать tun. TAP необходимо использовать для работы определенных сервисов, например DHCP. |
| dev-node | любая строка | Параметр используется в системах Windows в случаях, если имеется несколько сетевых интерфейсов. Значение этого параметра должно содержать название сетевого подключения, через который должен работать OpenVPN. |
| proto | udp или tcp | Указывает, какой протокол использовать для передачи данных. В большинстве случаев, лучше использовать UDP, так как данный протокол создает меньше нагрузки на сеть. |
| remote | VPN-сервер и порт | Задает сервер, к которому должен подключаться клиент, а также сетевой порт (по умолчанию 1194), на котором OpenVPN принимает запросы. Можно указать несколько строк. |
| remote-random | Если указано несколько строк remote, данный параметр говорит, что необходимо подключаться к удаленным серверам в случайном порядке. | |
| resolv-retry | количество секунд или infinite | Используется в тех случаях, когда в качестве сервера указано доменное имя. Параметр задает время в секундах для повторного переподключения, если не удалось узнать имя сервера. infinite — держать связь с сервером постоянно. |
| nobind | Клиент использует динамический порт для подключения. | |
| user | учетная запись | Задает определенного пользователя для работы клиента (только для UNIX-систем). |
| group | группа | Задает определенную группу для работы клиента (только для UNIX-систем). |
| persist-key | Не перечитывает ключи при перезагрузке сервиса OpenVPN. | |
| persist-tun | Не перечитывает параметры туннеля при перезагрузке сервиса OpenVPN. | |
| http-proxy | сервер прокси и порт | Использовать прокси-сервер для подключения. |
| http-proxy-retry | Переподключаться к прокси-серверу, если связь была разорвана. | |
| http-proxy-timeout | количество секунд | Время, через которое выполнять попытки переподключения к прокси-серверу. |
| mute-replay-warnings | Параметр стоит задавать при использовании беспроводного соединения. Он отключит дублирование предупреждений пакетов. | |
| ca | пут к сертификату | Корневой сертификат удостоверяющего центра. Генерируем на сервере. |
| cert | пут к сертификату | Открытый ключ клиента. Генерируем на сервере. |
| key | пут к сертификату | Закрытый ключ клиента. Генерируем на сервере. |
| dh | пут к сертификату | Ключ с алгоритмом Diffie-Hellman (Диффи-Хеллмана). |
| remote-cert-tls | сервер | Исключает возможность mitm атаки, включая верификацию сертификата сервера. |
| tls-client | Указание на то, что это клиент TLS. | |
| tls-auth | ta.key 1 | Дополнительный уровень аутентификации посредством ключа TLS. |
| float | Удаленный хост может менять IP-адрес в процессе соединения, при этом последнее не будет разорвано. | |
| keepalive | секунд1 секунд2 | Пинговать каждые секунд1 сервер и если в течение секунд2 не будут получены ответные пакеты, перезапустить подключение. |
| cipher | алгоритм | Указывает алгоритм шифрования. Примеры: AES-256-CBC, AES-128-CBC, BF-CBC, DES-EDE3-CBC. |
| comp-lzo | Использовать сжатие. | |
| verb | число от 0 до 9 | Уровень детализации лога. 0 отключает отладочную информацию. |
| mute | число | Указывает сколько лог-сообщений может отображаться для каждой категории события. |
| auth-user-pass | ничего или путь к файлу | Говорит клиенту, что необходима аутентификация. Если не указан путь к файлу, клиент выкинет окно для авторизации, иначе прочитает данные из файла. |
| ipchange | команда или путь к скрипту | Выполняет команду при смене IP. |
| connect-retry | секунд | Переподключиться к серверу через указанное количество секунд, если соединение было разорвано. |
| connect-retry-max | число | Сколько раз повторять соединение, если оно было разорвано. |
| shaper | байт | Задает максимальную скорость передачи данных для исходящего трафика. |
| tun-mtu | число | Задает MTU. |
| status | путь к файлу | Путь к фалу хранения статуса. |
| log | путь к файлу | Путь к лог-файлу. |
| askpass | путь к файлу | Путь к файлу с паролем для приватного ключа (private key password). |
Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).
Сертификаты
Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.
Источник
Настройка OpenVPN подключения Linux
Эта инструкция покажет, как настроить подключение к SECRETVPN в командной строке Linux. Если Вы хотите, чтобы ваше VPN соединение было доступно в сетевых подключениях среды рабочего стола Gnome или KDE, пожалуйста обратите внимание на следующие инструкции:
Установка пакета OpenVPN
Все команды выполняются от имени суперпользователя. Прежде чем начать, в командной строке наберите sudo –i или su root чтобы получить root доступ к системе.
В Debian, Ubuntu, Linux Mint, Kali Linux выполните следующие команды:
apt-get update && apt-get upgrade
apt-get install openvpn
В RedHat, Fedora, CentOS, Oracle Linux.
Так как пакет OpenVPN не доступен в стандартном репозитории RedHat, прежде чем устанавливать OpenVPN необходимо добавить Extra Packages for Enterprise Linux (EPEL) репозиторий. Для этого выполните в терминале:
yum install epel-release -y
После чего установите OpenVPN с помощью команды:
yum install openvpn -y
Подключение OpenVPN в командной строке
Скачайте нужный файл конфигурации ovpn, который мы выслали на вашу электронную почту когда Вы создавали подписку. Вы также можете скачать и/или сгенерировать файлы конфигурации в личном кабинете. В нашем случае это будет файл nl.secretvpn.net.ovpn в каталоге /home/user
Чтобы подключить OpenVPN, выполните команду openvpn [путь к файлу конфигурации скаченному из почту] с правами root или используйте sudo, например, так:
sudo openvpn /home/user/nl.secretvpn.net.ovpn
Для успешной установки соединения, укажите имя пользователя (вида svpn***) и пароль Вашей VPN подписки, которые мы выслали на вашу электронную почту.
Обратите внимание! Логин и пароль VPN подписки отличаются от логина и пароля для личного кабинета на сайте secretvpn.net.
Остались вопросы? Напишите нам:
Источник
Не подключается OpenVPN
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
#ping 5
#ping-restart 10
Как правило, это решает проблему с сетью и программа может нормально работать даже в сети, которая постоянно разрывается. Также можно не удалять эти строки полностью, а просто увеличить их значения.
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 вам приходилось решать? Напишите свои варианты решений в комментариях!
Источник