Netsh kasutamine võrguteenuste halduseks
Sissejuhatus
Network Shell netsh on käsiurea utiliit, mille abil on võimalik vaadata ja seadistada Windowsi võrguparameetreid ning samuti konfigureerida ka võrguteenuseid. Enamikel juhtudel on netsh abil võimalik teostada samu toiminguid, mida Microsoft Management Console abil. Netsh on väga kasulik vahend toiminguid automatiseerivate skriptide kirjutamisel, samuti miks mitte ka kaughalduseks.
Netsh kasutamine
Netsh'd on võimalik kasutada nii üksikute käskude andmiseks kui ka interaktiivselt - eraldi shellina. Netsh käsud on jagatud kontekstideks, iga konteksti all on võimalik seadistada sinna kuuluvaid parameetreid ning anda sellega seonduvaid käsklusi. Iga konteksti all võib leiduda omakorda allkontekste. Interaktiivse kasutuse korral on võimalik kontekstide vahel liikuda, sisestades käsuks konteksti nime. Tagasi on võimalik liikuda käsuga "..". Igas kontekstis on võimalik saada abiinfot käsuga help või ?, kusjuures kuvatakse nii antud konteksti kohta käiv kui ka peakonteksti abiinfo.
Näide: Seadistatud IPv4 aadresse on võimalik kuvada ühe käsuna:
C:\Users\Administrator>netsh interface ip show addresses Configuration for interface "Local Area Connection" DHCP enabled: Yes IP Address: 10.0.2.15 Subnet Prefix: 10.0.2.0/24 (mask 255.255.255.0) Default Gateway: 10.0.2.2 Gateway Metric: 0 InterfaceMetric: 10 Configuration for interface "Loopback Pseudo-Interface 1" DHCP enabled: No IP Address: 127.0.0.1 Subnet Prefix: 127.0.0.0/8 (mask 255.0.0.0) InterfaceMetric: 50
Sama on võimalik saavutada ka interaktiivsel teel:
C:\Users\Administrator>netsh netsh>interface netsh interface>ip netsh interface ipv4>show addresses Configuration for interface "Local Area Connection" DHCP enabled: Yes IP Address: 10.0.2.15 Subnet Prefix: 10.0.2.0/24 (mask 255.255.255.0) Default Gateway: 10.0.2.2 Gateway Metric: 0 InterfaceMetric: 10 Configuration for interface "Loopback Pseudo-Interface 1" DHCP enabled: No IP Address: 127.0.0.1 Subnet Prefix: 127.0.0.0/8 (mask 255.0.0.0) InterfaceMetric: 50
Toimingud netsh abil
Järgnevalt vaatleme mõningaid enim levinud toiminguid ning anname näite, kuidas neid netsh abil teostada.
IP aadressi muutmine
IP aadressi muutmiseks peame eelnevalt olema interface ipv4 kontekstis. Anname järgmise käsu:
netsh interface ipv4>set address name="Local Area Connection" source=static address=192.168.100.1/24
Kontrollime tulemust:
netsh interface ipv4>show addresses Configuration for interface "Local Area Connection" DHCP enabled: No IP Address: 192.168.100.1 Subnet Prefix: 192.168.100.0/24 (mask 255.255.255.0) InterfaceMetric: 10
Name argument on muudetava võrguühenduse nimi. Nime asemel on võimalik kasutada ka ühenduse indeksit. Selleks, et ühe või teise võrguliidese indeks teada saada, tuleks kasutada järgmist käsku show interfaces
netsh interface ipv4>show interfaces Idx Met MTU State Name --- ---------- ---------- ------------ --------------------------- 1 50 4294967295 connected Loopback Pseudo-Interface 1 11 10 1500 connected Local Area Connection
Näeme, et antud süsteemis on Local Area Connection indeksiks 11, seega võiksime IP aadressi muuta ka järgmiselt:
netsh interface ipv4>set address name=11 source=static address=192.168.77.22/24 netsh interface ipv4>show addresses Configuration for interface "Local Area Connection" DHCP enabled: No IP Address: 192.168.77.22 Subnet Prefix: 192.168.77.0/24 (mask 255.255.255.0) InterfaceMetric: 10
Et seadistada võrguliides kasutama DHCP protokolli, tuleks anda käsk:
netsh interface ipv4>set address name=11 source=dhcp netsh interface ipv4>show addresses name=11 Configuration for interface "Local Area Connection" DHCP enabled: Yes IP Address: 10.0.2.15 Subnet Prefix: 10.0.2.0/24 (mask 255.255.255.0) Default Gateway: 10.0.2.2 Gateway Metric: 0 InterfaceMetric: 10
Static route
Staatilise route lisamiseks kaustame käsku:
netsh interface ipv4>add route 192.168.99.0/24 interface=11 10.0.2.2 Ok. netsh interface ipv4>show route Publish Type Met Prefix Idx Gateway/Interface Name ------- -------- --- ------------------------ --- ------------------------ No Manual 0 0.0.0.0/0 11 10.0.2.2 No Manual 256 10.0.2.0/24 11 Local Area Connection No Manual 256 10.0.2.15/32 11 Local Area Connection No Manual 256 10.0.2.255/32 11 Local Area Connection No Manual 256 192.168.99.0/24 11 10.0.2.2 No Manual 256 224.0.0.0/4 1 Loopback Pseudo-Interface 1 No Manual 256 224.0.0.0/4 11 Local Area Connection No Manual 256 255.255.255.255/32 1 Loopback Pseudo-Interface 1 No Manual 256 255.255.255.255/32 11 Local Area Connection netsh interface ipv4>
Et sisestatud route säiliks ka peale restarti, tuleb lisada võti store.
DHCP Server
Olukorras, kus DHCP server on paigaldatud, võimaldab netsh muuta ning kuvada kõiki selle parameetreid. DHCP serveri seadistamiseks tuleb siseneda konteksti "dhcp server".
C:\Users\Administrator>netsh dhcp server show server The current server is SRV1 with Ip Address = 10.0.2.15
Lisame DHCP skoobi:
netsh dhcp server>add scope 192.168.99.0 255.255.255.0 test Command completed successfully.
netsh dhcp server>show scope ============================================================================== Scope Address - Subnet Mask - State - Scope Name - Comment ============================================================================== 192.168.99.0 - 255.255.255.0 -Active -test - Total No. of Scopes = 1 Command completed successfully.
Siseneme loodud skoobi konteksti:
netsh dhcp server scope>scope 192.168.99.0 Changed the current scope context to 192.168.99.0 scope.
Lisame aadressvahemiku:
netsh dhcp server scope>add iprange 192.168.99.10 192.168.99.200 Command completed successfully.
Lisame IP reservatsiooni - olgu masinal MAC aadressiga 00:11:22:33:44:55:66 IP aadressiks 192.168.99.100:
netsh dhcp server scope>add reservedip 192.168.99.100 00112233445566 Command completed successfully.
Windows Firewall
Tulemüüri seadistamiseks on netsh's kaks konteksti - firewall ja advfirewall. Microsoft soovitab kasutada neist viimast, firewall kontekst on lisatud ainult tagasiühilduvuse huvides. Tulemüüri reeglitega töötamiseks on advfirewall all kontekst firewall.
Online ja Offline mode
Netsh'd saab kasutada kahes moodis - online ja offline. Vaikimis on valitud online mode. See tähendab, et kõik käsud, mida netsh abil antakse, rakenduvad koheselt. Sageli on aga tarvis anda rohkem kui üks käsk või seadistada rohkem kui ühte parameetrit ning rakendada need seadistused korraga. Selleks võib kasutada offline mode'i. Offline mode'is salvestatakse küll tehtud muudatused, kuid need ei aktiveeru enne commit käsu andmist.
netsh advfirewall>show currentprofile Public Profile Settings: ---------------------------------------------------------------------- State ON Firewall Policy BlockInbound,AllowOutbound LocalFirewallRules N/A (GPO-store only) LocalConSecRules N/A (GPO-store only) InboundUserNotification Disable RemoteManagement Disable UnicastResponseToMulticast Enable Logging: LogAllowedConnections Disable LogDroppedConnections Disable FileName %systemroot%\system32\LogFiles\Firewall\pfirewall.log MaxFileSize 4096 Ok.
Kuvame hetkel olemas olevad tulemüüri reeglid:
netsh advfirewall>firewall netsh advfirewall firewall>show rule name=all
Lisame testreegli - siseneva liikluse ühele programmile
netsh advfirewall firewall>add rule name=test dir=in action=allow program="c:\programfiles\messenger\msmsgs.exe" enable=yes Ok. netsh advfirewall firewall>show rule name=test Rule Name: test ---------------------------------------------------------------------- Enabled: Yes Direction: In Profiles: Domain,Private,Public Grouping: LocalIP: Any RemoteIP: Any Protocol: Any Edge traversal: No Action: Allow
Asünkroonsus
Netsh kasutamisel peab silmas pidama, et sisemiselt suhtleb see tööriist Windowsi erinevate teenustega vastavate API'de kaudu. Seega on netsh nägemus süsteemis toimuvast alati piiratud sellega, mida üks või teine API suudab edastada. Näiteks on selgub, et muutes võrguliidesel IP aadressi, ei ole võimalik seda muudatust kohe pärast selle tegemist netsh abil kuvada. Tõenäoliselt on sellise viite põhjuseks antud konfiguratsioonimuudatuse tagajärjel käivitunud asünkroonsed protsessid, mille üle netsh'l puudub igasugune kontroll. See muudab skriptides tagasiside kasutamise pisut keerukaks - puudub võimalus tada saada, millal ühe või teise käsu tulemus realiseerus ning tuleb kasutada kas sunnitud viivitusi või käia persiodiliselt uurimas, kas eelnevalt tehtud muudatus on realiseerunud.
Kokkuvõte
Netsh on mugav ning skriptimisel asendamatu tööriist. Näib, et selle loomisel on eeskujuks võetud marsruuterites või teistes võrguseadmetes sageli esinev CLI formaat. Kindlasti jääb netsh oma kasutusmugavuselt ja selguselt alla Cisco IOS CLI'le, kuid konkureerib edukalt Unixi laadsete süsteemidega, kus on küll olemas mugav shell, kuid puudub netsh laadne unifitseeritud tööriist võeguteenusega töötamiseks. Netsh olemasolu näitab selgelt, et Microsoft on mõistnud käsurea utiliitide olulisust.
kasutatud kirjandus
Netsh Command Reference - http://technet.microsoft.com/en-us/library/cc754516(WS.10).aspx