Войти

Показать полную графическую версию : Помогите настроить роутинг


DjGiza
12-03-2009, 13:06
Пользуюсь вот таким скриптом
Set LocalIP=10.163.160.1
Set GlobalIP=92.50.168.173
route add 10.0.0.0 mask 255.0.0.0 %LocalIP%
route add 172.27.0.0 mask 255.255.0.0 %LocalIP%
route add 77.79.128.0 mask 255.255.192.0 %LocalIP%
route add 81.30.176.0 mask 255.255.240.0 %LocalIP%
route add 81.30.192.0 mask 255.255.224.0 %LocalIP%
route add 89.189.128.0 mask 255.255.224.0 %LocalIP%
route add 94.41.0.0 mask 255.255.0.0 %LocalIP%
route add 92.50.128.0 mask 255.255.192.0 %LocalIP%
route add 194.0.68.0 mask 255.255.252.0 %LocalIP%
route add 79.140.16.0 mask 255.255.240.0 %LocalIP%
route add 81.30.199.50 mask 255.255.255.255 %GlobalIP%
route add 81.30.199.69 mask 255.255.255.255 %GlobalIP%
route add 81.30.199.70 mask 255.255.255.255 %GlobalIP%
route add 81.30.197.10 mask 255.255.255.255 %GlobalIP%
route add 81.30.199.84 mask 255.255.255.255 %GlobalIP%
route add 81.30.199.238 mask 255.255.255.255 %GlobalIP%
где LocalIP - локальный шлюз который не меняется
GlobalIP - меняется при каждом переподключении

Вопрос: Как можно автоматизировать данный процесс, чтобы он сам вписывал нужный шлюз. А то каждый раз ручками это делать не охота

czecz
12-03-2009, 15:07
наверное вычислять предварительно как-то ваш GlobalIP тоже скриптом? :)

Petya V4sechkin
12-03-2009, 17:46
DjGiza, пример скрипта для получения адреса шлюза:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set IntN="Подключение по локальной сети"
For /F "Tokens=1* Delims=:" %%I In ('netsh int ip show address %IntN%') Do (
If "%%I"==" Основной шлюз" (
Set GW=%%J
Set GW=!GW: =!
Echo !GW!
)
If "%%I"==" Default Gateway" (
Set GW=%%J
Set GW=!GW: =!
Echo !GW!
)
)

в переменной IntN задано имя интерфейса, результат в переменной GW.
Батник должен быть в кодировке 866 (если русская система), проверял на XP и 2003.

DjGiza
12-03-2009, 19:03
C:\Routing3>SetLocal EnableExtensions EnableDelayedExpansion

C:\Routing3>Set IntN="Подключение по локальной сети"

C:\Routing3>For /F "Tokens=1* Delims=:" %I In ('netsh int ip show address "Подкл
ючение по локальной сети"') Do (
If "%I" == " Основной шлюз" (
Set GW=%J
Set GW=!GW: =!
Echo !GW!
)
If "%I" == " Default Gateway" (
Set GW=%J
Set GW=!GW: =!
Echo !GW!
)
)

C:\Routing3>(
If "Настройка интерфейса "Подключение по локальной сети"" == " Основной шлюз"
(
Set GW=
Set GW=!GW: =!
Echo !GW!
)
If "Настройка интерфейса "Подключение по локальной сети"" == " Default Gatew
ay" (
Set GW=
Set GW=!GW: =!
Echo !GW!
)
)

C:\Routing3>(
If " DHCP разрешен" == " Основной шлюз" (
Set GW= Да
Set GW=!GW: =!
Echo !GW!
)
If " DHCP разрешен" == " Default Gateway" (
Set GW= Да
Set GW=!GW: =!
Echo !GW!
)
)

C:\Routing3>(
If " Метрика интерфейса" == " Основной шлюз" (
Set GW= 0
Set GW=!GW: =!
Echo !GW!
)
If " Метрика интерфейса" == " Default Gateway" (
Set GW= 0
Set GW=!GW: =!
Echo !GW!
)
)
Что не правильно делаю?

