Войти

Показать полную графическую версию : [решено] Маршрутизация в VPN тоннеле


Tonny_Bennet
19-05-2010, 22:37
Здравствуйте. Имеется 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
Добавил план сети

Tonny_Bennet
26-05-2010, 17:58
Вообщем косяк был в том, что со стороны красного офиса невозможно было прописать роуты в белый 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
а ключ "-p" не помогает?

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

Tonny_Bennet
27-05-2010, 21:09
Нет ключ -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
и этим сообщением заканчиваю записки сумашедшего коим считаю сей топик..... »

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

Tonny_Bennet
28-05-2010, 16:37
Да просто сам с сабой общался и перечитал гору всякой фигни пока пришёл хоть к какму-то результату.




© OSzone.net 2001-2012