Útválasztási szabályokat tartalmazó CIM osztály

+6 votes
asked May 19, 2014 in IRF tantárgy by garam93 (37 points)  
retagged May 20, 2014 by micskeiz

A házi feladatomban a feladat Windows lekérdezése Linux szerverről. A feladat leírása szerint útvonalválasztási szabályokat kellene kigyűjtenem gépenként, viszont nem találok olyan osztályt, ami tökéletesen fedné az igényeket. A feladatleírás kimenetre vonatkozó része:

"Az IfIndex oszlop annak az interfésznek az indexét tartalmazza, amire
az adott szabály vonatkozik. A DestinationPrefix megadja, hogy milyen
csomagokra vonatkozik a szabály. A Gateway oszlop a klasszikus route
parancs kimenetéhez hasonlóan vagy a szabályhoz tartozó átjáró címét
adja meg, vagy pedig, ha az adott alhálón belüli szabályról van szó,
akkor az értéke On-link. A Metric pedig a szabály metrikája."

Az általam legmegfelelőbbnek talált osztály a Win32_IP4RouteTable osztály: http://msdn.microsoft.com/en-us/library/aa394162(v=vs.85).aspx

A kérdésem az, hogy a megoldáshoz megfelelőek a Destination, NextHop, Metric1 és InterfaceIndex tagok, vagy esetleg egy másik osztályt kellene keresnem? Ha az utóbbi, milyen irányba kellene indulnom?

commented May 19, 2014 by hurtonypeter (36 points)  
+1 a kérdésre:)
Ezzel az osztállyal a másik probléma, hogy csak IPv4, és ha ugyanaz a feladatunk, akkor 6-os is kell.
Illetve a NextHop nem tudom mit jelöl, de biztosan nem jó, mert ha megnézed azt az ip-t, amin csatlakozol a vm-hez, abban az xml-ben nálam egyáltalán nincs is benne a gateway amit ipconfig /all kidob egyébként.
commented May 19, 2014 by garam93 (37 points)  
Sajnos én is láttam, hogy nem tökéletes ez az osztály se, de több órán át kerestem a neten, és ez volt a legközelebb a feladatkiírás igényeihez. Azért is írtam ide, mert én se találtam túlságosan megfelelőnek a megoldáshoz, csak egyelőre nincs jobbam.
commented May 19, 2014 by hurtonypeter (36 points)  
jaigen, azt véletlen lehagytam, hogy én egy ilyet találtam: http://msdn.microsoft.com/en-us/library/aa394217(v=vs.85).aspx
Nem tudom, hogy mennyire jó.
commented May 20, 2014 by X (42 points)  
edited May 20, 2014 by X
Engem is érdekel a téma. A Win32_NetworkAdapterConfiguration mellett találtam egy CIM_IPRoute (http://schemas.dmtf.org/wbem/cim-html/2/CIM_IPRoute.html) osztályt is ami tartalmaz verziót (IPv4/v6), de a többi mezőt (pl. Metric) nem, így a leghasználhatóbb eddig valóban a Win32_IP4RouteTable. Jelenleg megírtam erre, a verziózásra azt találtam ki, hogy ha a DST címben nincs '.' akkor nem tekintem IPv4-nek, ha pedig nincs ':' akkor nem tekintem IPv6-nak.

UPDATE: Ránéztem a virtuális gép "route print -4" kimenetére, ami alapján a 0.0.0.0 az 'On-link' szabály, valamint a Mask elem alapján még számolgatni is kell a DST prefix mezőhöz a maszk bitszámát. Ezekkel el lehet időzni amíg jön egy használható válasz az illetékesektől.

A "route print -6" is kiír pár bejegyzést, de hogy azokat hogyan lehet lekérdezni.. Mert ha nem lehet, akkor minden bejegyzés IPv4 és fölösleges az ellenőrzésem, meg a paraméter is.
commented May 20, 2014 by csa (45 points)  
Egyénként Win32_IP4RouteTable-ban ahogy nézem egy InterfaceIndexhez több bejegyzés is található.
commented May 20, 2014 by X (42 points)  
Igen, de ez a feladat szerint nem probléma:

"Ha egy interfész indexet megadunk ezzel a kapcsolóval, akkor csak az ehhez tartozó szabályOKAt kell kiírni a kimenetre"
commented May 20, 2014 by csa (45 points)  
Igazad van, most látom a példa kimenetben is egyhez több tartozik.

1 Answer

+1 vote
answered May 20, 2014 by micskeiz (2,873 points)  
selected May 20, 2014 by garam93
 
Best answer

Hálózati információkkal kapcsolatban nem csak a root/cimv2 névtérben vannak osztályok az újabb Windowsokban, érdemes a gépen lévő többi névtérben is körbenézni (pl. root/standardcimv2).

commented May 20, 2014 by X (42 points)  
Szerintem megtaláltam (MSFT_NetRoute). Sikerült lekérdeznem a névtér és az osztály átállításával, úgy tűnik ezzel nincs gond. Minden szükséges mező rendelkezésre áll (AddressFamily, DestinationPrefix, InterfaceIndex, NextHop, RouteMetric). Így a prefixet sem kell ipaddress.ip_network('ip/mask') hívással összetákolni ahogy eddig. A címcsalád értékkészlete kissé fura, de konzisztens a WS2012 parancssori adataival.

Eredetileg kérdezni akartam, de már nincs kérdés (ha ez az osztály használható), így csak megköszönöm a választ és haladok tovább.
commented May 24, 2014 by kmute90 (20 points)  
MSFT_NetRoute-t hogyan kérdezed le? hol érhető el neki a schema-ja?
commented May 24, 2014 by Rick (20 points)  
ez az oldal elég hasznos: http://msdn.microsoft.com/en-us/library/aa384463%28v=vs.85%29.aspx, ez alapján nekem sikerült hozzá megkonstruálnom a schema-t, működik is:

http://schemas.microsoft.com/wbem/wsman/1/wmi/root/StandardCimv2/MSFT_NetRoute
...