Selamlar,
Bu yazımızda HP ProCurve marka anahtarlama cihazlarında "port mirroring" konfigürasyonunun nasıl yapılacağını anlatacağız.
HP ProCurve marka anahtarlama cihazlarında "port mirroring" ayarı yapmak çok basittir. Aşağıdaki konfigürasyon, HP ProCurve 2848 anahtarlama cihazı için yaplmıştır.
Önce trafiklerini aynalayacağımız (mirroring) portları belirlememiz gerekiyor. Bizim kullandığımız anahtarlama cihazında toplam 48 adet port var ve biz bu portlardan ilk 20 tanesini (1-20), 48 numaralı porta aynalayacağız. Yani ilk 20 porttan geçen trafik, 48 numaralı porta yönlendirilecektir:
ANAHTAR>enable
ANAHTAR#configure terminal
ANAHTAR(config)#interface 1-20
ANAHTAR(config-1-20)#monitor
Yukarıda yapılan şey, aynalama (mirroring) yapılacak olan portların içerisinde girip "monitor" komutunu yazmaktan ibarettir.
Bundan sonra yapılacak tanım 1-20 arasındaki portların hangi porta ya da portlara yönlendirileceğidir (mirroring):
ANAHTAR>enable
ANAHTAR#configure terminal
ANAHTAR(config)#mirror-port ethernet 48
Yukarıdaki basit konfigürasyon adımlarıyla anahtarlama cihazının üzerindeki 1-20 portları, 48 numaralı porta yönlendirmiş (mirroring) oluyoruz.
The purpose of this blog is to share some useful information about information security.
Monday, June 7, 2010
Monday, December 14, 2009
Dinamik NAT Konfigürasyonu
Bu yazımızda Cisco marka bir yönlendiricide dinamik NAT (Network Address Translation) ayarının nasıl yapıldığını göstermeye çalışacağız. Topolojimiz aşağıdaki gibi. ANKARA yönlendiricisine bağlı NAT yapacağımız iki adet ağımız var: 192.168.1.0/24 ağı ve 192.168.2.0/24 ağı. Amacımız; bu iki ağa ait olan IP adreslerini 171.69.238.208/28 ağına ait olan IP adreslerine dönüştürmek ve TRABZON yönlendiricisine bağlı olan 194.99.2.0/24 ve 192.11.33.0/24 ağlarına eriştirebilmek.
İlk olarak NAT yapılacak IP adres bloklarını belirlememiz gerekiyor. Bunun için yönlendiricimizin konfigürasyonuna aşağıdaki gibi bir erişim kontrol listesi girmemiz gerekiyor:
Router(config)#access-list 61 permit 192.168.1.0 0.0.0.255
Router(config)#access-list 61 permit 192.168.2.0 0.0.0.255
Yukarıdaki 61 numaralı erişim kontrol listesine yazılmış olan IP adres bloklarına NAT uygulanacaktır.
Bundan sonra adres dönüşümlerinin yapılacağı adres havuzunun yönlendiricinin konfigürasyonunda aşağıdaki gibi belirtilmesi gerekiyor:
Router(config)#ip nat pool IP-HAVUZU 171.69.233.210 171.69.233.221 netmask 255.255.255.240
Yukarıdaki konfigürasyon satırında adres dönüşümlerinin yapılacağı IP adresi havuzunun ismi, "IP-HAVUZU" olarak belirtilmiştir. Sonra dönüşüm yapılacak adreslerin başlangıç ve bitiş IP adresleri belirtilmiştir. Yukarıdaki örnek için adres havuzunda bulunacak olan başlangıç IP adresi 171.69.233.210 ve bitiş IP adresi de 171.69.233.221 olarak belirtilmiştir.
Bundan sonra adres dönüşümü yapacağımız IP adreslerini IP adres havuzumuzla aşağıdaki gibi eşleştirmek olacaktır:
Router(config)#ip nat inside source list 61 pool IP-HAVUZU
Yukarıdaki konfigürasyon satırında söylenmek istenen şudur: 61 numaralı erişim kontrol listesine uyan IP paketleri "IP-HAVUZU" adı verilen IP havuzundan IP adres alacaktır. Yani 192.168.1.0/24 ve 192.168.2.0/24 IP adres blokları 171.69.233.210 ile 171.69.233.221 IP adres aralığında yer alan IP adreslerine dönüştürülecektir.
Bundan sonra yapılacak iş, arayüzlerin hangisinin "iç", hangisinin "dış" olduğunun belirlenmesidir. Toplojimize göre ANKARA yönlendiricisi üzerindeki 192.168.1.0/24 (FastEthernet 0/0) ve 192.168.2.0/24 (FastEthernet 0/1) ağları "iç ağ (inside)" ve dönüşüm yapılacak olan 171.69.233.208/28 (FastEthernet 0/2) ağı da "dış ağ (outside)" olacaktır. Aşağıda, yönlendiricide olması gereken arayüz ayarları gösterilmiştir:
ANKARA
!
interface FastEthernet 0/0
ip address 192.168.1.111 255.255.255.0
ip nat inside
!
interface FastEthernet 0/1
ip address 192.168.2.111 255.255.255.0
ip nat inside
!
interface FastEthernet 0/2
ip address 171.69.233.209 255.255.255.240
ip nat outside
192.168.1.0/24 ve 192.168.2.0/24 ağlarının 194.99.2.0/24 ve 192.11.33.0/24 ağlarına NAT yapılmış olarak erişebilmeleri için ANKARA yönlendiricisinde bu ağlar için aşağıdaki gibi yön girilmesi gerekir:
Router(config)#ip route 194.99.2.0 255.255.255.0 171.69.233.222
Router(config)#ip route 192.11.33.0 255.255.255.0 171.69.233.222
192.168.1.101 ve 192.168.2.101 IP numaralı bilgisayarlardan 194.99.2.101 ve 192.11.33.101 IP numaralı bilgisayarlara "ping" atıldığında bu ağların birbirleriyle görüşebildiği görülecektir.
ANKARA ve TRABZON yönlendiricilerinin NAT ve buna bağlı yönlendirme konfigürasyonları aşağıdaki gibi olacaktır:
ANKARA Yönlendiricisi
interface FastEthernet0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside
!
interface FastEthernet0/1
ip address 192.168.2.254 255.255.255.0
ip nat inside
!
interface FastEthernet1/0
ip address 171.69.233.210 255.255.255.240
ip nat outside
!
ip nat pool IP-HAVUZU 171.69.233.210 171.69.233.223 netmask 255.255.255.240
ip nat inside source list 61 pool IP-HAVUZU
!
ip route 194.99.2.0 255.255.255.0 171.69.233.222
ip route 192.11.33.0 255.255.255.0 171.69.233.222
!
access-list 61 permit 192.168.1.0 0.0.0.255
access-list 61 permit 192.168.2.0 0.0.0.255
****************************************************
TRABZON Yönlendiricisi
interface FastEthernet0/0
ip address 194.99.2.254 255.255.255.0
!
interface FastEthernet0/1
ip address 192.11.33.254 255.255.255.0
!
interface FastEthernet1/0
ip address 171.69.233.222 255.255.255.240
Not: Yukarıdaki toplojiye ait konfigürasyonlar "Packet Tracer 5.1" yazılımı üzerinde denenip, çalıştırılmış konfigürasyonlardır.
İlk olarak NAT yapılacak IP adres bloklarını belirlememiz gerekiyor. Bunun için yönlendiricimizin konfigürasyonuna aşağıdaki gibi bir erişim kontrol listesi girmemiz gerekiyor:Router(config)#access-list 61 permit 192.168.1.0 0.0.0.255
Router(config)#access-list 61 permit 192.168.2.0 0.0.0.255
Yukarıdaki 61 numaralı erişim kontrol listesine yazılmış olan IP adres bloklarına NAT uygulanacaktır.
Bundan sonra adres dönüşümlerinin yapılacağı adres havuzunun yönlendiricinin konfigürasyonunda aşağıdaki gibi belirtilmesi gerekiyor:
Router(config)#ip nat pool IP-HAVUZU 171.69.233.210 171.69.233.221 netmask 255.255.255.240
Yukarıdaki konfigürasyon satırında adres dönüşümlerinin yapılacağı IP adresi havuzunun ismi, "IP-HAVUZU" olarak belirtilmiştir. Sonra dönüşüm yapılacak adreslerin başlangıç ve bitiş IP adresleri belirtilmiştir. Yukarıdaki örnek için adres havuzunda bulunacak olan başlangıç IP adresi 171.69.233.210 ve bitiş IP adresi de 171.69.233.221 olarak belirtilmiştir.
Bundan sonra adres dönüşümü yapacağımız IP adreslerini IP adres havuzumuzla aşağıdaki gibi eşleştirmek olacaktır:
Router(config)#ip nat inside source list 61 pool IP-HAVUZU
Yukarıdaki konfigürasyon satırında söylenmek istenen şudur: 61 numaralı erişim kontrol listesine uyan IP paketleri "IP-HAVUZU" adı verilen IP havuzundan IP adres alacaktır. Yani 192.168.1.0/24 ve 192.168.2.0/24 IP adres blokları 171.69.233.210 ile 171.69.233.221 IP adres aralığında yer alan IP adreslerine dönüştürülecektir.
Bundan sonra yapılacak iş, arayüzlerin hangisinin "iç", hangisinin "dış" olduğunun belirlenmesidir. Toplojimize göre ANKARA yönlendiricisi üzerindeki 192.168.1.0/24 (FastEthernet 0/0) ve 192.168.2.0/24 (FastEthernet 0/1) ağları "iç ağ (inside)" ve dönüşüm yapılacak olan 171.69.233.208/28 (FastEthernet 0/2) ağı da "dış ağ (outside)" olacaktır. Aşağıda, yönlendiricide olması gereken arayüz ayarları gösterilmiştir:
ANKARA
!
interface FastEthernet 0/0
ip address 192.168.1.111 255.255.255.0
ip nat inside
!
interface FastEthernet 0/1
ip address 192.168.2.111 255.255.255.0
ip nat inside
!
interface FastEthernet 0/2
ip address 171.69.233.209 255.255.255.240
ip nat outside
192.168.1.0/24 ve 192.168.2.0/24 ağlarının 194.99.2.0/24 ve 192.11.33.0/24 ağlarına NAT yapılmış olarak erişebilmeleri için ANKARA yönlendiricisinde bu ağlar için aşağıdaki gibi yön girilmesi gerekir:
Router(config)#ip route 194.99.2.0 255.255.255.0 171.69.233.222
Router(config)#ip route 192.11.33.0 255.255.255.0 171.69.233.222
192.168.1.101 ve 192.168.2.101 IP numaralı bilgisayarlardan 194.99.2.101 ve 192.11.33.101 IP numaralı bilgisayarlara "ping" atıldığında bu ağların birbirleriyle görüşebildiği görülecektir.
ANKARA ve TRABZON yönlendiricilerinin NAT ve buna bağlı yönlendirme konfigürasyonları aşağıdaki gibi olacaktır:
ANKARA Yönlendiricisi
interface FastEthernet0/0
ip address 192.168.1.254 255.255.255.0
ip nat inside
!
interface FastEthernet0/1
ip address 192.168.2.254 255.255.255.0
ip nat inside
!
interface FastEthernet1/0
ip address 171.69.233.210 255.255.255.240
ip nat outside
!
ip nat pool IP-HAVUZU 171.69.233.210 171.69.233.223 netmask 255.255.255.240
ip nat inside source list 61 pool IP-HAVUZU
!
ip route 194.99.2.0 255.255.255.0 171.69.233.222
ip route 192.11.33.0 255.255.255.0 171.69.233.222
!
access-list 61 permit 192.168.1.0 0.0.0.255
access-list 61 permit 192.168.2.0 0.0.0.255
****************************************************
TRABZON Yönlendiricisi
interface FastEthernet0/0
ip address 194.99.2.254 255.255.255.0
!
interface FastEthernet0/1
ip address 192.11.33.254 255.255.255.0
!
interface FastEthernet1/0
ip address 171.69.233.222 255.255.255.240
Not: Yukarıdaki toplojiye ait konfigürasyonlar "Packet Tracer 5.1" yazılımı üzerinde denenip, çalıştırılmış konfigürasyonlardır.
Friday, September 11, 2009
SNMP ile Cisco Yönlendiricinin Konfigürasyonunu Almak
Bu yazımızda, SNMP ile Cisco marka bir yönlendiricinin konfigürasyonunun uzaktan nasıl alındığını anlatmaya çalışacağız. Topolojimiz aşağıdaki gibi: Bir adet TFTP sunucumuz var, bir adet Cisco yönlendiricimiz var ve bir de komutları konsolundan yazdığımız LINUX CentOS işletim sistemine sahip bir bilgisayarımız var.
Şimdi LINUX CentOS işletim sistemi yüklü bilgisayardan yazacağımız komutlarla hedef yönlendiricinin konfigürasyonunu almaya çalışacağız. Bunun için bir "Perl script"i kullanacağız. "script"imizin adı copy-router-config.pl
Yönlendiricinin işletim sistemini aktarmayı planladığımız Windows XP işletim sistemi yüklü bilgisayarın üzerinde TFTP sunucu servisinin çalışıyor olması gereklidir. Yönlendiricinin konfigürasyonu TFTP ile alınacağı için bu gereklidir.
"script"in kullanımı aşağıdaki gibidir:
./copy-router-config.pl
Göstermeyi planladığımız örnekte yönlendiricimizin IP adresi 192.168.2.222, TFTP sunucumuzun IP adresi de 192.168.2.111 olarak belirlenmiştir. Yönlendiricinin SNMP "community name" değeri de "public"tir.
Aşağıdaki komutu yazdıktan sonra, yönlendiricinin konfigürasyonu TFTP sunucusuna aktarılmış olacaktır.
[root@SSS]#./copy-router-config.pl 192.168.2.222 192.168.2.111 public
"SNMP community" değeri üretilen tüm ağ cihazlarında "public" olarak gelmektedir. "SNMP community" değeri "public" olan Cisco yönşendiriclerin konfigürasyonlarını almak yukarıda da görülebilecği gibi oldukça basittir. Bu nedenle varsayılan değeri "public" olan bu değerin başka ve daha karmaışk bir değerler değiştirilmesi gerekmektedir.
Selçuk Şahin
Yönlendiricinin işletim sistemini aktarmayı planladığımız Windows XP işletim sistemi yüklü bilgisayarın üzerinde TFTP sunucu servisinin çalışıyor olması gereklidir. Yönlendiricinin konfigürasyonu TFTP ile alınacağı için bu gereklidir.
"script"in kullanımı aşağıdaki gibidir:
./copy-router-config.pl
Göstermeyi planladığımız örnekte yönlendiricimizin IP adresi 192.168.2.222, TFTP sunucumuzun IP adresi de 192.168.2.111 olarak belirlenmiştir. Yönlendiricinin SNMP "community name" değeri de "public"tir.
Aşağıdaki komutu yazdıktan sonra, yönlendiricinin konfigürasyonu TFTP sunucusuna aktarılmış olacaktır.
[root@SSS]#./copy-router-config.pl 192.168.2.222 192.168.2.111 public
"SNMP community" değeri üretilen tüm ağ cihazlarında "public" olarak gelmektedir. "SNMP community" değeri "public" olan Cisco yönşendiriclerin konfigürasyonlarını almak yukarıda da görülebilecği gibi oldukça basittir. Bu nedenle varsayılan değeri "public" olan bu değerin başka ve daha karmaışk bir değerler değiştirilmesi gerekmektedir.
Selçuk Şahin
Friday, August 7, 2009
TCP Sıra ve Onay Numaraları (Sequence Number & Acknowledgment Number) - 1
Bu yazımızda, TCP bağlantısı kurulması aşamasında ve TCP bağlantısı kurulduktan sonra, sıra ve onay numaralarının (sequence number & acknowledgment number) durumları incelenecektir.
Bir ağ üzerinde yer alan iki bilgisayar birbirleri arasında bilgi transferi yapacağı zaman aralarında bir TCP bağlantısı kurmaları gerekmektedir. Bu TCP bağlantısı, iki taraftan birisinin TCP bağlantı isteğini yapmasıyla başlar.
TCP bağlantılarında, karşılıklı gönderilen paketlerin hedefe ulaşıp, ulaşmadığını garanti etmek amacıyla sıra ve onay numaraları (sequence number & acknowledgment number) kullanılır.
TCP bağlantısını başlatan taraf, göndereceği TCP segmentinin başlığının (header) içerisindeki SYN bitinin değerini "1" yapar ve TCP bağlantısı için bir başlangıç sıra numarası (ISN = Initial Sequence Number) üretir. Bu sıra numarası , her işletim sisteminde farklı algoritmalarla, rastgele olacak şekilde üretilen bir sayıdır. Sıra ve onay numaralarının her birinin uzunluğu 32 bittir.
Yazımızda önce TCP 3 aşamalı el skışıma (TCP 3 way handshaking) aşamasından bahsedeceğiz:
Senaryomuzda A bilgisayarı, B sunucusuna bir HTTP isteği yapacaktır. Bilindiği gibi HTTP istekleri normalde TCP 80 numaralı portu kullanır. Bunun için A bilgisayarının, B sunucusuna 80 numaralı port üzerinden bir TCP bağlantısı başlatması gereklidir.
A bilgisayarı TCP başlığı içindeki SYN bayrağının değerini "1" yapar ve rastgele bir başlangıç sıra numarası (ISN = Initial Sequence Number) üretir. Yukarıda da belirtmiş olduğumuz gibi, ISN her işletim sisteminde farklı bir algoritmayla üretilmektedir. A bilgisayarı TCP bağlantısını başlattığı için ve B sunucusundan henüz herhangi bir cevap da almamış olduğu için göndereceği segmentin onay numarasının (acknowledgment number) değeri "0"dır (sıfır).
Yukarıdaki şekle göre A bilgisayarı, B sunucusuna bir TCP bağlantı isteği göndermektedir. Gönderilen bu TCP segmentinin sıra numarası 4227644578'dir ve TCP segmentinin başlığının içindeki SYN bayrağının değeri de "1"dir.
B sunucusu aldığı bu TCP segmentine, kendi ISN'sini (Initial Sequence Number) içeren bir başka TCP segmentiyle cevap verir. B sunucusunun gönderdiği bu TCP segmentinin başlığındaki SYN ve ACK bayraklarının değeri "1" olarak belirlenmiştir. Ayrıca bu segment, içerisinde A bilgisayarından almış olduğu paketin onay numarası da içermektedir.
Yukarıdaki şekle göre B sunucusu, A bilgisayarına bir cevap segmenti dönmüştür. Bu cevap segmentinin başlığında yer alan SYN ve ACK bayraklarının değeri "1"dir. Ayrıca B sunucusu kendi ISN'sini (Initial Sequence Number) de bu segmente eklemiştir. Yukarıdaki örnekte B sunucusunun ISN değeri 3363649303'tür. Bunun yanı sıra B sunucusu, A bilgisayarına bir önceki segmenti aldığına dair bir de onay numarası (acknowledgment number) gönderir. Bu değer bir önceki pakette yer alan sıra numarasının "1" fazlasıdır. Yani 4227644578 + 1 = 4227644579'dur. B sunucusu, A bilgisayarına şunu demektedir: "4227644578 numaralı segmenti aldım. Bundan sonra bana göndereceğin sıra numarası (sequence number) 42276644579 olsun.
Bunda sonraki aşamada A bilgisayarı, bağlantının kurulması için B sunucusuna son olarak bir segment daha gönderir. Bu segmentin başlığı içindeki ACK bayrağının değeri "1" olarak belirlenir. Ayrıca A bilgisayarı, B sunucusunun göndermiş olduğu segmenti aldığını da bir onay numarası (acknowledgment number) göndererek bildirir. Bu onay numarasının değeri almış olduğu TCP segmentinin içerisinde yer alan B sunucusuna ait olan sıra numarasının (sequence number) "bir" fazlasıdır.
Yukarıdaki şekle göre A bilgisayarı, B sunucuna cevap olarak göndermiş olduğu segmentin başlığındaki ACK bayrağının değerini "1" olarak belirlemiştir. Ayrıca bir önceki segmenti aldığına dair de B sunucusuna bir onay numarası (acknowledgment number) göndermiştir. Bu onay numarası bir önceki segmentte yer alan B sunucusuna ait olan sıra numarasından (sequence number) "bir" fazladır. Yani 3363649303 + 1 = 3363649304'tür. Burada A bilgisayarı şunu demektedir: "Sıra numarası 3363649303 olan segmenti aldım.Bundan sonra yollayacağın segmentin sıra numarası 3363649304 olsun."
Böylece A bilgisayarı ve B sunucusu arasında TCP bağlantısı kurulmuş olur. Bundan sonra her iki uç arasında veri akışı başlayacaktır. Bundan sonra veri akışının devam etmesi için ilk TCP segmentini A bilgisayarı gönderecektir. Bu ilk segmentin sıra numarası 42276644579 ve onay numarası da 3363649304 olacaktır.
Yukarıdaki şekilde A bilgisayarı, B sunucusuna şunu demektedir: "Senden gelen 3363649303 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 3363649304 olsun."
Bundan sonra gelecek olan üç segment aşağıdaki gibi olacaktır:
Yukarıdaki şekilde B sunucusu, A bilgisayarına şunu demektedir: "Senden gelen 4227644579 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 4227644580 olsun."
Yukarıdaki şekilde A bilgisayarı, B sunucusuna şunu demektedir: "Senden gelen 3363649304 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 3363649305 olsun."
Yukarıdaki şekilde B sunucusu, A bilgisayarına şunu demektedir: "Senden gelen 4227644580 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 4227644581 olsun."
Veri alışverişi, sıra ve onay numaraları bu şekilde artarak bağlantı bitene kadar devam eder.
ÖNEMLİ NOT: Bu örnekte dikkat edilirse sıra ve onay numaralarının birer birer arttığı görülür. Fakat gerçek hayattaki bir TCP bağlantısında bu numaralar birer birer artmazlar. Bu numaralar, segmentin içerdiği verinin büyüklüğüne bağlı olarak bir artış gösterirler. Bununla ilgili örneği de bir sonraki yazımızda anlatmayı planlıyoruz.
Bir ağ üzerinde yer alan iki bilgisayar birbirleri arasında bilgi transferi yapacağı zaman aralarında bir TCP bağlantısı kurmaları gerekmektedir. Bu TCP bağlantısı, iki taraftan birisinin TCP bağlantı isteğini yapmasıyla başlar.
TCP bağlantılarında, karşılıklı gönderilen paketlerin hedefe ulaşıp, ulaşmadığını garanti etmek amacıyla sıra ve onay numaraları (sequence number & acknowledgment number) kullanılır.
TCP bağlantısını başlatan taraf, göndereceği TCP segmentinin başlığının (header) içerisindeki SYN bitinin değerini "1" yapar ve TCP bağlantısı için bir başlangıç sıra numarası (ISN = Initial Sequence Number) üretir. Bu sıra numarası , her işletim sisteminde farklı algoritmalarla, rastgele olacak şekilde üretilen bir sayıdır. Sıra ve onay numaralarının her birinin uzunluğu 32 bittir.
Yazımızda önce TCP 3 aşamalı el skışıma (TCP 3 way handshaking) aşamasından bahsedeceğiz:
Senaryomuzda A bilgisayarı, B sunucusuna bir HTTP isteği yapacaktır. Bilindiği gibi HTTP istekleri normalde TCP 80 numaralı portu kullanır. Bunun için A bilgisayarının, B sunucusuna 80 numaralı port üzerinden bir TCP bağlantısı başlatması gereklidir.
A bilgisayarı TCP başlığı içindeki SYN bayrağının değerini "1" yapar ve rastgele bir başlangıç sıra numarası (ISN = Initial Sequence Number) üretir. Yukarıda da belirtmiş olduğumuz gibi, ISN her işletim sisteminde farklı bir algoritmayla üretilmektedir. A bilgisayarı TCP bağlantısını başlattığı için ve B sunucusundan henüz herhangi bir cevap da almamış olduğu için göndereceği segmentin onay numarasının (acknowledgment number) değeri "0"dır (sıfır).
Yukarıdaki şekle göre A bilgisayarı, B sunucusuna bir TCP bağlantı isteği göndermektedir. Gönderilen bu TCP segmentinin sıra numarası 4227644578'dir ve TCP segmentinin başlığının içindeki SYN bayrağının değeri de "1"dir.B sunucusu aldığı bu TCP segmentine, kendi ISN'sini (Initial Sequence Number) içeren bir başka TCP segmentiyle cevap verir. B sunucusunun gönderdiği bu TCP segmentinin başlığındaki SYN ve ACK bayraklarının değeri "1" olarak belirlenmiştir. Ayrıca bu segment, içerisinde A bilgisayarından almış olduğu paketin onay numarası da içermektedir.
Yukarıdaki şekle göre B sunucusu, A bilgisayarına bir cevap segmenti dönmüştür. Bu cevap segmentinin başlığında yer alan SYN ve ACK bayraklarının değeri "1"dir. Ayrıca B sunucusu kendi ISN'sini (Initial Sequence Number) de bu segmente eklemiştir. Yukarıdaki örnekte B sunucusunun ISN değeri 3363649303'tür. Bunun yanı sıra B sunucusu, A bilgisayarına bir önceki segmenti aldığına dair bir de onay numarası (acknowledgment number) gönderir. Bu değer bir önceki pakette yer alan sıra numarasının "1" fazlasıdır. Yani 4227644578 + 1 = 4227644579'dur. B sunucusu, A bilgisayarına şunu demektedir: "4227644578 numaralı segmenti aldım. Bundan sonra bana göndereceğin sıra numarası (sequence number) 42276644579 olsun.Bunda sonraki aşamada A bilgisayarı, bağlantının kurulması için B sunucusuna son olarak bir segment daha gönderir. Bu segmentin başlığı içindeki ACK bayrağının değeri "1" olarak belirlenir. Ayrıca A bilgisayarı, B sunucusunun göndermiş olduğu segmenti aldığını da bir onay numarası (acknowledgment number) göndererek bildirir. Bu onay numarasının değeri almış olduğu TCP segmentinin içerisinde yer alan B sunucusuna ait olan sıra numarasının (sequence number) "bir" fazlasıdır.
Yukarıdaki şekle göre A bilgisayarı, B sunucuna cevap olarak göndermiş olduğu segmentin başlığındaki ACK bayrağının değerini "1" olarak belirlemiştir. Ayrıca bir önceki segmenti aldığına dair de B sunucusuna bir onay numarası (acknowledgment number) göndermiştir. Bu onay numarası bir önceki segmentte yer alan B sunucusuna ait olan sıra numarasından (sequence number) "bir" fazladır. Yani 3363649303 + 1 = 3363649304'tür. Burada A bilgisayarı şunu demektedir: "Sıra numarası 3363649303 olan segmenti aldım.Bundan sonra yollayacağın segmentin sıra numarası 3363649304 olsun."Böylece A bilgisayarı ve B sunucusu arasında TCP bağlantısı kurulmuş olur. Bundan sonra her iki uç arasında veri akışı başlayacaktır. Bundan sonra veri akışının devam etmesi için ilk TCP segmentini A bilgisayarı gönderecektir. Bu ilk segmentin sıra numarası 42276644579 ve onay numarası da 3363649304 olacaktır.
Yukarıdaki şekilde A bilgisayarı, B sunucusuna şunu demektedir: "Senden gelen 3363649303 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 3363649304 olsun."Bundan sonra gelecek olan üç segment aşağıdaki gibi olacaktır:
Yukarıdaki şekilde B sunucusu, A bilgisayarına şunu demektedir: "Senden gelen 4227644579 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 4227644580 olsun."
Yukarıdaki şekilde A bilgisayarı, B sunucusuna şunu demektedir: "Senden gelen 3363649304 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 3363649305 olsun."
Yukarıdaki şekilde B sunucusu, A bilgisayarına şunu demektedir: "Senden gelen 4227644580 sıra numaralı segmenti aldım. Bundan sonra göndereceğin segmentin sıra numarası 4227644581 olsun."Veri alışverişi, sıra ve onay numaraları bu şekilde artarak bağlantı bitene kadar devam eder.
ÖNEMLİ NOT: Bu örnekte dikkat edilirse sıra ve onay numaralarının birer birer arttığı görülür. Fakat gerçek hayattaki bir TCP bağlantısında bu numaralar birer birer artmazlar. Bu numaralar, segmentin içerdiği verinin büyüklüğüne bağlı olarak bir artış gösterirler. Bununla ilgili örneği de bir sonraki yazımızda anlatmayı planlıyoruz.
Tuesday, June 2, 2009
Basit SNMP Komutları
Elimizde bir adet Cisco 2621 yönlendirici, bir adet Cisco WS-3550-48-SMI anahtar ve bir adet HP ProCurve 2848 anahtar mevcut. SNMP komutlarıyla bu üç cihazın ayakta kalma sürelerinin ve sistem bilgilerinin nasıl alındığını göstereceğiz. Tabii ki bu üç cihaz üzerinde SNMP servisinin aktif olması gerekmektedir. Komutları LINUX CentOS 5.2 kurulu bir bilgisayardan yazacağız.
Önce Cisco 2621 yönlendiriciden bilgi almaya başlayacağız:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (134593) 0:22:25.93
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (152809) 0:25:28.09
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (190572) 0:31:45.72
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (197183) 0:32:51.83
Yukarıdaki komutları açıklayalım:
snmpget ve snmpwalk LINUX komutları yönlendiricimizden SNMP ile bilgi almamıza yarar.
v1 & v2c: SNMP'nin versiyonunu gösterir. Yönlendiricimiz SNMPv1 ve SNMPv2c versiyonlarını desteklediği için her iki komutla da yönlendiricimizden bilgi almak mümkün olmuştur.
-c hedehodkalkani: Burada -c'den sonra yazılan ifade "SNMP community" değeridir. Buraya hem RO, hem de RW değeri yazılabilir.
192.168.2.61: SNMP bilgilerini alacağımız yönlendiricinin IP numarasıdır.
system.sysUpTime.0: Yönlendiricinin ayakta kalma süresini belirten MIB değeridir.
Bundan sonra yazılacak olan komutlar yukarıdaki parametrelere uygun olarak yazılacaktır.
Şimdi de bir SNMP komutuyla yönlendiricimizin sistem bilgilerini alalım:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
Bu örnekte Cisco yönlendiricimizden "show version" komutunun bir kısmına karşılık gelen bilgileri almış olduk.
system.sysDescr.0: Cisco yönlendiricimizde "show version" yazdığımızda karşımıza gelen bilgilerin bir kısmını göstermeye yarayan SNMP MIB değeridir.
Şimdi de Cisco WS-3550-48-SMI anahtarında aynı bilgileri, aynı komutlarla alalım:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9442666) 1 day, 2:13:46.66
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9450371) 1 day, 2:15:03.71
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9454687) 1 day, 2:15:46.87
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9459263) 1 day, 2:16:32.63
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
Şimdi de HP ProCurve 2848 anahtarının bilgilerini aynı komutlarla alıyoruz:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209861314) 140 days, 0:43:33.14
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209868785) 140 days, 0:44:47.85
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209872829) 140 days, 0:45:28.29
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209878435) 140 days, 0:46:24.35
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
Önce Cisco 2621 yönlendiriciden bilgi almaya başlayacağız:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (134593) 0:22:25.93
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (152809) 0:25:28.09
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (190572) 0:31:45.72
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.61 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (197183) 0:32:51.83
Yukarıdaki komutları açıklayalım:
snmpget ve snmpwalk LINUX komutları yönlendiricimizden SNMP ile bilgi almamıza yarar.
v1 & v2c: SNMP'nin versiyonunu gösterir. Yönlendiricimiz SNMPv1 ve SNMPv2c versiyonlarını desteklediği için her iki komutla da yönlendiricimizden bilgi almak mümkün olmuştur.
-c hedehodkalkani: Burada -c'den sonra yazılan ifade "SNMP community" değeridir. Buraya hem RO, hem de RW değeri yazılabilir.
192.168.2.61: SNMP bilgilerini alacağımız yönlendiricinin IP numarasıdır.
system.sysUpTime.0: Yönlendiricinin ayakta kalma süresini belirten MIB değeridir.
Bundan sonra yazılacak olan komutlar yukarıdaki parametrelere uygun olarak yazılacaktır.
Şimdi de bir SNMP komutuyla yönlendiricimizin sistem bilgilerini alalım:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.61 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C2600 Software (C2600-I-M), Version 12.3(25), RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2008 by cisco Systems, Inc.
Compiled Mon 28-Jan-08 19:21 by alnguyen
Bu örnekte Cisco yönlendiricimizden "show version" komutunun bir kısmına karşılık gelen bilgileri almış olduk.
system.sysDescr.0: Cisco yönlendiricimizde "show version" yazdığımızda karşımıza gelen bilgilerin bir kısmını göstermeye yarayan SNMP MIB değeridir.
Şimdi de Cisco WS-3550-48-SMI anahtarında aynı bilgileri, aynı komutlarla alalım:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9442666) 1 day, 2:13:46.66
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9450371) 1 day, 2:15:03.71
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9454687) 1 day, 2:15:46.87
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.60 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9459263) 1 day, 2:16:32.63
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.60 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System Software
IOS (tm) C3550 Software (C3550-I9Q3L2-M), Version 12.1(11)EA1, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2002 by cisco Systems, Inc.
Compiled Mon 28-Aug-02 09:33 by antonino
Şimdi de HP ProCurve 2848 anahtarının bilgilerini aynı komutlarla alıyoruz:
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209861314) 140 days, 0:43:33.14
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209868785) 140 days, 0:44:47.85
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209872829) 140 days, 0:45:28.29
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.62 system.sysUpTime.0
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1209878435) 140 days, 0:46:24.35
root@SSS#snmpget -v1 -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpget -v2c -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpwalk -v1 -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
root@SSS#snmpwalk -v2c -c hedehodokalkani 192.168.2.62 system.sysDescr.0
SNMPv2-MIB::sysDescr.0 = STRING: ProCurve J4904A Switch 2848, revision I.10.43, ROM I.08.07 (/sw/code/build/mako )mkfs))
Subscribe to:
Comments (Atom)