Использование CMAK для автоматизации клиентского подключения к VPN

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



Итак, предположим, что мы устали писать и обновлять инструкции по созданию подключений к нашему VPN серверу для пользователей Windows и хотели бы автоматизировать этот процесс, предоставляя пользователю готовую программу, создающую подключение с заранее предопределенными нами параметрами и готовое к работе в условиях нашей сети. Осуществить это — нам поможет встроенный в Windows Server 2008 и Windows Server 2008 R2 компонент — «Connection Manager Administration Kit» (в русской версии «Пакет администрирования диспетчера подключений»). Итак, для того, чтобы установить CMAK необходимо запустить «Диспетчер сервера» и установить новый компонент «Пакет администрирования диспетчера подключений». Весь текущий пример основан на Windows Server 2008 R2 SP1, русская версия.



Установка компонента в диспетчере сервера:



После установки пакет администрирования доступен из меню «пуск», или апплет «администрирование» в панели управления. После запуска CMAK нас поприветствует мастер пакета администрирования.



Не долго думая, нажимаем «далее». В следующем окне мастер предложит выбрать нам семейство операционных систем, для которых мы создаем подключение. Под Windows Server 2008 R2 это «Windows 7, Vista», или «Windows Server 2003, Windows XP и Windows 2000». Впрочем, если мы выберем пункт с Windows 7 и Vista — подключение подойдет и для Windows 8.



После выбора операционных систем мы должны создать новый профиль, или отредактировать существующий, если он есть (в нашем примере мы создаем новый).



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



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



На следующем этапе нам предлагается добавить данные из телефонной книги других существующих профилей, чтобы не вводить их по новой. Т.к. других созданных профилей у нас нет — идем дальше.



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



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

[Settings]
default=Имя VPN сервера, который будет использоваться по умолчанию (какое-либо из перечисленных ниже, например «My VPN Server1»).
UpdateURL=Ссылка на текстовый файл, со списком сервером (каждый раз при подключении этот файл будет обновляться из указанного URL).
Message=Сообщение для пользователя, например, «пожалуйста, выберите сервер для подключения».

[VPN Servers]
My VPN Server1=my1.example.com
My VPN Server2=my2.example.com
My VPN Server3=my3.example.com

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

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



Нажав, «изменить», мы сможем настроить основные параметры нашего VPN-соединения. На вкладке «общие» можно выбрать типы адресов, которые мы хотим использовать «IPv4», «IPv6», или же и то и другое, а также отключить «общий доступ к файлам и принтерам», если нам он не требуется.



Вкладка «IPv4» позволяет задать настройки для одноименного протокола. В числе настроек: DNS, WINS, использование подключения как шлюз по умолчанию и сжатие. В некоторых инструкциях, в случае, если нам нужно было не использовать VPN соединение как шлюз по умолчанию — предлагалось оставить здесь эту настройку включенной, а потом использовать в файле со статическими маршрутами директиву REMOVE_GATEWAY. Опытным путем установлено, что инструкция эта работает криво и приводит к багу, когда хост после подключения вообще перестает использовать свой основной шлюз по умолчанию. А вот настройка эта отработала вполне корректно, т.е. если нам не нужно использовать VPN-сервер как шлюз по умолчанию, то мы просто снимаем здесь эту галочку и добавляем позже статические маршруты для сетей, в которые нам нужно ходить через VPN.



Практически такие же настройки для протокола IPv6.



На вкладке «безопасность» можно выбрать нужный нам туннельный протокол (PPTP, L2TP, SSTP), причем можем выбрать единственный, а можем выбрать очередность попыток подключения. К примеру, если мы выберем сначала использовать L2TP, то после L2TP будет использоваться PPTP, а затем SSTP и т.д. Здесь также доступны различные параметры шифрования. Для L2TP, к примеру, можно указать разделенный ключ. В таком случае после настройки VPN соединения мастер предложит зашифровать наш ключ ПИН-кодом, который придется ввести пользователю при установке соединения. В этом же окне можно настроить методы аутентификации — более безопасный в общем случае EAP, или MS-CHAP 2, к примеру. Для данной статьи был выбран приоритет L2TP с разделенным ключом.



На вкладке «дополнительно» — можно указать DNS-суфикс, который будет использоваться клиентским соединением.



Окно для ввода разделенного ключа и ПИН-кода для его шифрования.



Далее мастер предлагает ввести телефонную книгу для дозвона к dial-up серверу. В настоящее время, думаю, это не актуально, поэтому снимаем галку с пункта «автоматически загружать обновления телефонной книги» и нажимаем «далее».



Если dial-up для нас не актуален, то и следующее окно пропускаем таким же образом.



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

«ADD 192.168.0.0 MASK 255.255.255.0 default METRIC default IF default».

Внимание! Файл должен быть обязательно в кодировке ANSI, а не UTF-8, например. Если мы убрали галочку с пункта «Сделать это подключение основным шлюзом клиента» никаких директив REMOVE_GATEWAY здесь писать не нужно.



