Netsh kasutamine võrguteenuste halduseks

From ICO wiki
Jump to navigationJump to search

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