Назад | Перейти на главную страницу

Автоматическая настройка прокси и принтера по умолчанию при подключении OpenVPN

Как я могу обновить веб-прокси клиентов WinXP и настройки принтера по умолчанию после успешного подключения OpenVPN и согласования DHCP через VPN? (И как я могу удалить эти настройки после отключения VPN?)

Я уверен, что это решенная проблема - она ​​концептуально не слишком отличается от автоматизации переходов без использования VPN для ноутбука, переходящего из одной сети в другую, - но мои знания XP довольно поверхностны, и я не мог найти рецепт для этого.

Да, вы можете выполнять произвольные команды на стороне клиента или сервера соединения OpenVPN, в Windows или любой другой ОС в различных точках соединения. Существует несколько опций (используемых в командной строке или в файле конфигурации), которые определяют, какие сценарии выполнять и с какими параметрами на различных этапах процесса подключения.

Например, если вы включите строку 'up «C: \ my-up-script.bat» в файл конфигурации клиента OpenVPN, ваш клиент выполнит любой пакетный сценарий, расположенный в «C: \ my-up-script. bat "после того, как он успешно открыл VPN-соединение с сервером. Строка «вниз C: \ my-down-script.bat» будет означать выполнение сценария «C: \ my-down-script.bat» после разрыва соединения.

Руководство OpenVPN (полностью доступно на http://openvpn.net/index.php/open-source/documentation/manuals/69-openvpn-21.html) перечисляет все различные сценарии и время выполнения каждого из них:

SCRIPTING AND ENVIRONMENTAL VARIABLES
OpenVPN exports a series of environmental variables for use by user-defined scripts.

Script Order of Execution

--up
    Executed after TCP/UDP socket bind and TUN/TAP open.
--tls-verify
    Executed when we have a still untrusted remote peer.
--ipchange
    Executed after connection authentication, or remote IP address change.
--client-connect
    Executed in --mode server mode immediately after client authentication.
--route-up
    Executed after connection authentication, either immediately after, or some number of seconds after as defined by the --route-delay option.
--client-disconnect
    Executed in --mode server mode on client instance shutdown.
--down
    Executed after TCP/UDP and TUN/TAP close.
--learn-address
    Executed in --mode server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table.
--auth-user-pass-verify
    Executed in --mode server mode on new client connections, when the client is still untrusted.

Если вы используете графический интерфейс OpenVPN для Windows, вы также можете прочитать руководство по установке этой программы (http://openvpn.se/install.txt), а именно раздел под названием «Запуск сценариев подключения / отключения / предварительного подключения». Графический интерфейс OpenVPN запускает демон OpenVPN как службу Win32 с динамически определяемыми параметрами командной строки, поэтому вам просто нужно написать свои собственные сценарии и сохранить их в местах, где их будет искать оболочка службы.

Если вы «катитесь самостоятельно», используя инструкции по сборке установщика NullSoft NSIS (http://openvpn.se/files/howto/openvpn-howto_roll_your_own_installation_package.html), вы можете просто поместить свои скрипты в пакет по мере его создания. (Я не хочу вдаваться в подробности по этой теме, потому что она довольно сложна, а официальная документация объясняет все это намного лучше, чем я могу здесь.)

Если вы не знакомы с командами сценариев Windows, необходимыми для добавления принтеров и настройки конфигураций прокси, я бы предложил написать пару коротких сценариев Visual Basic. Вы можете найти больше примеров в Google, но вот вам начало, вдохновленное тем, что я нашел на форумах Петри (http://www.petri.co.il/forums/showthread.php?t=6486), чтобы настроить новый принтер и сделать его по умолчанию:

Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.RemovePrinterConnection "\\MyGroupName\MyPrinterName"
WshNetwork.AddWindowsPrinterConnection "\\MyGroupName\MyPrinterName"
WshNetwork.SetDefaultPrinter "\\MyGroupName\MyPrinterName"

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

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

START C:\add_printer.vbs

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

up "C:\add_printer.vbs"

(В любом случае вам нужно будет заменить этот путь на местоположение вашего фактического сценария .vbs.)

Скрипт «вниз» может работать точно так же - возможно, вам просто нужно, чтобы он содержал одну строку, 'WshNetwork.RemovePrinterConnection "\ MyGroupName \ MyPrinterName"'.