понедельник, 24 марта 2008 г.

Второй вопрос с запуска. Установление VPN соединения из скрипта.

Вопрос был о том, как в Vista автоматически (точнее из скрипта или .bat файла) соединиться с VPN сервером.
Многим этот вопрос покажется несерьезным, особенно по сравнению с запуском трех великолепных продуктов, однако:
1) вопрос был задан и требует ответа
2) а чем человек, задавший его хуже сисадмина большой распределенной сети - он тоже решает свою задачу и заслуживает в ней помощи
3) кто я такой, чтобы решать, что важно, а что нет =)
4) я не знал ответа на этот вопрос. ;)
и 5) когда я начал копать, то был крайне удивлен многобразию способов (а я еще не все нашел, наверняка) и тому, как много я забыл =)

Итак, есть как минимум два подхода для решения этой задачи:

  • настройка Dial-On-Demand соединения
  • скрипты.

Начнем, разнообразия ради, со второго метода. Тут все очень просто. Создадим, для примера, соединение "VPN_Connection". Введем пароль и пользователя, запомним их и, зайдя в параметры соединения. Там, на вкладке "Параметры" нужно снять галочки "Отображать ход подключения" и "Запрашивать имя, пароль, сертификат и т.д.".
options
Как нетрудно догадаться, эти нехитрые манипуляции позволяют нам сделать соединение устанавливаемым без излишних вопросов и прочих спецэффектов.

Теперь, собственно, нужно создать файлы, которыми мы будем стартовать соединение. Создадим папку c:\vpn и создадим там ярлык для этого соединения, скажем, для простоты "VPN_Connection.lnk". А теперь мы можем запускать этот ярлык как нам захочется:

1) можно поместить его в папку "Автозагрузка", тогда соединение, по идее, должно стартовать автоматически. Надо попробовать у себя дома, хтя я сомневаюсь, что на моем дохлом ноутбуке этот номер пройдет ;)

2) можно создать .bat файл следующего содержимого:

c:\vpn\vpn_connection.lnk

и запускать его откуда нам заблагорассудится.

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

Invoke-Item c:\vpn\vpn_connection.lnk

А уж что прописывать в качестве дополнительных проверок и действий - решайте сами %)

Note: не забывайте брать в кавычки пулный путь к файлу, если он содержит пробелы. Как-то так, например:

Invoke-Item "c:\vpn Connection\Vpn Connection.lnk"

Теперь, поговорим о Demand Dial или Dial On Demand. Тут все еще проще. В дополнение к настройкам, произведенным во вкладке "Параметры" в начале разговора о предыдущем методе, нужно еще перейти на вкладку "Доступ" и поставить галочки "Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера" и "Устанавливать подключение при попытке доступа к Интернету".

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

а) они действительно при желании смогут это сделать

б) есть риск "схлопотать по шее" от админа этой сети =)

Заключение:

Собственно, как видно, в этой области мало что поменялось со времен чуть ли не Windows 98, а то и более старых версий (память она только у компьютеров с каждым годом улучшается =) ). Настолько мало изменилось, что я был очень удивлен, вспомнив про еще один способ: команду rasdial, с которой, впрочем, предоставлю читателю возможность разобраться самому - должно же быть в жизни место подвигу ;)

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

6 комментариев:

gotch комментирует...

На самом деле rasdial это исторически верный способ.

Alexander Trofimov комментирует...

Согласен, но раз уж я взялся за дело, то вытащил на свет божий все, что нашел и вспомнил =)

Анонимный комментирует...

Саш, однако сейчас внедряем именно это :) вопрос тебе (я в принципе уже придумал как реализовать) однако ситуация следующая исключительно перед запуском Outlook запускать VPN :) Как? Вернее как ты считаешь? Может что -то более интересное подкинешь?

С ув.,
Алексей Бурлаченко

Alexander Trofimov комментирует...

Леш, давй в мыло, а то пока постановка задачи не ясна =)

Анонимный комментирует...

:) да бог с этим, уже всё сделали... ))))

Анонимный комментирует...
Этот комментарий был удален администратором блога.