Windows 7 создать vpn подключение из командной строки

Обновлено: 05.07.2024

Когда-то я писал пост про "правильную настройку VPN соединения по так называемому Gentoo way". Несмотря на то, что на пост было множество несогласных с моим мнением отзывов(кстати, набравшись опыта я сейчас понимаю что сделал бы тоже несколько по другому. Каюсь, грешен), эта тема как оказалось очень актуальна и востребована. Мне до сих пор приходят на email различные вопросы связанные с настройкой VPN соединения на сервере - т.е. без графической оболочки и утилит. В этом посте я постараюсь как можно более подробно описать данный процесс.

Итак приступим.
Для начала требуется установить нужный пакет. В deb based дистрибутивах он называется pptp-linux:

В других дистрибутивах пакет может называться по другому, однако в названии вероятнее всего есть "pptp". Так что, можно поискать по названию, почитать описание и установить.

Следующее что нам нужно сделать, это отредактировать параметры для подключения. Откроем файл /etc/ppp/options.pptp:

И приведём примерно к такому виду:

По порядку что и для чего:

Теперь создадим файл с параметрами подключения:

И добавим туда следующее:

ПараметрНазначение
lcp-echo-intervalинтервал с которым опрашиваем удалённый сервер
lcp-echo-failureколичество не отвеченных запросов от сервера, по прошествии которых считаем что мы отключены
maxfail 0всегда пытаться подключиться если отсутствует связь
defaultrouteпосле подключения, добавляет маршрут по умолчанию через созданный туннель.
ptyсоздаём канал для связи с сервером. (подробнее man pptp)
nameлогин
remotenameустанавливаем "имя предполагаемой" удалённой системы для аутентификации
linknameустанавливает логическое имя канала. В данном случае нам нужно для удобного "роутинга"
fileуказываем где находится файл с параметрами подключения

И добавим логин\пароль подключения:

Вместо login надо подставить логин и вместо password пароль соответственно.

Для подключения используется команда pon.

Например в нашем случае:

Для отключения poff:

Чтобы посмотреть состояние подключения plog:

У большинства провайдеров в локальной сети так же находятся внутренние ресурсы и многие наверняка захотят иметь к ним доступ при включенном VPN соединении. Для этого надо прописать маршруты. Т.е. грубо говоря, нам нужно задать правила для определённого диапазона адресов, чтобы трафик шёл не через наш внешний канал, а через внутреннюю сеть. Для этого нужно узнать шлюз который используется в локальной сети. Выполним следующую небольшую команду:

Важно: выполнять нужно обязательно нужно при отключенном VPN соединении. В противном случае мы получим шлюз PPTP туннеля.
Будет что-то вроде:

10.7.131.11 и будет шлюз. Теперь создадим файл /etc/ppp/ip-up.d/vpn

И добавим в него небольшой скрипт:

Дадим права на исполнение:

Так же при отключении было бы не плохо их удалять. Если не удалять их, конечно, ничего страшного произойти не должно, однако никогда не знаешь что потребуется сделать потом, и про них можно случайно забыть. Вот дабы такого не происходило, желательно их удалять.
Создадим файл /etc/ppp/ip-down.d/vpn

И туда тоже добавим небольшой скрипт:

Так же дадим права на исполнение:

Теперь остался последний штрих: подключать VPN соединение при загрузке ПК. Для этого откроем /etc/network/interfaces:

date

14.06.2013

directory

Windows 7

comments

комментариев 19

В последние несколько лет все более популярной становится технология организации удаленного рабочего места (будь то отдельный сотрудник и целый офис) за счет технологии VPN. Однако пользователю не очень удобно каждый раз при загрузке компьютера вручную инициировать VPN соединение. Как сделать так, чтобы VPN подключение поднималось автоматически при загрузке Windows или при входе пользователя в систему и не требовало бы от пользователя никаких дополнительных манипуляций? Попробуем в этом разобраться.

