Почему route.exe и WMI / IP Helper выдают разные метрики - PullRequest
1 голос
/ 08 октября 2009

Когда я вызываю «route PRINT» из командной строки в Windows XP, я получаю (символы? - это IP-адреса, которые я намеренно запутал для публикации):

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0     192.168.50.1  192.168.50.106       25
          0.0.0.0          0.0.0.0  192.168.254.254  192.168.254.64       9999
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1
     192.168.50.0    255.255.255.0   192.168.50.106  192.168.50.106       25
   192.168.50.106  255.255.255.255        127.0.0.1       127.0.0.1       25
   192.168.50.255  255.255.255.255   192.168.50.106  192.168.50.106       25
    192.168.254.0    255.255.255.0   192.168.254.64  192.168.254.64       9999
   192.168.254.64  255.255.255.255        127.0.0.1       127.0.0.1       9999
  192.168.254.255  255.255.255.255   192.168.254.64  192.168.254.64       9999
  207.???.???.???  255.255.255.255     192.168.50.1  192.168.50.106       1
  207.???.???.???  255.255.255.255     192.168.50.1  192.168.50.106       1
        224.0.0.0        240.0.0.0   192.168.50.106  192.168.50.106       25
        224.0.0.0        240.0.0.0   192.168.254.64  192.168.254.64       9999
  255.255.255.255  255.255.255.255   192.168.50.106  192.168.50.106       1
  255.255.255.255  255.255.255.255   192.168.50.106           10006       1
  255.255.255.255  255.255.255.255   192.168.50.106           60003       1
  255.255.255.255  255.255.255.255   192.168.254.64  192.168.254.64       1
Default Gateway:      192.168.50.1

Когда я звоню

Get-WmiObject Win32_IP4RouteTable | ft Destination, Mask, NextHop, InterfaceIndex, Metric1, Metric2, Metric3

из PowerShell на той же машине с Windows XP, я получаю следующее:

Destination       Mask             NextHop            InterfaceIndex          Metric1          Metric2          Metric3
-----------       ----             -------            --------------          -------          -------          -------
0.0.0.0           0.0.0.0          192.168.50.1               262146               26               -1               -1
0.0.0.0           0.0.0.0          192.168.254.254             65541                1               -1               -1
127.0.0.0         255.0.0.0        127.0.0.1                       1                2               -1               -1
192.168.50.0      255.255.255.0    192.168.50.106             262146               26               -1               -1
192.168.50.106    255.255.255.255  127.0.0.1                       1               26               -1               -1
192.168.50.255    255.255.255.255  192.168.50.106             262146               26               -1               -1
192.168.254.0     255.255.255.0    192.168.254.64              65541                1               -1               -1
192.168.254.64    255.255.255.255  127.0.0.1                       1            10000               -1               -1
192.168.254.255   255.255.255.255  192.168.254.64              65541                1               -1               -1
224.0.0.0         240.0.0.0        192.168.50.106             262146               26               -1               -1
224.0.0.0         240.0.0.0        192.168.254.64              65541                1               -1               -1
255.255.255.255   255.255.255.255  192.168.254.64              65541                1               -1               -1
255.255.255.255   255.255.255.255  192.168.50.106             262146                2               -1               -1
255.255.255.255   255.255.255.255  192.168.50.106              65542                2               -1               -1
255.255.255.255   255.255.255.255  192.168.50.106             393219                2               -1               -1

192.168.254.64 - это IP-адрес виртуального адаптера для моей VPN. Политика VPN в настоящее время настроена так, что обычный интернет-трафик должен обходить VPN, и показатели, отображаемые маршрутом PRINT, имеют смысл в этом контексте. Виртуальному интерфейсу назначена метрика 9999, поэтому трафик по умолчанию будет использоваться для любого другого доступного интерфейса.

Однако таблица маршрутизации, возвращаемая WMI, показывает метрику как 1. Если я вызываю GetIpForwardTable с помощью API IpHelper, я получаю те же значения, что и с WMI. Кто-нибудь знает, почему эти две таблицы не совпадают?

1 Ответ

1 голос
/ 18 октября 2009

Похоже, route print "агрегирует" метрики, тогда как запрос, который вы выполняете в PowerShell, точно говорит вам, на что каждый из них действительно установлен.

Другими словами, показатель 10000 только на самом деле установлен в записи маршрута для вашего IP-адреса VPN. Когда route print отображает его, он, вероятно, выполняет поиск маршрута и определяет, что пакеты к этому месту назначения должны использовать метрику, установленную на адресе интерфейса VPN.

...