Petya V4sechkin
12-03-2009, 23:04
DjGiza, значит, ничего у вас не настроено на интерфейсе "Подключение по локальной сети".
Приведите результаты выполнения ipconfig /all при подключенном инете.

DjGiza
12-03-2009, 23:59
Вот
C:\Documents and Settings\Admin>ipconfig /all

Настройка протокола IP для Windows

Имя компьютера . . . . . . . . . : microsof-4794f8
Основной DNS-суффикс . . . . . . :
Тип узла. . . . . . . . . . . . . : неизвестный
IP-маршрутизация включена . . . . : нет
WINS-прокси включен . . . . . . . : нет
Порядок просмотра суффиксов DNS . : ufanet.ru

Подключение по локальной сети - Ethernet адаптер:

DNS-суффикс этого подключения . . : ufanet.ru
Описание . . . . . . . . . . . . : Realtek RTL8139/810x Family Fast Eth
ernet NIC
Физический адрес. . . . . . . . . : 00-04-61-6E-5E-EB
Dhcp включен. . . . . . . . . . . : да
Автонастройка включена . . . . . : да
IP-адрес . . . . . . . . . . . . : 10.163.160.76
Маска подсети . . . . . . . . . . : 255.255.255.128
Основной шлюз . . . . . . . . . . : 10.163.160.1
DHCP-сервер . . . . . . . . . . . : 10.163.160.1
DNS-серверы . . . . . . . . . . . : 81.30.199.5
81.30.199.94
Аренда получена . . . . . . . . . : 13 марта 2009 г. 1:49:07
Аренда истекает . . . . . . . . . : 13 марта 2009 г. 2:49:07

anlim - PPP адаптер:

DNS-суффикс этого подключения . . :
Описание . . . . . . . . . . . . : WAN (PPP/SLIP) Interface
Физический адрес. . . . . . . . . : 00-53-45-00-00-00
Dhcp включен. . . . . . . . . . . : нет
IP-адрес . . . . . . . . . . . . : 94.41.66.69
Маска подсети . . . . . . . . . . : 255.255.255.255
Основной шлюз . . . . . . . . . . : 94.41.66.69
DNS-серверы . . . . . . . . . . . : 81.30.199.5
81.30.199.94
Если вместо "Подключение по локальной сети" писать например подключение "anlim" то пишет что не найден

Petya V4sechkin
13-03-2009, 11:54
DjGiza, прошу прощения, netsh int ip show address выводит только статический адрес.
Тогда придется ковырять Ipconfig, примерно так:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set Desc=Подключение по локальной сети - Ethernet адаптер
Set Found=
Set GW=
For /F "Tokens=1* Delims=:" %%I In ('Ipconfig') Do (
If "%%I"=="%Desc%" (
Set Found=1
) Else (
If "!Found!"=="1" (
Set V=%%I
Set V=!V: =!
Set V=!V:.=!
If "!V!"=="Состояниесети" GoTo Finish
If "!V!"=="MediaState" GoTo Finish

If "!V!"=="Основнойшлюз" (
Set GW=%%J
GoTo Finish
)
If "!V!"=="DefaultGateway" (
Set GW=%%J
GoTo Finish
)
)
)
)
:Finish
If Not "!GW!"=="" (
Set GW=!GW: =!
Set GW=!GW:~0,-1!
)
Echo !GW!

на этот раз сохранять батник в кодировке 1251 (так Ipconfig выводит).
Переменную Desc можете поменять:
Set Desc=anlim - PPP адаптер

DjGiza
13-03-2009, 12:07
Petya V4sechkin,
спасибо большое. все заработало

Petya V4sechkin
13-03-2009, 12:37
DjGiza, я там еще добавил пару строк (на случай, если сеть отключена).




© OSzone.net 2001-2012