Предположим, что для подключения к VPN, вы используете специально созданное подключение с именем «vpn_office». В том случае, если новое VPN создавалось с настройками по-умолчанию, скорее всего его название будет содержать пробелы или русские символы (процесс создания VPN подключения в Windows 8). Для дальнейшей работы, лучше его переименовать, так, чтобы имя VPN подключения содержало только английский символы, а пробелы в названии отсутствовали (Правой клавишей по значку соединения и «Переименовать»).

Настройка автоматического vpn подключения в Windows

В параметрах VPN подключения снимите галочки у параметров:

  1. Отображать ход подключения (Display progress while connecting)
  2. Запрашивать имя, пароль и т.д. (Prompt for name and password, certificate, etc)
  3. Включать домен входа в Windows (Include Windows logon domain)

Параметры vpn подключения

Существует несколько способов автоматической установки VPN соединения в Windows. Большинство из них работают корректно практически во всех версиях Windows и отличаются способами реализации автоматического запуска сценария инициации VPN подключения. В некоторых случаях какая-то конкретная методика может не заработать, и вам придется попробовать альтернативную. Также стоит отметить, что описанные методики автоматического подключения к VPN были протестированы в Windows 7, однако с небольшими модификациями и правками (или совсем без оных), их можно использовать и в других ОС семейства Windows

Для установки автоматического VPN соединения мы будем использовать встроенную в систему утилиты rasdial.

RASDIAL. Установка VPN подключения из командной строки

Утилита rasdial появилась еще в самых ранних версиях Windows и использовалась для управления удаленными подключениями. Найти утилиту rasdial.exe можно в системном каталоге C:\Windows\system32\.

Список текущих удаленных подключений можно отобразить, набрав команду rasdial без параметров.

Чтобы отключить удаленное соединение, нужно воспользоваться командой:

Нас в данном случае интересует процесс как с помощь данной утилиты можно установить VPN подключение. Формат команды в этом случае будет такой:

[имя_пользователя] [пароль] – информация, выданная вашим ISP или администратором.

В том случае, если название подключения или имя пользователя содержит пробел, служебные или русские символы, такой параметр нужно брать в кавычки.

В моем случае, команда подключения будет такой:

Используем rasdial для установки vpn соединения в windows

В случае успешной установки VPN соединения и прохождения авторизации, отобразится строка «Command completed successfully», это означает, что соединение с VPN сервером установлено.

Следующий шаг – настройка автоматического запуска данной команды.

Автозапуск VPN подключения с помощью планировщика Windows

Попробуем настроить автозапуск VPN с помощью функций планировщика (Task Sheduller) Windows. Для этого запустите программу Start->All Programs-> Accessories-> System Tools->Task Scheduler, или же в командной строке выполните: taskschd.msc

Новое задание планировщика AutoConnectVPN

Создадим новое простое задание планировщика с именем «AutoConnectVPN»

Далее нужно указать, когда необходимо выполнять задачу. В данном случае нас интересуют следующие возможности планировщика:

Запуск VPN соедиения при загрузке

Выбор в данном случае за вами, т.к. в зависимости от требования к организации системы иногда нужно, чтобы VPN автоматически подключался при загрузке компьютера (пользователь еще не вошел в систему). Это удобно использовать на серверах (для служб, работающих в фоновом режиме или для выполнения других автоматических операций). Если же требуется, чтобы VPN запускался только при входе пользователя (начало рабочего дня оператора или работника удаленного офиса), нужно выбрать второй вариант.

Запуск программы

Затем указываем что планировщик должен запустить программу (Start a program).

В следующем окне нужно указать какую программу нужно запустить и с какими параметрами. Мы запускаем C:\Windows\system32\rasdial.exe с аргументами vpn_office winitpro_admin $ecretnaRFr@z@

Автостарт VPN с помощью планировщика Windows