Можно также указать URL на файл, содержащий таблицу маршрутизации, в таком случае она будет обновляться при каждом подключении.

В следующем окне мастера можно указать параметры прокси-сервера для Internet Explorer во время VPN-подключения. Возможны следующие варианты — вообще не настраивать параметры прокси (первый пункт), использовать уже настроенные пользователем параметры (второй пункт), или использовать предварительно настроенный файл, содержащий параметры прокси (третий вариант).



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



Здесь, помимо нашей программы или скрипта можно выбрать различные события, при наступлении которых будет выполнено действие. Например, после подключения, или при ошибке. Если отметить пункт «включить в этот профиль службы указанную программу действия пользователя», то программа будет скопирована в профиль подключения (полезно на случай, если запускаем что-то нестандартное, чего на других компьютерах нету). Если предполагается взаимодействие программы с пользователем, то на этом этапе нужно отметить соответствующую галочку.



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



И также для телефонной книги:



Можно поменять иконку подключения:



На следующем экране можно установить свой hlp-файл справки, или оставить справочную информацию, предложенную по-умолчанию.



Далее можно указать сведения о технической поддержке (например, телефоны круглосуточной службы и т.д.).



И куда же без лицензионного соглашения? В общем, если требуется подтверждение согласия пользователя на что-либо — задать это тоже можно, выбрав текстовый файл.



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



На этом настройка закончена и остается нажать «далее» в следующем окне и «готово» в финальном. Мы увидим путь, по которому создался профиль для подключения.



Перед тем, как копировать этот профиль клиенту, стоит, на мой взгляд, упомянуть еще об одном моменте: если оставить все как есть, то в случае с PPTP — подключение упорно будет упорно предлагать указать региональные настройки телефона, что нам совершенно не нужно. Дело исправляется правкой файла с расширением cms, который лежит в профиле нашего созданного подключения. Итак, необходимо в этом файле, в секции "[Connection Manager]" добавить параметр «connectiontype=1» и сохранить файл. Делать это следует после создания подключения, потому что после завершения создания, или правки профиля — файлы перезаписываются и параметр с большой вероятностью потеряется.

Вот, собственно, и все. Папку с нашим профилем можно копировать клиенту и устанавливать подключение в два клика. Запускаем exe-файл с именем нашего подключения:



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



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



На этом все. Надеюсь, что данная инструкция окажется кому-нибудь полезной.
  • +2
  • 43,8k
  • 6
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 6

    0
    Спасибо, интересно. Стоит упомянуть, что таблицы роутинга могут лежат на сетевом ресурсе (удобно, когда приходится обновлять их, и это будет происходить централизовано)
    Однако есть тонкий момент в вашем материале — скорее всего созданное подключение будет требовать модема. Чтобы этого избежать — нужно на предпоследнем окне с галочкой «Дополнительно» (почему-то в инструкции не указано) открыть менб настроек, выбрать Manage Connecton и там присвоить параметру dialup значение 0.
    Сейчас постараюсь или найти картинку, или самому сделать. ВО всяком случае у меня всегда приходилось так «дошаманивать»)

    PS — нашел:


    и вот тут отключаем:

      0
      А я про централизованное обновление роутинга написал (URL на файл с таблицей маршрутов).

      Решил вопрос с требованием модема правкой файла cms (в секции "[Connection Manager]" добавил параметр «connectiontype=1») — об этом в инструкции тоже сказано, но Ваш способ более простой, спасибо за уточнение.
      0
      В моем случае, прежде чем прописать опредленные маршруты, нужно было определить: совпадают ли адреса гостевой сети с адресацией в офисе.
      Если кому-то интересен скрипт, делающий это опредление — могу запостить.
        0
        да, интересно! буду благодарен.
          0
          выполняем перд подключением:
          @echo off
          IPCONFIG |FIND "IP" > %temp%\TEMPIP.txt
          FOR /F "tokens=2 delims=:" %%a in (%temp%\TEMPIP.txt) do set IP=%%a
          set IP=%IP:~1%
          echo %IP% >%temp%\ip.txt
          if "%ip:~0,5%"=="10.0." echo 1 >%temp%\!.txt
          


          Сеть 10,0, и количество проверяемых символов, взяты для примера.

          выполняем после подключения:
          @echo off
          IF EXIST %temp%\!.txt goto :route_add ELSE goto :exit
          :route_add
          netsh int ipv4 sh add "VPN-Office" |FIND "IP" > %temp%\TEMPIP-RAS.txt
          FOR /F "tokens=2" %%a in (%temp%\TEMPIP-RAS.txt) do set IPVPN=%%a
          set IPVPN=%IPVPN:~%
          echo %IP% >%temp%\ip-ras.txt
          route add <сеть или адрес> mask <ваша маска> %IPVPN%
          :exit
          del %temp%\!.txt
          del %temp%\ip.txt
          del %temp%\ip-ras.txt
          del %temp%\tempip.txt
          del %temp%\tempip-ras.txt
          
            0
            Спасибо, очень полезно.

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

      Самое читаемое