GNS3

Allikas: Kuutõrvaja

Sissejuhatus

GNS3 (Graphical Network Simulator, ingl. k. graafiline võrgusimulaator) http://www.gns3.net/ tarkvara võimaldab PC arvutil, nt kasutades Debian GNU/Linux operatsioonisüsteemi, tekitada virtuaalsetest võrguseadmetest koosneva keskkonna ning lisaks ühendada selle arvuti füüsilise võrguseadme kaudu ümbritseva füüsilise võrguga.

GNS3 kasutamine eeldab, et kasutajal on olemas Cisco IOS (Internetwork Operating System) tarkvara mõnele GNS3 poolt toetatud seadmele, nt mudelid 7200 või 3640. Lähemalt saab lugeda GNS3 tarkvara kasutustingimuste kohta aadressilt http://www.gns3.net/, samas asub ka kasutamist kirjeldav juhend.

Tarkvara paigaldamine

Iseenesest on GNS3 Python keeles ettevalmistatud graafiline kasutajaliides võrguseadmete simulatsiooni mootorile Dynamips.

GNS3 graafilise liidese paigaldamine Debian GNU/Linux AMD64 platvormile

2009 aasta suvel sisaldab Debian Lenny i386 ahritektuuri paketihaldus gns3 paketti, mis vastab versioonile 0.5 ning dynamips ja dynagen pakette. Lenny AMD64 arhitektuuril vastavad paketid puuduvab, kuid järgnevas kirjeldame kuidas tarkvara kodulehelt kopeeritud tarkvara kasutada Lennyga AMD64 platvormil.

GNS3 tarkvara kasutamiseks peavad olema operatsioonisüsteemi paigaldatud paketid xterm, xfonts-base, telnet ja python-qt4

 # apt-get install xterm xfonts-base telnet python-qt4

GNS3 tarkvara saab kopeerida aadressilt http://www.gns3.net/download ning tuleb seejärel lahti pakkida

 # mkdir /usr/local/gns3 /usr/local/gns3/tommised
 # cd /tmp
 # tar zxf GNS3-0.6.1-src.tar.gz
 # mv GNS3-0.6.1-src/* /usr/local/gns3
 # chown -R gns3:gns3 /usr/local/gns3

Dynamips ja Cisco IOS paigaldamine

Lisaks on tarvis dynamips tarkvara, mille saab kopeerida aadressilt http://www.ipflow.utc.fr/blog/ ja see sobib paigutada nt failiks

 /usr/local/gns3/tommised/dynamips-0.2.8-RC2-amd64.bin

ja IOS tõmmised, nt

 /usr/local/gns3/tommised/c7200.bin
 /usr/local/gns3/tommised/c3660.bin

ning käivitada

 $ /usr/local/gns3/gns3

Gns3-2.gif

Esimesel käivitamisel avaneb spetsiaalne dialoog, kus tuleb näidata

  • Dynamips asukoht failisüsteemis
  • Cisco IOS tõmmiste asukoht failisüsteemis

Kasutaja valikud salvetatakse faili

 ~/.gns3/gns3.ini

Edaspidisel GNS3 kasutamisel saab IOS ja Dynamips valikud muuta valides menüüst

 Edit -> ISO images and hypervisors
 Edit -> Preferences

GNS3 kasutamine

Tarkvara kasutamine ja sündmuste kontrollimine toimub kahel viisil

  • GNS3 graafilise kasutajaliidese abil
  • Cisco seadmesse nö telnetiga sisse logides tema IOS promptist ehk virtuaalse seadme konsoolilt, mis avaneb xterm vms aknas; terminali programm on seadistatav valides menüüst
 Edit -> Preferences -> General -> Terminal command

Tavaliselt toimetatakse sellises järjekorras

  • lisatakse vajalikud seadmed tööpinnale
  • kontrollitakse üle seadmete omadused, nt et ruuteril on vajalikud pordid olemas
  • ühendatakse seadmed linkidega
  • käivitatakse seadmed (GNS3 sisemised switchid ongi ainult töötavas asendis, ruuterid tuleb käivitada)
  • käivitatud ruuteri peal hüpikmenüüst valides Console avatakse ruuteri konsool, seal tuleb vastata küsimusele 'no'
 Would you like to enter the initial configuration dialog? [yes/no]: no
  • ruuteri loogiline seadistamine toimub ruuteri konsoolilt (nt võrguseadmetele ip aadresside omistamine jms)