После окончания работы мастера, в списке задач, выполняемых при загрузке Windows, появится еще одна с именем AutoConnectVPN. Теперь при следующей загрузке системы VPN соединение должно подняться автоматически.

Автозапуск VPN с помощью реестра

VPN подключение можно устанавливать автоматически и с помощью реестра. В реестре существует специальная ветка, программы в которой Windows автоматически запускает каждый раз при загрузке.

Запуск vpn соеднинения через автостарт в реестре

  1. Запустите редактор реестра (regedit.exe) и перейдите в ветку HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
  2. Создайте новый строковый параметр именем vpnConnect и значением rasdial vpn_office winitpro_admin $ecretnaRFr@z@
  3. Закройте реестр и перезагрузите компьютер

Если нужно запускать подключение только для текущего пользователя, то эту операцию нужно произвести с разделом HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Автоматическое подключение VPN с помощью автозагрузки

Ярлык для vpn в автозагрузку

Просто создать ярлык для нужного VPN подключения и скопируйте (перетяните) созданный ярлык в каталог Автозагрузка (C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup) меню «Пуск».

Автостарт VPN с помощью системной службы

Данная методика предполагает, что мы создадим собственную службу Windows, которая отрабатывает процедуру VPN соединения до входа пользователя в систему.

В командной строке с правами администратора, создадим новую службу командой:

Чтобы служба запускалась уже после запуска всех системных служб, поставим ее в зависимость от службы lanmanworkstation. В консоли services.msc должна появиться новая служба autoVPN, если она отсутствует, проверьте правильность введенной команды.

Учтите, что это псевдо-служба, и она не будет отображаться в процессах, отрабатывая один раз при запуске системы.

Удалить службу можно командой:

Предыдущая статья Следующая статья

page

page

page

Папки на флешке стали ярлыками BOOTMGR is compressed в Windows 7. Что делать? Восстанавливаем языковую панель в Windows 7

такая же проблема при запуске службы

Все предложенные способы предполагают хранить пароль в открытом виде. Как этого избежать?

Напиши cmd для запуска vpn (через rasdial) и обфусцируй код.

Yerel, тоже столкнулся с такой же проблемой, как и вы, 3 дня подряд над ней просидел, удалось решить. Описываю последовательность действий. Здесь и далее примем, что у нас подключение PROVIDER, срабатывающее по логину login и паролю pass.

C уважением, AlSar.

куча даунов оставляют свои пароли в свою корпоративную сеть открытом виде, а потом плачут что кто-то зашифровал на работе базы данных и все документы.avi

А Вы в курсе, что созданное VPN подключение Windows пароли хранит в открытом НЕ ЗАШИРОВАННОМ виде??

Сколько ни пытался, никак не получилось запустить vpn c помощью планировщика задач и rasdial. Способ нерабочий для windows server

Автоматическое создание VPN соединения в Windows скриптом

На просторах интернета имеется большое количество информации на тему виртуальных частных сетей.Однако очень мало статей, как создать VPN соединение автоматичеки (скриптом). Можно найти как это сделать в UNIX. Мы же опишем как это сделать в Windows, на примере Windows 7. Такой вопрос может встать перед системным администратором (например, если нужно сделать одинаковые настройки VPN соединения на нескольких компьютерах). В других версиях ОС Windows всё делается по аналогии и опытному человеку не составит труда разобраться. Рядовой пользователь может озадачиться данным вопросом с малой вероятностью, поэтому мы пока не будем описывать данный процесс для других операционных систем. Однако постараемся расписать каждый шаг:

  1. Ручное создание соединения через интерфейс.
  2. Настройка использования шлюза (как компьютер будет ходить в интернет, через VPN или минуя его).
  3. Автоматизация подключения уже настроенного соединения.
  4. Автоматизация создания нового подключения.

Cоздание соединения через интерфейс

