Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   [решено] Маршрутизация в VPN тоннеле (http://forum.oszone.net/showthread.php?t=176097)

Tonny_Bennet 19-05-2010 22:37 1417064

Маршрутизация в VPN тоннеле
 
Здравствуйте. Имеется 2 офиса: "Красный" и "Белый" (для наглядности)

Красный офис:
внутренняя cеть 192.168.3.0/24,
----192.168.3.1 winXP, usergate, 192.168.1.1------ 192.168.1.150 ADSL модем (используется как шлюз) dynamic ip ----- INTERNET

Белый офис:
внутренняя сеть 192.168.0.0/24
---- 192.168.0.10 Win2003 Serv, wingate, 193.105.37.%%% (static IP)

Задача: связать 2 офиса в одну сеть.

Я территориально нахожусь в Белом офисе (Win2003)
Настроил сервер по мануалу http://system-administrators.info/?p=418 или подобному (что то всё одинаковое в интернете). За несколькими исключениями:
- доступ в Интернет по PPPoE, а при указании в свойствах появляются 2 физических адаптера (внешка, локалка) я выбрал 3-й пункт "Разрешать RAS выбирать адаптер".
- Указал диапазон адресов 192.168.2.1-192.168.2.255, в конфигурации портов у меня гораздо больше чем на скрине, но я так же убрал L2TP, - NAT не конфигурировал вообще да и у меня его по моему и не было в списке.
- создал пользователя, разрешил ему входящие подключени, указал ему статический адрес, 192.168.2.2 и прописал статический маршрут 192.168.3.0 255.255.255.0 с метрикой 3 (чтоб увидеть его в многообразии других маршрутов)
- политик безопасности у меня 2, а не одна, как видно на скрине и названия тож не похожи (английские) я в обоих сделал то что было на скрине.

В красном офисе создали VPN подключение и сняли галочку в свойствах "Использовать основной шлюз подключения"

Итак клиент из КРАСНОГО офиса коннектится ко мне к Белому. Соединение устанавливается. Он получает свой статический адрес 192.168.2.2. Клиент видит всю мою сеть. Пинги ко всем компам моей сети идут. Файлики копируются. Вообщем всё чудненько
Я с сервера клиентскую машину по 192.168.2.2 не пингую! С любой рабочей станции моей сети БЕЛОГО офиса эта машина 192.168.2.2 пингуется. Сеть красного офиса 192.168.3.0/24 не доступна ни с сервера ни с компов БЕЛОЙ сети.

P.S. Пишу из дома. Если очень нужны таблицы маршрутизации то могу выслать завтра. Но всё же хотелось бы узнать что это может быть? Почему такие косяки? Где копать? Как диагностировать? Сниферами? Сетевыми анализаторами?

Маршруты сервера:
C:\Documents and Settings\Administrator>route print 192*

IPv4 таблица маршрута
===========================================================================
Список интерфейсов
0x1 ........................... MS TCP Loopback interface
0x2 ...00 0e a6 89 6d 6a ...... Marvell Yukon 88E8001/8003/8010 PCI Gigabit Ethe
rnet Controller - Network Load Balancing Filter Device
0x10003 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
0x10004 ...00 50 bf 20 c2 8e ...... Realtek RTL8139 Family PCI Fast Ethernet NIC

0x40005 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
===========================================================================
===========================================================================
Активные маршруты:
Сетевой адрес Маска сети Адрес шлюза Интерфейс Метрика
192.168.0.0 255.255.255.0 192.168.0.10 192.168.0.10 20
192.168.0.10 255.255.255.255 127.0.0.1 127.0.0.1 20
192.168.0.255 255.255.255.255 192.168.0.10 192.168.0.10 20
192.168.2.1 255.255.255.255 127.0.0.1 127.0.0.1 50
192.168.2.2 255.255.255.255 192.168.2.1 192.168.2.1 1
192.168.3.0 255.255.255.0 192.168.2.2 192.168.2.1 3
Основной шлюз: 193.105.37.%%%
===========================================================================
Постоянные маршруты:
Отсутствует

Tonny_Bennet 20-05-2010 23:56 1417758

Вложений: 1
Добавил план сети

Tonny_Bennet 26-05-2010 17:58 1421670

Вообщем косяк был в том, что со стороны красного офиса невозможно было прописать роуты в белый route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1
Комп выдавал ошибку: сбой добавления маршрута: либо индекс интерфейса указан неверно, либо шлюз не лежит в той же подсети

Решилось всё просто. В свойствах интерфейса который создаёт ВПН сервер есть галочка "Включить обнаружение определения маршрутизатора". Поставили. Маршрут прописался. Но только при явном указвании имени интерфейса в поле IF....

Но при переподключении VPN клиента имя интерфейса меняется. и роуты работать перестают... так что хотелось бы спросить, может стОит написать скриптик который будет:
1. Подключать ВПН
2. Смотреть в команде route print (или где то ещё) имя сетевого интерфейса
3. Добавить маршрут в сеть указав интерфейс

Думал сделать через *.bat файл но не нашёл как можно анализировать строки.

Прошу помощи. Как сделать подключение и прописать роуты?

f1ame 27-05-2010 17:38 1422323

а ключ "-p" не помогает?

т.е. route add -p 192.168..... mask 255.255.255.0 192.168....

Tonny_Bennet 27-05-2010 21:09 1422464

Нет ключ -p не помогает т.к. имя VPN интерфейса меняется при переподключении.
Извратился написав скрипт vbs

Код:

Dim StringArray(15)
Set FSO=CreateObject("Scripting.FileSystemObject")
Dim Log
Set Log=FSO.OpenTextFile("C:\vpn_connect_logs.txt",8,true)

Log.WriteLine(Now()&" Запуск скрипта")
'WScript.Sleep 40000 'пауза 40 секунд
'параметры подключения
sNameOfConnection = "VPN"
sUser = "Login"
sPassword = "password"
sNameOfInt="WAN (PPP/SLIP) Interface" 'имя интерфейса

Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("rasdial "&sNameOfConnection&" "&sUser&" "&sPassword) 'подключаем соединение
Log.WriteLine(Now()&" Подключение rasdial "&sNameOfConnection&" "&sUser&" "&sPassword)
WScript.Sleep 3000
Set WshExec = WshShell.Exec("route print")' смотрим route print
Set TextStream = WshExec.StdOut
Str = vbNullString
Trim(TextStream.ReadLine()) 'просто читаю первую строку она мне дальше не нужна
Trim(TextStream.ReadLine()) 'просто читаю вторую строку она мне дальше не нужна
n=0
Log.WriteLine(Now()&" Доступные сетевые интерфейсы:")
Do While Not TextStream.AtEndOfStream
        stemp = Trim(TextStream.ReadLine())' последовательно читаем строки
                if (stemp <> "===========================================================================") then
                        n=n+1
                        StringArray(n)=stemp
                        Log.WriteLine(Now()&" "&stemp)
                else
                        Exit Do
                End If
Loop

sNumOfInt=""
For i=1 to 15 'просматриваю все строки и ищу нужный мне сетевой адаптер
        if (InStrRev(StringArray(i),sNameOfInt)<>0) then
        'MsgBox sNameOfInt & " в "&i&" строке"
        sNumOfInt = Left(StringArray(i),InStr(StringArray(i)," "))' получаю номер сетевого интерфейса
        End if
Next

Erase StringArray
if (sNumOfInt<>"") then
        Set WshExec = WshShell.Exec("route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt)
        Log.WriteLine(Now()&" Добавлен маршрут route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt)
else
MsgBox "Маршрут не добавлен. Возможно не удалось создать подключение",vbInformation + vbOK, "Внимание!"
Log.WriteLine(Now()&" Маршрут не добавлен route add 192.168.0.0 mask 255.255.255.0 192.168.2.1 metric 1 if "&sNumOfInt)       
End if
Log.WriteLine(Now()&" Работа скрипта завершена")
Log.WriteLine()
Log.Close

P.S. Прошу гуру VBS не критиковать сей код. Написал за час при том, что с VBS имел дело впервые в жизни. Работает и ладно.

и этим сообщением заканчиваю записки сумашедшего коим считаю сей топик.....

zonderz 27-05-2010 23:48 1422567

Цитата:

Цитата Tonny_Bennet
и этим сообщением заканчиваю записки сумашедшего коим считаю сей топик..... »

Нормальный топик и отличный результат. Молодец.

Tonny_Bennet 28-05-2010 16:37 1423056

Да просто сам с сабой общался и перечитал гору всякой фигни пока пришёл хоть к какму-то результату.


Время: 19:44.

Время: 19:44.
© OSzone.net 2001-