Kui töölaud on moodustatud, siis sobib see salvestada valides menüüst

 File -> Save

Kahe virtuaalse Cisco 7200 ruuteri ühendamine

Olgu eesmärgiks koostada kahest ruuterist lülitus, kus ruuterid saavad üksteise poole üle kummagi gigabit pordi pöörduda, nt selline

Gns3-7.gif

kus on kujutatud

  • vasakul seadmete paneel
  • tööpinnal kaks ruuterit, vasak ja parem
  • paremal kasutuse olevate seadmete paneel
  • all keskel GNS3 programmi Console käskude andmiseks, nt ruuterite seadistuste salvestamiseks operatsioonisüsteemi failisüsteemi
  • lisaks eraldi akendena kummalegi ruuterile vastav terminal, kusjuures vasakus aknas on näha, et ping teise ruuterisse õnnestub

Esitatud olukord on moodustatud selliselt

  • hiirega on veetud tööpinnale kaks ruuterit
  • ruuteril on hüpikmenüüst valitud Change the hostname
  • ruuteril on hüpikmenüüst valitud Configure ning ruuteri nimel
 Slots -> slot1 -> PA-GE
  • valitud lingi lisamise nupp (RJ-45 pistiku kujuline ikoon) ja rippmenüüst Manual
  • ruuterite peal klõpsides valida ja ühendada kokku pordid, mille vahel ühendus tekitatakse
  • lülitada ruuterid käima nö rohelise Play nupuga
  • avada ruuterite konsoolid musta Terminal nupuga
  • vastata terminalides küsimusele eitavalt
 Would you like to enter the initial configuration dialog? [yes/no]: no

Vasakul ruuteril on seadistatud üks gigabit port ip aadressiga 172.18.2.162/24 selliselt

ruuter> ena
ruuter# conf t
Enter configuration commands, one per line.  End with CNTL/Z.
ruuter(config)# int Gi2/0
ruuter(config-if)# ip address 172.18.2.162 255.255.255.0
ruuter(config-if)# no shutdown
ruuter(config-if)# ^Z
ruuter#

Paremal ruuteril on analoogiliselt seadistatud üks gigabit port ip aadressiga 172.18.2.163/24. Tulemusena peab saama ühest ruuterist teise poole pöörduda, nt pingida nii nagu ülal pildid on kujutatud.

GNS3 töötab efektiivsemalt kui lülitada sisse nn Idle PC, selleks tuleb peale ruuterite seadistamist valida suvalisel ruuteril hüpikmenüüst Idle PC ja vastata edasi küsimustele jaatavalt.

Ruuteritesse tehtud seadistuste salvestamiseks eesmärgiga seda seadistuse seisu järgmisel GNS3 kasutuskorral kasutada peab ruuter käima ja ruuteris olema write käsu abil seadistus olema salvestatud ning seejärel tuleb GNS3 kasutajaliidese konsoolil öelda

 => export ruuterinimi /root/carp/seadistused

ning tulemusena salevastatakse arvuti failisüsteemi seadistusfail.

Salvestatud seadistusfaili kasutamiseks sobib öelda

 => import /root/carp/seadistused

Ruutingu seadistamiseks sobib öelda nt

 config# ip route 192.168.12.0 255.255.255.0 10.10.0.192

kus

  • 192.168.12.0 255.255.255.0 - ruuditav võrk
  • 10.10.0.192 - lüüs ruuditava võrgu juurde

Tehtud seadistuse eemaldamiseks tuleb samas kohas sisestada sama käsk kusjuures alugusesse kirjutada 'no', nt

 config# no ip route 192.168.12.0 255.255.255.0 10.10.0.192

Virtuaalse Cisco 7200 ruuteri ühendamine füüsilise võrguga

Virtuaalse keskkonna saab ühendada kokku füüsilise keskkonnaga selle arvuti mõne füüsilise võrgukaardi abil, milles GNS3 süsteem töötab. Tulemusena saab eemalt füüsiliselt võrgust selle füüsilise võrguliidese kaudu pöörduda virtuaalse keskkonna poole ja vastupidi. Kuigi virtuaalses keskkonnas ei ole tegu iseenesest arvutiga, nimetatakse järgnevas sellist ühendust tekitavat objekti arvutiks.

