Linux openvpn client автозапуск

How to auto start openvpn (client) on Ubuntu CLI?

The openvpn package comes with an init script /etc/init.d/openvpn . This script automatically sets up connection for every .conf (mind the extension) file in /etc/openvpn .

If you install OpenVPN via an RPM or DEB package on Linux, the installer will set up an initscript. When executed, the initscript will scan for .conf configuration files in /etc/openvpn, and if found, will start up a separate OpenVPN daemon for each file.

I got a bit stuck on this and ended up writing out all of the instructions for setting it up with systemd manually.

This worked for me using Ubuntu 16.10 and openvpn 2.3.11

Setting up your vpn to run from bash

These examples use expressvpn but most would work the same way

Download your vpn provider’s ovpn config file e.g. my_express_vpn_amsterdam_2.ovpn

move that to /etc/openvpn/ and rename it to end in .conf

sudo mv ~/Downloads/my_express_vpn_amsterdam_2.ovpn /etc/openvpn/amsterdam-2.conf 

Your VPN provider will provide you with a username and password for connecting over openvpn. Save the userename and then password each on their own line

sudo vim /etc/openvpn/express-vpn-crednetials.txt # add these lines YOUR_VPN_USERNAME YOUR_VPN_PASSWORD # save the file 

now edit /etc/openvpn/amsterdam-2.conf look for a line that says auth-user-pass and replace it with the path to your credential file

auth-user-pass /etc/openvpn/express-vpn-crednetials.txt 

Test your config! Start openvpn like this

sudo openvpn --config /etc/openvpn/amsterdam-2.conf 

openvpn should connect without asking for username or password

Remove existing (broken) service config for openvpn

sudo rm /etc/systemd/system/multi-user.target.wants/openvpn.service 

Set up openvpn to run as a systemd service

The config that came with openvpn was broken so I removed it and created a new one based on this answer

Create systemd service for openvpn

sudo vim /usr/lib/systemd/system/openvpn@service 
[Unit] Description=OpenVPN Robust And Highly Flexible Tunneling Application On %I After=syslog.target network.target [Service] PrivateTmp=true Type=forking PIDFile=/var/run/openvpn/%i.pid ExecStart=/usr/sbin/openvpn --daemon --writepid /var/run/openvpn/%i.pid --cd /etc/openvpn/ --config %i.conf [Install] WantedBy=multi-user.target 

the %i is used as a wildcard so that this service can be used for multiple vpn configurations. Set it up for the amsterdam-2.conf file that we created earlier

sudo systemctl start openvpn@amsterdam-2.service 

the systemd service should now be running on the amsterdam vpn. check its status like so

sudo systemctl status openvpn@amsterdam-2.service 

you should see several lines of output ending in Initialization Sequence Completed and your vpn should be running.

Читайте также:  Linux монтирование флешки консоль

Hope this helps! related reading:

Источник

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

Обновлено

Обновлено: 09.12.2021 Опубликовано: 20.07.2017

В данной инструкции подробно описан процесс настройки клиента OpenVPN на примере операционных систем Windows и Linux. Также, с ее помощью можно настроить скиента на Android.

Установка

Windows

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

Скачиваем OpenVPN для Windows

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

Linux CentOS

Устанавливаем репозиторий EPEL:

Linux Ubuntu

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).
Читайте также:  Package list kali linux

Наиболее полный и актуальный список параметров для OpenVPN можно получить командой openvpn —help (в Linux и Windows).

Сертификаты

Клиентские сертификаты генерируются на стороне сервера. Процедура следующая.

Источник

Guide: Configure OpenVPN to autostart on systemd Linux

Configure Openvpn Autostart Linux Image

The perks of having an automatic VPN connection are many. But notably, it will keep your Internet traffic private. The newer systemd Linux forces us to configure our startup script for OpenVPN to make it work. This guide depends on this OpenVPN setup. Learn how to configure OpenVPN to autostart on systemd Linux! [Read: Guide: Configure OpenVPN autostart Linux connection]

Requirements for OpenVPN autostart on systemd Linux

Before you begin setting up OpenVPN to autostart on systemd Linux, you’ll need a few prerequisites:

  • OpenVPN
  • A VPN provider
  • A Linux distribution (distro) with systemd it could be Debian 8 or newer (I will be using OpenVPN on OSMC, which is Debian-based)

Configure OpenVPN for systemd Linux

Now, let’s configure OpenVPN to autostart for systemd Linux. First open a terminal. We need to change the default behavior of OpenVPN. With the editor Nano, run the command:

sudo nano /etc/default/openvpn

Remove the ‘#’ infront of ‘AUTOSTART=»all»‘ so that OpenVpn allows to start the .conf files. After that press «Ctrl X» to exit Nano and answer «Y» to save the file.

Configure Openvpn To Autostart - Systemd Linux

Run the following commands to show a list of possible vpn.ovpn files:

Next, you need to decide which vpn.ovpn file you are going to auto connect to. The one you pick needs to be renamed to client.conf, because that’s the standard way of doing it in the OpenVPN world. Run this command:

sudo cp vpnserver.ovpn client.conf

Where it says «vpnserver.ovpn» replace it with an existing file, the name will differ from provider to provider. For example, us123.nordvpn.com.tcp443.ovpn if you’re using a VPN which requires you to login, like NordVPN does. Use this fix:

Читайте также:  Руководстве системного администратора linux

Change the line that says:

Press «Ctrl X» and «Y» in order to save your changes.

Insert your username on the first line and password one the second then «Ctrl X» and «Y» to save the file.

Surfshark VPN Exclusive Offer — 82% off ($2.39/month):
♦ Hide your browsing (no logs), Anonymize Streaming and Downloads
♦ Wireguard Protocol support for VPN.
♦ Circumvent Geo/Country Restrictions and access worldwide content
♦ Works on Windows, Mac, Linux, Android, iOS, Router, and more
♦ 1 TB Encrypted Storage
♦ Money back guarantee — Sign Up Now

OpenVPN for systemd Linux: Enable the systemd service

Run the following command to enable the OpenVPN service to run while booting:

sudo systemctl enable openvpn@client.service
sudo systemctl daemon-reload

Start OpenVPN with the following command:

sudo service openvpn start
sudo systemctl start openvpn@client.service

Stop OpenVPN with the following command:

sudo service openvpn stop
sudo systemctl stop openvpn@client.service

Now it’s time to test if it worked. Reboot the system with the command:

To check the external IP run the command:

If ipinfo.io returns your VPN’s external ip, you’re done!

Configure OpenVPN to autostart using Linux: Final thoughts

That’s how to set up OpenVPN autostart on systemd Linux. VPNs are available for multiple platforms and devices. IPVanish VPN is compatible with Fire TV devices. You can also install OpenVPN using Docker for a private VPN server. Considering a VPN? Learn if a VPN or DNS is right for you.

Which VPNs do you recommend, and which Linux ditros are you using them on?

  • Feeling generous? Become a Sponsor (discounted options) or a Patron. You will receive privileges on our Discord Server.
  • Just want to thank us? Buy us a Coffee or a Ko-Fi.
  • May be another day?Shop on Amazon using our links. Your prices won’t change but we get a small commission.
  • Don’t feel like spending? You can still show your support by sharing this post, linking to it in forums, or even commenting below.

Jens

Hey i like to tinker with Linux and other projects involving computers.

Источник

Оцените статью
Adblock
detector