Лучший способ - воспользоваться услугами:
- Установите сервис OpenVPN при установке клиента;
- Поместите ваши профили OpenVPN (с расширением .ovpn, а не .conf, как это принято в Linux) в подкаталог config в установочном каталоге OpenVPN, возможно,
C:\Program Files\OpenVPN\config
.
- Откройте консоль служб (
services.msc
);
- Найдите OpenVPNService, щелкните его правой кнопкой мыши, выберите "Свойства" и измените тип запуска с "Ручной" на "Автоматический".
- Запустите службу, и OpenVPN найдет и подключится к профилям в любых файлах .ovpn. Имейте в виду, что в большинстве случаев вам нужен один интерфейс TUN/TAP на файл подключения. В Windows я настоятельно советую постоянно связывать интерфейс с их соединением, используя файлы конфигурации:
dev-node TAP_Serv
заставляет OpenVPN связать соединение с сетевым интерфейсом с именем "Tap_Serv".
Возможно, вы захотите выяснить, есть ли способ составить белый список, чтобы заставить службу подключаться только к определенным файлам, а не ко всем. В прошлом у меня были некоторые проблемы с людьми, которым нужно было использовать VPN-сервер в качестве службы плюс несколько клиентских файлов vpn на одной и той же машине, которые время от времени соединялись. В этих ситуациях, если я хотел, чтобы графический интерфейс OpenVPN показывал им красивый список доступных соединений, это означало, что служба видела эти файлы и пыталась подключиться к ним автоматически. В этих случаях я решил вообще не пользоваться услугами:
Если использование службы не является опцией, вы можете передать дополнительные аргументы командной строки в вызов OpenVPN GUI, чтобы он автоматически подключался при запуске (а также отображал иконку в трее как обычно):
openvpn-gui.exe --connect myprofile.ovpn
Чтобы запустить его при входе в систему, поместите такой ярлык в обычную папку автозагрузки. (Для всех пользователей %ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup
; или только для текущего пользователя: %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup
.)
Я не знаю, как избежать подключения пользователя к Интернету до установки VPN. Единственный способ выяснить это через брандмауэр Windows, и я не эксперт в этом вопросе. Если вы не хотите, чтобы poweruser мог выходить в Интернет, вам нужен межсетевой экран в вашем шлюзе, чтобы избежать этого, или строгие групповые политики, чтобы избежать масштабирования привилегий.
Для обычного пользователя вы можете настроить клиентский компьютер Windows без шлюза по умолчанию. Задайте постоянный статический маршрут к VPN-серверу на клиентах Windows, используя следующую команду (-P делает его постоянным):
route -P add <target> mask <netmask> <gateway IP> metric <metric cost> if <interface>
Маршруты в Windows хранятся в следующем разделе реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
На этом этапе отключенный клиент имеет доступ только к VPN-серверу. Затем вы можете добавить следующие строки в файл конфигурации VPN-сервера, чтобы добавить маршруты на клиентах при подключении:
Чтобы настроить VPN-сервер в качестве шлюза по умолчанию:
push "redirect-gateway def1 bypass-dhcp"
Чтобы добавить определенный маршрут через VPN-сервер:
push "route 192.168.1.0 255.255.255.0"
Иногда проталкивание маршрута не работает в Windows. Когда это происходит со мной, я полностью удаляю OpenVPN и его интерфейсы из Windows, перезагружаю систему и устанавливаю последнюю версию программного обеспечения. Затем, перед установкой первого соединения, я перезагружаю Windows. Это всегда решало проблемы, однако в Windows 10 Anniversary Update (1607) глючит OpenVPN. На форумах OpenVPN есть ссылка на более глубокое обсуждение:
Проблемы с подключением с юбилейным обновлением Windows 10
Помните об этом при настройке клиентов Windows 10 OpenVPN.