GNS3 keskkonnas on vajalikud

  • ruuter
  • ethernet switch
  • arvuti (füüsilise arvuti võrguseadet esindav objekt, mis on nn Cloud tüüpi objekt)

Arvuti objekti moodustamine

Valida programmi menüüst Edit -> Symbol manager ja kirjeldada objekt 'computer' tüübiga Cloud, selliselt

Gns3-3.gif

Skeemi koostamine

Hiirega tuleb vasakult keskele tööpinnale vedada ruuter, switch ja arvuti ning seejärel nad seadistada:

  • ruuterisse tuleb lisada Slot2 sisse GE võrguseade valides ruuteril Configure -> R0 -> Slots
  • arvuti võrgukaart tuleb seadistada valides Configure -> C2 NIO Ethernet -> Linux Ethernet NIO (require root access) -> nimekirjast sobiv võrgukaart ning Add -> Apply -> OK
  • valida nuppude reast Add link -> Manual ja ühendada seadmete sobivad pordid omavahel

Tulemus võiks olla selline, seadmete nimede järel olevad numbrid esinevad sõltuvalt sellest kui palju on skeemiga nö töötatud, st elemente asetatud ja eemaldatud tulemuse saavutamisel

Gns3-4.gif

Ruuteri seadistamine

Eeldusel, et ruuteris kasutatakse Slot2 GE liidest sobib see port seadistada selliselt

 ruuter> ena
 ruuter# conf t
 Enter configuration commands, one per line.  End with CNTL/Z.
 ruuter(config)# int g2/0
 ruuter(config-if)# ip address 172.18.2.162 255.255.255.0
 ruuter(config-if)# no shutdown
 ruuter(config-if)# ^Z
 ruuter#

tulemus on selline

 ruuter# sh ip int br
 Interface                  IP-Address      OK? Method Status                Protocol
 ...
 GigabitEthernet2/0         172.18.2.161    YES manual up                    up

Tulemuse kontroll

Kui arvuti füüsiline eth2 liides on võrgus ja seal on seadistatud mõnele arvutile ip aadress 172.18.2.254, siis peaksid nad saama üksteist nt pingida.

Virtuaalse Cisco NM-16ESW switchi kasutamine

Üldiselt GNS3 toetab paremini ruuterite kui switchide emuleerimist. Lisaks nö generic GNS3 endas sisalduvale switchile, mis võimaldab seadistada vlan'isid saab kasutada nt 3640 IOS pealt moodustatud ruuteris NM-16ESW seadet. Selleks tuleb ta lisada Slot'i ning seejärel ilmuvad kasutajaliidesesse nt f0/0 ... f0/15 nimelised seadmed. See switch on küll 10/100 Mbit/s portidega, teadaolevalt gigabit kiirusega nn Cisco switchi ei ole GNS3 abil võimalik kasutada.

Switchi portide nimekirja saab küsida

 # show int status

Switchi poolt õpitud mac aadresside nimekirja saab küsida

 # show mac-address-table

Switchi pordi seadistamiseks nö tavalisse ehk mode access režiimi sobib öelda

# conf t
(config)# interface GigabitEthernet0/9
(config-if)# no shutdown
(config-if)# switchport access vlan 506
(config-if)# switchport mode access
(config-if)# ^z
# write

Switchi pordi seadistamiseks nö tagitud ehk mode trunk režiimi sobib öelda

# conf t
(config)# interface GigabitEthernet0/4
(config-if)# no shutdown
(config-if)# switchport trunk encapsulation dot1q
(config-if)# switchport trunk allowed vlan 505,506,7
(config-if)# switchport mode trunk
(config-if)# ^z
# write

Kusjuures pordi nime võib kirjutada ka lühemalt, nt g0/4. Tehtud seadistuse eemaldamiseks tuleb samas kohas sisestada sama käsk, aga alugusesse kirjutada 'no', nt

config-if# no switchport trunk allowed vlan 505,506,7

