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

Ошибка 'net use' после 'rasdial' в пакетном файле

Я пишу пакетный сценарий, который выполняет следующие действия:

  1. rasdial - подключить VPN
  2. net use - подключите диск к удаленной общей папке (в VPN)
  3. xcopy - скопировать кучу файлов с подключенного диска на локальную машину
  4. чистое использование - отключение диска
  5. rasdial - отключить VPN

Однако он никогда не может отобразить диск. Он говорит:

Произошла системная ошибка 67.

Имя сети не может быть найдено.

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

Моя первая задача - это безопасность, но я перепробовал все, что мог, безрезультатно.

Из любопытства, что произойдет, если вы добавите задержку между «rasdial» и «net use» - скажем, «ping -n30 127.0.0.1», чтобы вставить 29-секундную паузу. Я заметил, что клиент RAS, по крайней мере, в Windows XP, играет с таблицей маршрутизации в течение нескольких секунд после установления соединения.

Я не знаю какой-либо документации, описывающей, что клиент RAS делает с таблицей маршрутизации. Когда я подключаюсь к серверу RRAS из клиента Windows XP со снятым флажком «Использовать шлюз по умолчанию в удаленной сети», я вижу следующее поведение:

  • В таблицу маршрутизации добавлен «классный» маршрут к удаленной сети.
  • Примерно через 3-5 секунд этот маршрут удаляется, и вместо него в таблицу маршрутизации добавляется маршрут с той же маской подсети, что и у сервера RRAS.

Когда установлен флажок «Использовать шлюз по умолчанию в удаленной сети», я вижу следующее поведение:

  • Маршрут шлюза по умолчанию к удаленной сети добавлен в таблицу маршрутизации.
  • Примерно в течение 3-5 секунд маршрут с той же маской подсети, что и сервер RRAS, добавляется в таблицу маршрутизации (и остается маршрут шлюза по умолчанию).

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

Я бы сделал снимок таблицы маршрутизации сразу после завершения 'RASDIAL' (route print> before.txt), а затем снова после паузы (route print> after.txt), выяснил, какие строки меняются (fc before.txt после. txt) и добавьте к скрипту небольшой цикл для печати таблицы маршрутизации, найдите строку, которая означает, что условие «после» произошло, а если нет, сделайте паузу на секунду и зациклитесь.

Это шершаво и хакерское, но должно работать.

Кстати: в Windows 7 поведение отличается. У вас есть возможность «отключить классовое добавление маршрута».

Природу прокси ARP сервера RRAS всегда немного отталкивали. Я предпочитаю VPN, в которых клиенты попадают в свою подсеть, а сервер VPN направляет трафик к ним. Тем не менее, я полагаю, я могу понять, почему Microsoft реализовала это именно так. Клиенты RRAS в их модели в конечном итоге просто появляются как точки подключения на том же проводе, что и локальная сеть, а «магия» прокси-ARP, которую предоставляет сервер RRAS, позволяет системному администратору блаженно не думать о маршрутизации IP.