Предполагаем, что где-то имеется сервер виртуальной частной сети и нам известны параметры для подключения к нему (адрес, логин и пароль). Заходим: Пуск -> Панель управления -> Центр управления сетями и общим доступом. В разделе Изменение сетевых параметров, щелкнем по Настройка нового подключения или сети. Откроется окно Установка подключения или сети, где будет предложено выбрать вариант. Щелкаем по Подключение к рабочему месту Настройка телефонного или VPN-подключения к рабочему месту и жмём Далее.

Если уже имеются другие настройки, на следующем шаге будет предложено выбрать что-то из них или создать новое. Выбираем создать новое. На следующем шаге выбираем Использовать моё подключение к Интернету.

В появившемся окне вводим: Интерент-адрес - адрес VPN сревера (IP или доменное имя), Имя местоназначения - любое, оно будет отображаться в списке ваших сетей (если планируется дальнейшая автоматизация процессов, рекомендуем использовать в названии только латиницу и/или цифры.

На следующем шаге вводим пользователя и пароль, а так же выбираем запомнить пароль или нет.

По завершению произойдет попытка соедениться, и если всё указано верно коеенкт произойдет.

Если вам известен протокол, по которум работет ваш сервер, рекомендуем настроить его принудительно, это ускорит процесс подключения. Необходимо отключить ваш VPN: в правом нижнем углу (в трее) раскрываем список сетей, на нашей правой кнопкой мыши -> отключить.

Заходим: Пуск -> Панель управления -> Центр управления сетями и общим доступом -> Изменения параметров адаптера. На нашей сети правой кнопкой мыши -> Свойства. Закладка Безопасность. И выбираем Тип VPN. Если этого не сделать, каждый раз будут попытки соедениться по каждому из протоколов, пока не будет успешной.

Настройка использования шлюза

После типовой настройки, описанной в предыдущем пункте, весь ваш интрнет трафик пойдет через созданный канал, т.е. через сервер. Если сервер имеет интернет канал с пропускной способностью меньше чем у вас, или он прилично нагружен, возможно ощутить замедление скорости доступа в глобальную сеть. Так же, на сайтах или сервисах на которые вы пойдете будет светиться IP адрес сервера, а не ваш. Иногда такое не подходит и есть необходимость, чтобы светился ваш IP адрес. В таком случае необходимо произвести настройку шлюза.

Вновь отключаемся и заходим в свойства соединения как описано чуть выше (в изменениях параметра адаптера). Выбираем закладку Сеть. Выделяем Протокол Интернета версии 4(TCP/IPv4) и жмеме Свойства -> Дополнительно. На закладке Параметры IP снимаем галку Использовать основной шлюз в удаленной сети. Во всех открытых окнах - ОК. Теперь даже при подключенном VPN соединении интернет трафик пойдет через ваш, а не удаленный шлюз.

Автоматизация подключения уже настроенного соединения

Автоматически установит VPN соединение для уже настроенного подоключения, можно не только из интерфейса, но и из-под коммандной стрки, используя команду rasdial.

где Имя подключения - то, что вы указали при создании VPN подключения в Имени местоназначения.

Используя эту команду, можно, например, настроить автоматическое подключение по VPN при загрузке компьютера. Для этого в планировщике задач необходимо создать нужное задание, в котором указать данную команду. Можно так же создать bat файл с одной строчкой - этой командой, и указать в задании его.

Остается одна проблема. Пароль при этом храниться в открытом виде. Если это решение не устраивает, можно скомпилировать bat файл в exe и пароль не будет явно видно. Переделка bat файла в exe - тема отдельной статьи, которых много в интернете. Воспользовавшись поиском, не составит труда найти, как это делается.

Создание VPN соединения скриптом

А теперь к самому интересному. Все созданные пользователем VPN соединения и их настройки храняться в одном файле - rasphone.pbk, который храниться в системной папке пользователя:

или, при типовой настройке Windows

В этом файле первая строка - имя VPN соединения в квадратных скобках. Далее идут пареметры (настройки) этого соединения. После них через пустую строку идет имя следующего VPN соединения в квадратных скобках (если у вас их два и более) и так далее.

Копируем этот файл в другое место, например на флэшку. Если у вас на этом компьютере было несколько настроенных VPN, а вам нужно настраивать на других компьютерах только один или некоторые, открываем скопированный файл в текстовом редакторе (я предпочитаю Notepad++).У даляем лишние соединения вместе с их настройками. Делать это нужно аккуратно, не удалив случайно некоторые из настроек нужных соединений

Создаем bat файл из двух строк

Я кладу созданный bat файл на флэшку в тот же каталог, где находиться отредактированный файл rasphone.pbk. Поэтому в первой строчке скрипта укзываю его имя без пути.

Предполагая, что на комьютере, на котором буду внедрять решение - типовая установка Windows и пользователь называется user, поэтому в первой строке, в комманде copy, каталог назначения имеет такой вид.

/Y означает, что файл в папке назначения будет перезаписан, если существует, без лишних вопросов.

Важно.

В моей реализации предполагается, что на компьютере внедрения отсутствуют существующие настроенные VPN соединения.
Если они присутствуют, то будут утеряны (удалены) при перезаписи файла, а если найдутся подключенные, то скрипт может выдать ошибку.
Если соединения уже есть, и их необходимо сохранить, потребуется не перезаписывать файл rasphone.pbk, а дописывать в него необходимую текстовую информацию.

Вторая строчка скрипта сразу устанавливает соединение для созданного VPN подключения

Запускаем скрипт и получаем результат. Вариаций реализации данного решения множество и у каждого своя ситуация. Охватить одной статьей все ситуации невозможно, цель - описать общий механизм.

Заключение

Если статья оказалась вам интересна и полезна, помогите найти её другим пользователям - сделайте репост в социалных сетях, используя расположенные ниже кнопки.

Маленькая сеть из десяти Windows 7/8 клиентов с выделенным сервером на базе Windows Server 2008 Std (на него пока не обращаем внимание) и с доступом в Интернет средствами простого роутера. Для VPN сервера я выделил одну из машин на Windows 7 Pro. Далее будет описано два способа поднятия L2TP/IPsec сервера на Windows 7 Pro.

Создание клиентского подключения для этого способа
  • Установим сертификаты на нашего VPN клиента. Копируем с VPN сервера сертификаты, которые создали ранее. Устанавливаем их точно таким же способом, как и на сервере.
  • Создадим VPN подключение. Идем в «Центр управления сетями и общим доступом» -> Настройка нового подключения или сети. Далее «Подключение к рабочему месту» -> Использовать мое подключение к Интернет. Вводим адрес нашего VPN сервера. Подключение готово.
  • Настроим наше VPN подключение. Имя пользователя и пароль, думаю, вопросов не вызывают. Во вкладке «Безопасность» выбираем тип VPN L2TP/IPsec и в дополнительных параметрах выбираем «Использовать сертификат» и убираем галку «Проверить атрибуты имени сертификата». Шифрование ставим Обязательное и «Разрешаем следующие протоколы» проверки подлинности: MS-CHAPv2. Далее вкладка Сеть -> TCP/IPv4 свойства -> Дополнительно -> Убираем галку «Использовать основной шлюз».
  • Если не поднимается подключение. То на Windows 8 стоит попробовать такой ключ реестра HKLM\SYSTEM\CurrentControlSet\Services\IPsec создаем параметр DWORD с именем AssumeUDPEncapsulationContextOnSendRule и значением 2. Для Windows 7/Vista этот параметр нужно создать в HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent
Итоги этого способа

Для Windows клиентов это хороший способ реализации L2TP/IPsec, но когда дело доходит до iOS клиентов, задача расширяется. Проблема в том, что iOS могут подключаться по L2TP только с шифрованием по Заранее подготовленной ключевой фразе (Preshared Key), а по сертификату могут подключаться только к Cisco VPN. Второй способ расскажет, как решить эту проблему.

Windows 7 L2TP/IPsec Preshared Key с ESP 3DES шифрованием и контролем целостности

  • Вернемся к чудо-параметру ProhibitIpSec=1. Идем в Реестр, в ветку HKLM\System\CurrentControlSet\Services\Rasman\Parameters и создаем там параметр типа DWORD с именем ProhibitIpSec и присваиваем ему значение 1. После этого необходимо или перезагрузить ОС, или перезапустить службы RemoteAccess и RasMan. Этим действием мы отключаем локальную политику IP безопасности по-умолчанию для IPsec.
  • Создадим теперь новую политику безопасности IP. «Выполнить» -> mmc -> Добавить оснастку -> «Управление политикой IP-безопасности» и выбираем Локальный компьютер. Далее «Создать политику IP-безопасности». «Далее» -> Вводим имя -> Галку «Использовать правило по умолчанию» не ставим -> Далее -> «Изменить свойства» галку оставляем. Откроются свойства новой политики. Здесь убрать галку «использовать мастер» и «Добавить». Теперь по порядку о каждой вкладке:
    • Список IP-фильтров. Вводим имя, снимаем галку «Исп. мастер», «Добавить». Адрес источника: «Любой». Адрес назначения: «Любой». Вкладка протокол. В выпадающем списке выбираем UDP. Пакеты ИЗ этого порта: 1701. Пакеты НА любой порт. ОК, ОК и возвращаемся в список IP-фильтров. Здесь вновь созданный фильтр отмечаем «точкой» и переходим на следующую вкладку.
    • Действие фильтра. По аналогии. Имя, галку про мастер, «Добавить». Выбираем «Согласовать безопасность», «Добавить». Выбираем «Шифрование и обеспечение целостности. (ESP)». ОК. Смотрим, чтоб не стояло никаких галок ниже списка методов безопасности. ОК. Аналогично отмечаем точкой и переходим к очередной вкладке.
    • Тип подключения. Все сетевые подключения.
    • Параметры туннеля. Это правило не указывает туннель IPsec.
    • Методы проверки подлинности. Не обращаем пока внимание на Kerberos, жмем «Добавить». Выбираем «Использовать данную строку (Предварительный ключ)» и вводим наш заранее придуманный Ключ. ОК. И теперь можно удалить Kerberos. В этой же вкладке можно добавить проверку подлинности по Сертификату. Процесс генерации и установки Сертификата описан в первом способе.
    Создание клиентского подключения для этого способа
    • Отличается от создания клиентского подключения для первого способа только Дополнительными свойствами L2TP/IPsec, где вместо использования сертификата выбираем "… использовать общий ключ".

    Доступ к VPN серверу

    На роутере я использовал службу Dynamic DNS, т.к. внешний IP динамический. Для возможности подключения необходимо сделать проброс портов (Port Forwarding) для портов UDP 1701 UDP 4500 UDP 500 к нашему VPN серверу. Мы подобрались к финишному этапу, где нас ждет еще одна немаленькая проблема. Дело в том, что Windows 7/8 имеет ограничение на максимальное количество подключений для удаленного доступа, и оно равно 1. Такого ограничения нет на Windows Server. Тут и напрашивается фраза «А на фига ты тут всё это написал?!» Есть два способа решения. Первый: один хороший человек провел немаленькую работу и написал патч, снимающий ограничение для Windows 7 Pro SP1. Здесь подробно описан сам процесс поиска решения и присутствует патч. Второй: использовать Windows Server. Но использовать не так, как написано в большинстве статей, где говорится о назначении серверу Роли «Маршрутизации и удаленного доступа» и использовании специальных оснасток, в которых чёрт ногу сломит, а использовать вышеописанный метод. Он отлично работает на Windows Server без назначения специальных ролей и без ограничений на число подключений.

    Читайте также: