Vegyük alapul a következő problémát, amelyet az alábbi GNS3 topológiával mintáztam:
Feladatom az lenne, hogy egy célállomást pingeljek, és ha kimarad a ping, tudjam, mikor maradt ki.
R1 Lo1-gyel szimuláljuk a célállomást, R2-ről fogunk pingelni.
A sima ping nem jó, hiszen hiába használom, nem fogom tudni, mikor maradt ki. Nekem pontos idő kell (most csak clock set lesz, ntp nem, de valós körülmények között azt adottnak veszem, GNS3-ban nem vesződöm vele).
Az IP SLA kézenfekvő megoldás, de ott sem fogjuk tudni, mikor veszett el a csomag.
Viszont egy tracking-gel az ip sla-ra már kapunk egy syslog bejegyzést, amelyből információhoz jutunk. Ebből indultam ki.
Gyorsan a basic configok (R2-n kell egy statikus route 1.1.1.1/32-re, hiszen számára csak a 10.0.12.0/24 connected. R1-gyel nincs gond, mert számára mindkét subnet connected). És vegyétek észre, hogy nem rövidítettem, mindenhol kiírtam a parancsokat 🙂
R1> R1>enable R1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R1(config)#interface fastethernet0/0 R1(config-if)#ip address 10.0.12.1 255.255.255.0 R1(config-if)#no shutdown R1(config-if)#interface Loopback1 R1(config-if)#ip address 1.1.1.1 255.255.255.255 R1(config-if)#^Z R1# R1# R1#clock set 17:30:00 2 Oct 2012 *Oct 2 17:30:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 00:06:54 UTC Fri Mar 1 2002 to 17:30:00 UTC Tue Oct 2 2012, configured from console by console. R2> R2> R2>enable R2#configure terminal Enter configuration commands, one per line. End with CNTL/Z. R2(config)#interface fastethernet0/0 R2(config-if)#ip address 10.0.12.2 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#exit R2(config)#ip route 1.1.1.1 255.255.255.255 10.0.12.1 R2(config)#^Z R2#clock set 17:31:00 2 Oct 2012 *Oct 2 17:31:00.000: %SYS-6-CLOCKUPDATE: System clock has been updated from 00:09:21 UTC Fri Mar 1 2002 to 17:31:00 UTC Tue Oct 2 2012, configured from console by console. R2#ping 1.1.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 48/89/180 ms
Megy a ping, jöhet az IP SLA (Az ip sla a trackingben rtr, de van olyan IOS verzió amiben IP SLA. Ha nem működne a track X ip sla X, akkor próbáld a track X rtr X-et).
R2#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#ip sla 1
R2(config-ip-sla)#icmp-echo 1.1.1.1
R2(config-ip-sla-echo)#timeout 300
R2(config-ip-sla-echo)#frequency 1
R2(config-ip-sla-echo)#exit
R2(config)#ip sla schedule 1 start now life forever
R2(config)#track 1 rtr 1 reachability
R2(config-track)#^Z
R2#
Oct 2 17:35:53.515: %SYS-5-CONFIG_I: Configured from console by console
Nézzük az IP SLA és a track állapotát:
R2#sh ip sla statistics 1 Round Trip Time (RTT) for Index 1 Latest RTT: 108 milliseconds Latest operation start time: 17:36:15.411 UTC Tue Oct 2 2012 Latest operation return code: OK Number of successes: 33 Number of failures: 0 Operation time to live: Forever R2#sh track 1 Track 1 Response Time Reporter 1 reachability Reachability is Up 1 change, last change 00:00:28 Latest operation return code: OK Latest RTT (millisecs) 108
Ha most lenyomom R1 Lo1-et, egy syslog-ot fog dobni a tracking. Nézzük.
R1(config)#int lo1
R1(config-if)#sh
R1(config-if)#
Oct 2 17:40:09.095: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down
Oct 2 17:40:10.095: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down
R1(config-if)#
Oct 2 17:38:41.275: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down
R1(config-if)#no sh
R1(config-if)#
Oct 2 17:40:31.347: %LINK-3-UPDOWN: Interface Loopback1, changed state to up
Oct 2 17:40:32.347: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up
R1(config-if)#
R2#
Oct 2 17:39:06.275: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up
Ez már most elég lenne, hiszen látom, ha kimarad a ping, van róla syslog-om.
De fejeljük meg egy nagyon alap EEM script-tel!
Feladata, hogy ha változik a track1 reachability, dobjon egy syslog-ot az én saját kis szövegemmel.
R2(config)#event manager applet PINGDOWN R2(config-applet)#event track 1 state down R2(config-applet)#action 1.0 syslog msg "Houston, baj van, nem pingel!" R2(config-applet)#exit R2(config)#event manager applet PINGUP R2(config-applet)#event track 1 state up R2(config-applet)#action 1.0 syslog msg "Hurra, pingel!"
Teszteljük:
R1(config-if)#sh R1(config-if)# Oct 2 17:45:12.627: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down Oct 2 17:45:13.627: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down R2# Oct 2 17:43:46.291: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down R2# Oct 2 17:43:46.315: %HA_EM-6-LOG: PINGDOWN: Houston, baj van, nem pingel! R2# R1(config-if)#no sh R1(config-if)# Oct 2 17:45:22.531: %LINK-3-UPDOWN: Interface Loopback1, changed state to up Oct 2 17:45:23.531: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up R1(config-if)# R2# Oct 2 17:43:56.291: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up R2# Oct 2 17:43:56.295: %HA_EM-6-LOG: PINGUP: Hurra, pingel! R2#
Csinálhattunk volna egy olyan EEM applet-et is, ami magát a syslog-ot kapja el és úgy reagál.
R2(config)#no event manager appl PINGDOWN R2(config)#no event manager appl PINGUP R2(config)#event manager applet pingdown2 R2(config-applet)#event syslog pattern "%TRACKING-5-STATE: 1 rtr 1 reachability Up->Down" R2(config-applet)#action 1.0 syslog msg "Nem pingel" R2(config-applet)#exit R2(config)#event manager applet pingup2 R2(config-applet)#event syslog pattern "%TRACKING-5-STATE: 1 rtr 1 reachability Down->Up" R2(config-applet)#action 1.0 syslog msg "Pingel" R2(config-applet)#^Z R2# Oct 2 17:48:43.587: %SYS-5-CONFIG_I: Configured from console by console
Teszt.
R1(config-if)#sh R1(config-if)# Oct 2 17:52:14.975: %LINK-5-CHANGED: Interface Loopback1, changed state to administratively down Oct 2 17:52:15.975: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to down R1(config-if)# R2# Oct 2 17:50:51.291: %TRACKING-5-STATE: 1 rtr 1 reachability Up->Down R2# Oct 2 17:50:51.315: %HA_EM-6-LOG: pingdown2: Nem pingel R2# R1(config-if)#no sh R1(config-if)# Oct 2 17:52:34.327: %LINK-3-UPDOWN: Interface Loopback1, changed state to up Oct 2 17:52:35.327: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback1, changed state to up R1(config-if)# R2# Oct 2 17:51:06.291: %TRACKING-5-STATE: 1 rtr 1 reachability Down->Up R2# Oct 2 17:51:06.299: %HA_EM-6-LOG: pingup2: Pingel R2#
Jó dolog ez az EEM. Megkönnyíti az ember életét, főleg, ha komoly applet-eket írogat benne az ember.