Switchi käest saab küsida, millistesse vlannidesse on millised pordid seadistatud, tulemus esitatakse nn 'mode access' portide kohta

 #show vlan-switch
 
 VLAN Name                             Status    Ports
 ---- -------------------------------- --------- -------------------------------
 1    default                          active    Fa0/2, Fa0/3, Fa0/6, Fa0/8
                                                 Fa0/11, Fa0/12, Fa0/14
 7    VLAN0007                         active    Fa0/1, Fa0/10
 505  VLAN0505                         active    Fa0/5, Fa0/13
 506  VLAN0506                         active    Fa0/0, Fa0/9
 ... 
 1002 fddi-default                     active    
 1003 token-ring-default               active    
 1004 fddinet-default                  active    
 1005 trnet-default                    active    
 
 VLAN Type  SAID       MTU   Parent RingNo BridgeNo Stp  BrdgMode Trans1 Trans2
 ---- ----- ---------- ----- ------ ------ -------- ---- -------- ------ ------
 1    enet  100001     1500  -      -      -        -    -        1002   1003
 7    enet  100007     1500  -      -      -        -    -        0      0   
 505  enet  100505     1500  -      -      -        -    -        0      0   
 506  enet  100506     1500  -      -      -        -    -        0      0   
 ...
 1002 fddi  101002     1500  -      -      -        -    -        1      1003
 1003 tr    101003     1500  1005   0      -        -    srb      1      1002
 1004 fdnet 101004     1500  -      -      1        ibm  -        0      0   
 1005 trnet 101005     1500  -      -      1        ibm  -        0      0

kust on näha, et

  • vlan 7 - pordid f0/1 ja f0/10
  • vlan 505 - pordid f0/5 ja f0/13
  • vlan 506 - pordid f0/0 ja f0/9
  • vlan 1 - vaikimisi asuvad pordid esimeses vlannis

Väljundi töötlemiseks sobib kasutada nt inc käsku

 # show vlan-switch | inc VLAN0505  
 VLAN0505                         active    Fa0/5, Fa0/13

GNS3 ja VMware kasutamine

GNS3 ja VMware kombineerimine võimaldab tekitada suhteliselt keerulise topoloogiaga ja realistlikult käituvaid Cisco võrguseadmeid ja arvuteid sisaldavaid lülitusi. Süsteem võiks toimida nt selliselt

  • GNS3 käivitatakse VMware hostis
  • VMwares on seadistatud mitmed host-only võrgud

GNS3 vaatest on VMware arvutid (sh nt OpenBSD tulemüürid) on ühendatud GNS3 seadmetega nii nagu eelmises punktis kirjeldatud, kusjuures võrguseadmetena kasutatakse VMware hostonly seadmetele vastavaid vmnet seadmeid.

Alltoodud lülituses on püütud kahe koormusjaotus-režiimis töötava OpenBSD tulemüüri ümber ühendatud natuke Cisco võrku

Gns3-6.gif

kus

  • swklienid - klientarvutite switch
  • swtmext - tulemüüri väliste seadmete switch
  • swtmint - tulemüüri sisemiste seadmete switch
  • ruuter - üks Cisco 7200 ruuter
  • arvutid - kliendid, serverid, tulemüürid

VLAN kasutamine

VMware ja GNS3 koos kasutamisel saab kasutada ka nn trunk ehk tagged seadmeid, st et ühelt poolt VMware arvuti poolel on nt OpenBSD peale moodustatud vlan513 võrguseade ja teiselt poolt on NM-16ESW switchi port seadistatud mode trunk režiimi.

VLAN andmebaasi moodustamiseks tuleb öelda

 # vlan database
 vlan# vlan 507
 vlan# vlan 513
 ..
 vlan# apply
 vlan# exit
 #

sisu vaatamiseks

 vlan# show

Selleks, et VLAN andmebaas säiliks switchi stop ja starti sobib sooritada järgnevus

 # conf t
 config# vtp file nvram:vlan.dat
 config# do dir nvram:
 config# do wr mem
 config# ^Z
 # write

Märkused

  • Kui ruuter on seadistatud, on otstarbekas lülitada sisse nn idlepci, mis vähendab virtuaalse keskkonna koormust arvutile.

Kasulikud lisamaterjalid