В случае с клиентом, я думаю? Какое программное обеспечение вы используете? OpenVPN или оболочка (например, NetworkManager)?
Лекенштейн
@Lekensteyn, фантик network-manger-openvpn.
Oxwivi
Ответы:
62
network-manager-openvpnне предоставляет такой функциональности, вы должны использовать openvpnнапрямую.
Перейдите --script-security 2 --up /path/to/your/scriptк нему при подключении. Если вы используете файл конфигурации, расположенный по адресу /etc/openvpn/, добавьте следующие строки в ваш файл конфигурации:
script-security 2# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
- уровень безопасности сценария [метод]
Эта директива предлагает контроль на уровне политики за использованием OpenVPN
внешних программ и скриптов. Более низкие значения больше
ограничительные, более высокие значения более допустимы. Настройки для
уровень:
0 - строго не вызывать внешние программы.
1 - (по умолчанию) вызывать только встроенные исполняемые файлы, такие как ifconfig,
IP, маршрут или нетш.
2 - Разрешить вызов встроенных исполняемых файлов и пользовательских
скрипты.
3 - Разрешить передачу паролей в сценарии через среду
переменные (потенциально небезопасные).
--up cmd
Команда оболочки для запуска после успешного открытия устройства TUN / TAP (предварительно
- изменение UID пользователя). Скрипт up полезен для определения
Команды маршрутизации, которые маршрутизируют IP-трафик, предназначенный для частного
подсети, которые существуют на другом конце соединения VPN в
туннель
Сценарий Порядок исполнения
--up Выполняется после привязки сокета TCP / UDP и открытия TUN / TAP.
--down Выполняется после закрытия TCP / UDP и TUN / TAP.
Есть еще события для выполнения скрипта, их можно найти на странице руководства .
Создайте /etc/openvpn/up.shи дайте ему разрешения на выполнение (скажем, 755 или 700). Пример содержимого для добавления адреса IPv6 и маршрута (показан в образовательных целях, не копируйте его напрямую):
#!/bin/sh# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Обратите внимание, что этот upскрипт запускается от имени пользователя root. Если вы не указали параметр a Userи Group, OpenVPN также будет запускать сценарии, такие downкак root.
Если вы не знаете, как использовать openvpn напрямую, добавьте свои текущие сведения о конфигурации: тип соединения (например, сертификаты X509), порт шлюза, LZO-сжатие, принудительное использование TCP, использование устройства-ответчика, шифра, HMAC и TLS. Укажите свои настройки IP тоже, если они не автоматические. Для вашей конфиденциальности, оставьте свои фактические адреса.
Лекенштейн
Хорошо, я решил использовать OpenVPN напрямую (и да, у меня есть файл .conf), но будет ли он автоматически переподключен, если соединение потеряно? И как мне сделать так, чтобы он автоматически подключался при подключении к интернету? И, наконец, я не понял, где я должен добавить строки, которые вы упомянули в ответе.
Oxwivi
Я расширил ответ для openvpnнепосредственного использования . При настройке сервера я заметил, что OpenVPN попытается переподключиться, когда сервер вышел из строя. Не уверен, что OpenVPN продолжает попытки, когда ваш сетевой интерфейс выходит из строя.
Лекенштейн
Моя проблема не в том, когда сетевой интерфейс выходит из строя - он пытается восстановить соединение, когда интернет-соединение потеряно и восстановлено. Я просто хочу подключиться к VPN, когда я получаю подключение к Интернету.
Oxwivi
О, а скрипт распространяется на все VPN соединения? И, пожалуйста, пометьте @Oxwivi при ответе, иначе я не получу уведомление.
Oxwivi
5
На вопрос: «Как я могу связать скрипт с OpenVPN, чтобы он работал при успешном подключении VPN?» Хочу отметить, что Лекенштейн дал отличный ответ . Но в то время, когда его ответ был составлен, ему не хватало некоторой ясности относительно того, как должны предоставляться аргументы командной строки openvpn для запуска openvpn на машине с Ubuntu, особенно для того, чтобы он работал так же после перезагрузок.
Аргументы командной строки Openvpn в Ubuntu:
Естественно, можно запустить openvpn из командной строки с любыми доступными легальными опциями. Но на машине с Ubuntu, если кто-то хочет запустить openvpn с теми же аргументами командной строки после перезагрузки, ему следует рассмотреть возможность редактирования файла /etc/default/openvpn. Изучите следующие строки:
# Optional arguments to openvpn's command line
OPTARGS=""
- уровень безопасности сценария
Эта директива предлагает контроль на уровне политики над использованием OpenVPN внешних
программы и скрипты. Более низкие значения являются более строгими, более высокими
значения более допустимы. Настройки для уровня:
0 - строго не вызывать внешние программы.
1 - (по умолчанию) вызывать только встроенные исполняемые файлы, такие как ifconfig, ip, route,
или нетш.
2 - Разрешить вызов встроенных исполняемых файлов и пользовательских скриптов.
3 - Разрешить передачу паролей в сценарии через переменные среды
(потенциально небезопасно).
Выпуски OpenVPN до v2.3 также поддерживали флаг метода, который указывал, как
OpenVPN должен вызывать внешние команды и скрипты. Это может быть либо execve
или система. Начиная с OpenVPN v2.3 этот флаг больше не принимается. В большинстве * никс
В средах подход execve () был использован без каких-либо проблем.
Некоторые директивы, такие как --up, позволяют передавать параметры во внешний скрипт.
В этих случаях убедитесь, что имя скрипта не содержит пробелов или
анализатор конфигурации захлебнется, потому что не может определить, где находится скрипт
имя заканчивается и начинаются параметры скрипта.
В сочетании с сокращенным разделом --up
--up cmd
Запустите команду cmd после успешного открытия устройства TUN / TAP (изменение UID до пользователя).
cmd состоит из пути к сценарию (или исполняемой программе), по желанию
по аргументам. Путь и аргументы могут быть в одинарных или двойных кавычках и / или
экранируется с помощью обратной косой черты и должен быть разделен одним или несколькими пробелами.
Пример:
На моей машине с openpvn server.conf в моем /etc/default/openvpnфайле есть следующие строки :
Кстати, nat.sh устанавливает трансляцию сетевых адресов для маршрутизации трафика частной сети от клиентов openvpn к общедоступному Интернету; что хорошо, когда человек не доверяет общедоступной точке доступа WIFI.
Помимо возможности перезагрузки, как и ожидалось, после перезагрузки, когда /etc/openvpn/[client or server].confи /etc/default/openvpnфайлы правильно настроены, openvpn можно запустить или остановить с помощью:
sudo service openvpn start
sudo service openvpn stop
Другие полезные опции доступны для service openvpnвключения cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
Поскольку это довольно старая тема, я не уверен, что все еще интересен. Если вы все еще хотите использовать NetworkManager для подключения к VPN, вы можете добавить простое правило udev:
Я наткнулся на ответ в своем исследовании, чтобы решить эту проблему, и я обнаружил, что лучшее решение (с использованием сервера openvpn) заключается в следующем:
Добавьте следующие строки в конфигурацию openvpn (обычно /etc/openvpn/server.conf). В ответе выше он использовался вверх и вниз, которые используются при запуске (перезапуске) сервера. Директива client-connect (и client-disconnect) используется, когда клиент подключается (отключается).
network-manger-openvpn
.Ответы:
network-manager-openvpn
не предоставляет такой функциональности, вы должны использоватьopenvpn
напрямую.Перейдите
--script-security 2 --up /path/to/your/script
к нему при подключении. Если вы используете файл конфигурации, расположенный по адресу/etc/openvpn/
, добавьте следующие строки в ваш файл конфигурации:Из справочной страницы OpenVPN :
Есть еще события для выполнения скрипта, их можно найти на странице руководства .
Создайте
/etc/openvpn/up.sh
и дайте ему разрешения на выполнение (скажем, 755 или 700). Пример содержимого для добавления адреса IPv6 и маршрута (показан в образовательных целях, не копируйте его напрямую):Обратите внимание, что этот
up
скрипт запускается от имени пользователя root. Если вы не указали параметр aUser
иGroup
, OpenVPN также будет запускать сценарии, такиеdown
как root.источник
openvpn
непосредственного использования . При настройке сервера я заметил, что OpenVPN попытается переподключиться, когда сервер вышел из строя. Не уверен, что OpenVPN продолжает попытки, когда ваш сетевой интерфейс выходит из строя.На вопрос: «Как я могу связать скрипт с OpenVPN, чтобы он работал при успешном подключении VPN?» Хочу отметить, что Лекенштейн дал отличный ответ . Но в то время, когда его ответ был составлен, ему не хватало некоторой ясности относительно того, как должны предоставляться аргументы командной строки openvpn для запуска openvpn на машине с Ubuntu, особенно для того, чтобы он работал так же после перезагрузок.
Аргументы командной строки Openvpn в Ubuntu:
Естественно, можно запустить openvpn из командной строки с любыми доступными легальными опциями. Но на машине с Ubuntu, если кто-то хочет запустить openvpn с теми же аргументами командной строки после перезагрузки, ему следует рассмотреть возможность редактирования файла
/etc/default/openvpn
. Изучите следующие строки:От человека странице сообщества OpenVPN на
--script-security
В сочетании с сокращенным разделом
--up
Пример:
На моей машине с openpvn server.conf в моем
/etc/default/openvpn
файле есть следующие строки :Кстати, nat.sh устанавливает трансляцию сетевых адресов для маршрутизации трафика частной сети от клиентов openvpn к общедоступному Интернету; что хорошо, когда человек не доверяет общедоступной точке доступа WIFI.
Помимо возможности перезагрузки, как и ожидалось, после перезагрузки, когда
/etc/openvpn/[client or server].conf
и/etc/default/openvpn
файлы правильно настроены, openvpn можно запустить или остановить с помощью:Другие полезные опции доступны для
service openvpn
включенияcond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.источник
Поскольку это довольно старая тема, я не уверен, что все еще интересен. Если вы все еще хотите использовать NetworkManager для подключения к VPN, вы можете добавить простое правило udev:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Это должно запустить любой сценарий после создания VPN.
источник
Я наткнулся на ответ в своем исследовании, чтобы решить эту проблему, и я обнаружил, что лучшее решение (с использованием сервера openvpn) заключается в следующем:
Создайте скрипт для выполнения:
Добавьте следующие строки в конфигурацию openvpn (обычно
/etc/openvpn/server.conf
). В ответе выше он использовался вверх и вниз, которые используются при запуске (перезапуске) сервера. Директива client-connect (и client-disconnect) используется, когда клиент подключается (отключается).источник