Akhir Dari Sebuah Perjalanan

January 26, 2006

“Welcome to Brussel International Airport. The weather is fine, but it’s cold. It’s minus 5 degree out there. This is your captain speaking and thank you for flying Swiss Air.”

24 January 2006. 7.30 pagi. Tepat 24 jam sebelum ujian CCIE Security lab ke-2 gue. Pesawat yg gue naekin baru mendarat di Brussel dan gue kaget mendengar announcement dari pilot.
Minus 5 degree celcius! Pertama kali gue dalam hidup berada di tempat dgn temperatur segitu. Dgn cuaca terpanas di Dubai yg bisa mencapai lebih dari 45 derajat waktu summer, berarti gue sudah mengalami perbedaan cuaca 50 derajat.

Cuaca menjadi penting karena hotel gue deket dgn kantor Cisco di Pegasus Park. Jadi gue akan jalan dari hotel sekitar jam 7.30 di pagi waktu ujian. Berdasarkan pengalaman gue di ujian pertama, gue cuman butuh buat jalan kurang dari 10 menit. Di temperatur 5 derajat di bawah titik beku air.

Looks like I have to beat the weather first before I can beat CCIE lab.

25 January 2006. Gue mulai jalan kaki sekitar jam 7.30. Gue sempet baca di weather.com kalo cuaca ternyata gak nyampe minus 5. Cuman sekitar minus 2.
Lumayan heheh. But it’s cold. It’s bitter cold.
Sampe di Cisco ketemu beberapa orang yg mau ngambil Routing lab. Dan rata-rata first timer. Kelihatan dari mukanya yg pada nervous.

Proctor gue gak sama dgn ujian pertama gue bulan Desember. Tampangnya lebih serem ketimbang si Erik, protoctor gue yg dulu. Gue inget dia bilang sebelum ujian: “If you have any problem, you can ask me. But most probably I will not asnwer you”
Kayaknya cuman gue doank yg ketawa di ruangan itu. Yg laen pada ciut. :)

I was fast. I was really fast.
Sebelum makan siang jam 12, gue udah selesai semua sections. Tapi bukannya tanpa masalah. OSPF routers gue di 1 VLAN gak form adjancies, stuck di 2-WAY. Tapi gue dapet semua LSA dan routes. Gue udah coba debug dan restart berkali-kali. Tapi tetep selalu ada 2 routers yg stuck di 2-WAY. Dan routers nya gak selalu sama.
Terus VPN gue juga bermasalah. Gue udah pernah bikin sampe 10 IPSec tunnel di lab gue di satu network yg sama, jadi gue selalu berpikir kalo VPN adalah salah satu strong point gue. Tapi IPSec tunnel gue di ujian gak mau naik juga.
AAA di switch gue tidak behave sebagaimana mestinya. Gue yakin ini bug tapi gue gak sempet ngeliat versi software yg digunakan.
Semua masalah ini gue skip dulu sementara dan habis makan gue berencana buat menyelidiki lebih dalam.
Paling tidak gue bisa sampai section terakhir, IDS, sebelum makan sesuai strategi gue.

Event Viewer yg digunakan buat ngeliat alert IDS gak mau jalan. Sebelum turun dari CCIE lab di lantai 4 ke restoran di ground floor, gue sempet bilang ke Proctor gue kalo Event Viewer gak jalan dan gue mau merestart PC gue. Dia bilang gue gak perlu restart PC dan dia bakal nge-fix masalah itu setelah makan.

Pas makan siang gue ketemu Erik. Dia ada tapi gak ngawasin ujian hari ini.
Gue bilang ke dia: “Hey, Erik, still remember me? I came last month to take Security lab. I was so confident and I told you that I would pass. But I failed. Shame on me, eh?”
Dia ketawa. Gue bilang score gue di ujian pertama udah di atas 70%. Jadi dari Desember sampe lab hari ini gue cuman belajar gimana caranya dapetin yg 30% lagi. Dan ini bikin gue lebih confident, sekaligus lebih santai hari ini.
Pesan dia cuman satu: baca soal dgn teliti.
Gue jawab: “English is not my native languange. The wording is difficult to understand.”
Jawaban dia simple: clarify with the proctor. I will, gue bilang.

Habis makan siang gue dapet anugrah dari Tuhan: hujan salju pertama gue!
Gue langsung keluar dari restoran dan berdiri menikmati turunnya salju.
Sampe proctor gue manggil-manggil: “Man, what are you doing?”
Gue gak sadar ternyata semua orang udah siap mau ujian lagi.
Sorry, gue bilang, but this is the first snowfall in my life.
Semua orang yg ngedengerin pada ketawa. Gue cuek aja masuk lab dgn jaket gue yg putih-putih penuh salju ;)

Gue bilang ke proctor gue: “my first snowfall. Maybe this is a good sign for me?”
Dia bilang: “yeah? This is a sign for me too. Sign to stay until late in the office since we can’t drive if there is snow.” Heheh.

Setelah makan gue bener2 fokus buat ngedebug semua masalah gue. Selain itu gue juga meriksa konfigurasi gue buat hal-hal yg lain. Tapi tetep gue punya masalah dgn OSPF, VPN dan AAA di switch. Dan gue hitung gue bisa hilang 10 points lebih gara-gara 3 hal ini.
Sebelum makan siang gue gak nanya sama sekali ke proctor. Tapi setelah makan, hampir tiap 10 menit gue nanya ke dia.
Nanya, diskusi, ngotot.
Buat OSPF dan VPN gue sampe ngotot habis2an. Gue bilang: “Come on man. Something wrong either with the hardware or the software. I have tried this in my lab so many times. I know it should work. My config is right.”
Something must be wrong with this lab.

Untuk OSPF, dia lihat setingan gue terus bilang: “Man, just skip it. You said you can see the LSA and all the routes even it’s stuck in 2-WAY, right? Just skip it. As long as it doesn’t affect other configuration.” Gue nurut. Gue skip aja OSPF ini.
But VPN, dia bilang: “It should work, what do you want me to do? Something wrong with the way you set it up. Maybe you overlook something.”
Gue tetep ngotot: “I don’t. I don’t make mistake in VPN.”

Akhirnya pas waktu lab habis, gue bilang ke dia: “I was so confident before. But not anymore since my VPN doesn’t work. I scored my self and I may get somewhere between 75 to 85. So I may pass, or I may fail. But if I do fail, I will come again every month until I pass.”

Dia senyum. Tampang sangar tapi ternyata baik. Dia bilang, dia bakal meriksa VPN gue dan men-setup sesuai cara dia. Kalo dgn konfig dia dan gak jalan juga, berarti gue bener dan layak dapet point. Gue salamin dia dan bilang thank you berkali-kali.
Gue bersyukur proctor gue adalah orang yg sama yg bakal meriksa ujian gue.

Gue pulang ke hotel. Gue tetep seneng walaupun tahu kemungkinan bisa gagal gara2 banyak masalah. Gue seneng karena biar bagaimanapun gue udah berhasil mencapai skill level yg mungkin gak akan bisa gue dapetin kalo gue gak belajar CCIE.
Gue seneng karena gue bisa ngalamin ini semua.
Gue seneng karena dapet salju pertama gue.

Malemnya gue gak bisa tidur sampe besok paginya.
Dari jam 9 pagi gue meriksa CCO tiap 15 menit. Belum ada hasil.
Jam 11 akhirnya gue gak kuat. Gue keluar dari hotel buat jalan kaki mengitari daerah sini. Sempet kepikiran buat dateng ke kantor Cisco dan nanya hasil. Tapi akhirnya gue cuman muter-muter sekitar sejam dan balik ke hotel sambil kedinginan dan ingusan.
Brrr dingin bgt! Pas jalan gue gak ngerasain, mungkin karena banyak pikiran.

Akhirnya jam 12 an gue buka CCO, dan di situ tertulis gue PASS. Gue gak percaya begitu aja, gue coba CCIE verification tool. Dgn tool ini juga kelihatan kalo gue punya CCIE di Routing dan Security. Tetep gak percaya gue telepon Tamara Lovenaer, kordinator CCIE lab di Brussel. Dia ketawa-ketawa dan bilang gue lulus. Walaupun udah tahu, gue tetep ngejerit ke Tamara dan bilang thank you berkali-kali.

I still can’t believe it’s really over.
Perjalanan ini begitu berat dan melelahkan sampai gue sempet merasa bahwa ini gak akan pernah berakhir.

Gue menghabiskan total sekitar USD 12,000 buat CCIE Security. Dua kali ujian di Brussels. Beli peralatan seharga USD 4,000. Buku-buku dan workbooks. Tiket pesawat dan hotel booking. Exam fee USD 1500 per attempt.
Semuanya dari tabungan gue sendiri. Tabungan yg harusnya gue pake buat ngambil gelar Master.
Sebenernya lab gue bisa gue jual lagi dgn harga yg kurang lebih sama dan udah banyak yg tertarik. Satu kali ujian juga kemungkinan diganti kantor kalo gue mau sign contract.
So I’m not really in bad shape.

Kecuali kalo gue mau lanjut ke CCIE ke-3 tentunya.

Boss gue pernah nanya: “Why are you doing this? You are supposed to stay home and spend more time with your family. What are you seeking?”
Gue tadinya mau jawab: I seek the means to fight injustice.
Terus gue inget kalo gue bukan Batman.

Jadi gue bilang aja kalo gue itu pengen melakukan hal yg besar, men-setup network yg kompleks dgn berbagai teknologi dari VPN sampe MPLS.
Tapi ini gak mungkin karena gue kerja di UAE.
Di negara orang kaya yg gak mau tahu apa bedanya Layer 2 atau Layer 3.
Yg cuman pengen namanya masuk koran tanpa mau tahu bagaimana paket mengalir dari satu node ke node yg lain. Jangankan ngejelasin MPLS, nerangin IP addressing aja harus berkali-kali.
Jadi satu2nya cara buat gue bisa deploy teknologi yg kompleks ya cuman di CCIE.
CCIE bikin gue belajar tiap hari.
CCIE bikin gue baca RFC dan buku2 yg biasanya susah gue baca.
CCIE bikin gue tetep bangun sampe jam 3 pagi tiap hari buat ngelab.

I became 30 last month
. Di bulan Desember. Ulang tahun yg tidak gue rayakan karena jatuh seminggu setelah gue gagal di Brussel.
Gue tahu gue gak akan bisa begini terus.
Di satu titik nanti gue harus berhenti.
Tapi selama masih ada semangat, biarkanlah gue menikmati tantangan ini.
Selama ada waktu, biarkanlah gue menghabiskannya dgn melakukan hal spt ini.
Biarkanlah gue membagi semangat ini dgn orang2 lain.

Perjalanan ini gue tutup di sini.
Perjalanan baru sebentar lagi akan di mulai.

Lulus!

Alhamdulillah. Thanks God.

Sepertinya tidak ada kata-kata lain yg bisa gue ucapkan begitu baca di CCO kalo gue lulus ujian CCIE security lab yg gue ambil hari rabu kemaren. Dgn rasa masih tidak percaya gue langsung telpon Tamara Lovenaer, kordinator CCIE di Brussel dan dia mengkonfirmasi kalo gue lulus.

It’s over. Finally it’s really over.

Delapan bulan berkutat dgn 9 routers, 1 firewall, 1 IDS, 1 VPN concentrator, layer 3 switch, Tacacs/Radius dan Certificate Authority server. Tidur 4-5 jam sehari, ngelab rata-rata 6 jam tiap malam. Baca-baca buku dan CCO. Ngedengerin presentasi Networkers Online. Latihan dari berbagai workbook, sampe akhirnya mencapai taraf mampu bikin scenario sendiri.

Menurut Cisco per 1 Januari 2006 ada sekitar 700 orang di dunia yg lulus lebih dari 1 CCIE lab. Kurang dari 600 CCIE Security di dunia (Club of 600!). Cuma ada 400 orang di dunia yg punya CCIE Routing & Switching sekaligus Security. Gue orang Indonesia ke-2 setelah si Ardi yg udah lulus bulan Agustus lalu. Dan sepertinya gue orang pertama yg punya double CCIE di Middle East.

Does it make me feel good? Yeah, totally. For few hours.
Gue teriak-teriak sendiri di kamar hotel. Nangis terharu. Loncat-loncat di tempat tidur. Nelpon bini dan orang tua gue.

Setelah beberapa jam, satu pertanyaan mulai muncul: so what’s next?
Menurut Cisco gue sudah berhasil mencapai taraf ‘highly qualified’ di bidang Routing, Switching dan Security. Tapi gue tahu, it’s not true.
And it’s not enough. It will never be enough.
Kualifikasi gue masih jauh di bawah level expert. Meskipun E di CCIE adalah kepanjangan dari Expert. Dan gue sudah 2 kali dapet E dari Cisco.

Gue berambisi untuk mendalami MPLS dan QOS. Dan gue tahu di negara tempat gue kerja skrg sulit untuk mendapatkan pengalaman di kedua hal itu.
Tidak ada project yg cukup complicated.
Jadi yg bisa gue lakukan adalah: belajar CCIE lagi.
So CCIE service provider is next. It’s time to start new journey.

Tapi.. biarlah malam ini gue menikmati hasil perjuangan gue 8 bulan terakhir. Biarlah gue menikmati tidur tanpa memikirkan output debug IPSec atau overlapping NAT. Biarkanlah gue tidur lebih lama dari 6 jam malam ini.

Alhamdulillah. Thanks God.
And.. damn you, Cisco.
:)

Hidup Ini Indah

January 15, 2006

Tadinya gue berencana untuk membagi waktu selama libur 9 hari menjadi tiga: 8 jam buat belajar CCIE, 8 jam buat bersama keluarga dan 8 jam buat tidur. Tapi ternyata 8 jam terlalu berharga jika hanya untuk tidur.
Jadinya gue kembali tidur 5 jam sehari seperti biasa.
Tetap belajar CCIE 8 jam dan semua waktu yg ada gue curahkan bersama keluarga.

Cuaca di Dubai lagi perfect. Kalo siang paling panas 23-25 derajat celcius.
Pagi-pagi bisa 17-18 derajat. Sangat kontras jika dibandingkan dgn waktu summer yg bisa mencapai lebih dari 45 derajat celcius di siang hari.

Dalam masa libur ini gue dan keluarga beberapa kali pergi ke pantai, tepatnya di Jumeira open beach berdekatan dgn Burj Al Arab. Menghabiskan waktu seharian buat tiduran di pasir putih. Berenang di laut yg bersih dgn ombak yg tidak terlalu besar. Mengumpulkan kerang, kepiting sampe ke binatang laut kecil lain spt starfish.

Hidup ini indah. Cuman satu hal yg kurang: CCIE security.

Persiapan gue untuk ujian ke-2 kali ini sedikit berbeda.
Kalo dulu gue fokus ke latihan untuk speed, sekarang gue lebih fokus ke akurasi dalam menjawab soal. Semua teknologi security gue review dan gue tumpuk satu sama lain.
Dulu gue bergantung pada lab workbook dari berbagai vendor. Sekarang gue banyak menghabiskan waktu untuk baca CCO: technical tips, sample configuration, product guide, technology support sampe presentasi2 di networkers.

Berdasarkan hasil ujian pertama gue, gue dapet full point di bagian switching, IGP, BGP, AAA dan IDS. Jadi target gue nanti adalah untuk mempertahankan full point di bagian-bagian tsb, dan berusaha untuk dapet full point di firewall (pix dan IOS) dan vpn. Bagian IOS features dan stopping network attack menurut gue adalah hal tersulit di ujian karena apapun bisa keluar
di sana. Jadi untuk yg dua itu, gue bakal keep finger crossed dan berusaha sebaik mungkin.

Gue mulai belajar dgn melihat CCIE lab blueprint, baca tiap teknologi yg di list di situ satu-satu, trus coba di apply dalam satu network yg sama.
Sebagai contoh, gue mulai dgn setup lab gue dgn satu topologi network biasa. Terus pasang routing yg di hardened. Router dan switchnya sendiri juga gue hardened agar sulit di penetrasi attacker.
User bisa login ke device setelah di autentikasi dan di authorize pake radius, tacacs, atau local database.
Lewatkan process routing di firewall dan vpn tunnel.
Tumpuk VPN static dgn dynamic. Pasang VPN LAN to LAN dan remote access secara bersamaan dan autentikasi ke Radius atau Tacacs server.
Routing yg normal dan routing buat VPN gue acak-acak. Kadang pake static route, kadang policy routing. Bisa juga static route yg muncul akibat reverse-route gue inject ke routing protocol.
IPSec tunnel bisa di terminate ke HSRP address untuk high availability.

Satu router bisa jalan beberapa routing protocol sekaligus. Seringkali malahan beberapa instance dari routing protocol yg sama.
Ada router yg konek ke router lain dgn OSPF lewat 1 interface, konek juga ke router lain lagi dgn OSPF process-id 2 lewat interface yg lain. Kedua process-id tidak di redistribusi tapi jalan masing-masing.
Hampir semua router dipasang 802.1q trunk di ethernet interface nya. Dgn cara begini gue bisa bikin banyak virtual router. Satu router yg sama tapi konek ke network di beberapa titik dan ngejalanin routing yg berbeda-beda. Dan koneknya bisa dgn cuma 1 ethernet port.

VPN concentrator bisa jalan dgn 2 interface atau 1 interface, disebut vpn on a stick. Kalo pake 1 interface doank akan banyak trick di filter dan routing. GRE tunnel ada di mana-mana. NAT dan PAT dipasang di mana-mana.
IPsec dgn NAT overlapping atau PAT port redirection. IPsec dgn NAT-transparancy atau normal. QOS dan fragmentation di IPsec tunnel. Router sbg EZVPN server sekaligus client.
Dynamic vpn tunnel dgn source ip address yg berbeda-beda, dan routing protocol yg berbeda-beda pula running di dalam tunnel. VPN bisa antara firewall dgn router, router dgn router, firewall dgn vpn concentrator, router dgn vpn
concentrator, router ke router melalui firewall dengan atau tanpa NAT.
Gue pernah bikin sampe 10 VPN tunnel, terbanyak yg pernah gue bikin di satu network. Enam static tunnel dgn nat overlapping, port redirection dan juga high availability, sisanya dynamic tunnel untuk EZVPN client dan dgn menggunakan DMVPN. Ada router yg mau konek ke PC di directly connected network tapi lewat tunnel dulu ke router yg lain.
Policy routing, policy routing, policy routing.

Firewall configuration guide dan technical tips gue baca satu-satu dan cobain di lab. Fitur-fitur individu di firewall gue coba jalanin dan liat efeknya begitu di gabung dgn device-device yg lain.
Firewalling dilakukan dgn cara melewatkan established packet, reflective access control utk mem-permit return traffic, sampe stateful inspection. Time based access control atau dynamic ACL juga dicoba.
User di autentikasi terlebih dahulu sebelum bisa kirim paket web, smtp sampai sqlnet.
Teknik2 untuk nge-block attack di router atau firewall diaktifkan. Mulai dari block worm, scanning attempt sampe melimit bandwidth buat suspicious traffic.
Cuman satu maasalah di network attack, setingan kita tidak selalu bisa di test.

Trus jalanin IDS untuk monitor berbagai segment. Bikin custom signature dgn berbagai action: log, shun, reset.
Signature di match untuk paket stream dan atomic. Bikin berbagai scenarios utk atomic signature dgn berbagai action di beberapa titik.
Alarmnya di customize utk berbagai situasi. Mulai dari threshold jumlah alert yg otomatis berganti, summarize alert sampe ke custom signature berdasarkan source-destination ip address dan port atau cuman source address doank.
Action blocking atau shunning bisa di firewall, di router atau di kedua-duanya sekaligus.

Semua ini gue cobain di satu network yg sama. Device yg gue pilih untuk menjalankan suatu fitur bener2 random. Kadang router dgn router yg konek back-to-back, kadang router di belakang firewall dgn router di ujung yg jauh.
Scenario tanpa pola, untuk mengantisipasi segala kemungkinan pertanyaan di lab nanti.
Debug dari NTP, routing update sampe ke isakmp dijalankan di mana-mana.
Semua fitur yg dijalankan harus di test agar bener2 yakin bisa jalan.

Segala kombinasi setingan firewall, vpn dan ids gue coba lakukan.
Baru berhenti setelah konfigurasi jadi bener2 berantakan, setelah masing-masing teknologi ini bentrok satu sama yg lain.
Atau bisa juga karena fiturnya terlalu sulit buat dicoba, dan kemungkinan ini tidak akan ditanyakan di lab nanti.
Bisa juga berhenti karena gue sudah *enek* ngeliat hasil debug.

Lalu? Restart.
Reboot semua router dan mulai dgn setup topologi network yg baru.

Moto belajar CCIE yg tadinya: practice, practice, practice.
Gue ubah menjadi: practice, read CCO, and pray.

Gak ada jaminan cara baru bisa berhasil. Gak ada jaminan cara lama tidak bisa berhasil juga.
Tapi paling enggak gue menemukan cara yg membuat gue bisa belajar implikasi dari berbagai teknologi security jika di apply dalam satu network.
Buat gue ini satu langkah maju.
Dan kalo mau jujur, cara ini lebih fun ketimbang sebelumnya.
Gue yg bikin scenario, gue yg bikin limitasi, gue yg setup rules.

Sepuluh hari lagi.

God Gives Me 9 Days

January 4, 2006

Ruler of Dubai, sekaligus Vice President UAE meninggal pagi ini. Mulai hari ini sampai Jum’at tgl 13 Januari 2006 semua sekolah dan kantor government tutup.
Berarti gue dapet 9 hari libur. 9 hari buat belajar CCIE.

Semenjak gue gagal December 8 lalu di Brussels, butuh 3 minggu buat mengevaluasi jawaban gue.

Cisco bilang gue kurang 7 points buat lulus.
Hitungan gue, gue cuman salah total 15 points.
Yg berarti score gue masih di atas 80.

Butuh 3 minggu buat bisa menerima kenyataan.
Butuh 3 minggu buat bisa ngeyakinin diri bahwa CCIE lab itu penilaiannya fair, yg salah pasti gue.
Butuh 3 minggu buat bisa bilang:
“what the heck, I’m just 7 points away to become double CCIE.
I will keep attemping the lab until I pass”

Semenjak minggu lalu gue udah siap-siap buat ujian ke-2 akhir bulan ini.
Baru pagi ini gue dapet visa Schengen multiple entry selama 3 bulan, yg berarti kalo gue gagal lagi gue bisa berangkat 2 kali lagi tanpa harus ngurusin visa.
Gue udah gak mikirin hasil re-read, walaupun gue dulu submit request.
Karena selain sampe sekarang hasilnya belum keluar juga, gue udah pasrah.
Buat gue 1st attempt udah lewat, saatnya mempersiapkan diri buat 2nd attempt.

Yg gue lakukan sekarang hanya.. belajar kesalahan gue yg 15 points yg gue tahu.
Dan memastikan point yg gue udah dapet di lab pertama gak bakalan turun.

Tuhan memberi gue 9 hari.
Time to go back to console.

The Power of NAT

January 1, 2006

Network Address Translation (NAT) adalah suatu teknik untuk mengubah suatu IP address ke IP address yg lain. Hal ini bisa dikarenakan karena di jaringan kita mengunakan network address yg disebut private address space di RFC 1918, yaitu:

10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

Dan karena ini adalah private address, jaringan kita tentunya tidak dapat berkomunikasi dgn jaringan lain di Internet, karena semua host yg ingin terkoneksi di Internet harus menggunakan global atau public IP address. Untuk ini kita perlu men-translate IP address kita yg private menjadi public IP address.

Alasan lain untuk menggunakan NAT adalah security. Kita bisa men-translate seluruh jaringan kita (missal 254 PC) menjadi 1 public IP. Teknik ini disebut many-to-one NAT atau biasa disebut Port Address Translation (PAT). Teknik ini sangat bermanfaat jika kita menginginkan user di jaringan kita untuk meng-inisiasi koneksi ke Internet (browsing internet atau mengirim email misalnya), tapi kita tidak menginginkan host dari Internet untk meng-inisiasi koneksi ke PC user kita.
Host dari Internet tidak bisa meng-inisiasi koneksi ke internal host kita karena hanya ada 1 public IP address yg terlihat di jaringan kita, sedangkan jumlah PC yg sebenarnya ada lebih dari 1. Tentunya jika PC kita yg meng-inisiasi, maka reply atau return packet akan bisa
kembali karena device yg kita gunakan untuk melakukan NAT, akan memiliki mapping table dari NAT yg terjadi di jaringan.

Untuk kasus one-to-one NAT, dimana 1 private IP akan di-translate menjadi 1 global IP, maka mapping nya akan spt berikut:

Router#sh ip nat tra
Pro Inside global Inside local Outside local Outside global
— 195.1.134.1 192.168.1.1 — —
— 195.1.134.2 192.168.1.2 — —

Dalam contoh ini, IP private 192.168.1.1 di-translate ke public IP 195.1.134.1, IP private 192.168.1.2 di-translate ke public IP 195.1.134.2 dst.
Inside local adalah terminologi utk real IP address PC di jaringan kita, sedangkan Inside Global adalah public IP address yg kita gunakan untuk men-translasi real IP address tsb.
Outside local adalah local IP address dari tujuan kita sebagaimana kita melihatnya dari jaringan kita. Sedangkan Outside global adalah global IP address dari tujuan kita yg terlihat di Internet.

Ini bermanfaat utk destination based NAT, sbg contoh sbg berikut:
Ada server di Internet dgn global IP address 11.11.11.11, tapi kita ingin semua users di jaringan kita utk melihat server tsb sbg 192.168.1.11
Maka kita bisa melakukan destination based NAT, dgn outside local adalah 192.168.1.11 dan outside global, IP address tujuan yg sebenernya, adalah 11.11.11.11.

Jika kita tidak melakukan destination based NAT, maka outside local dan outside global dari tujuan kita akan sama, yaitu public IP tujuan yg sebenernya, dan ini bisa dilihat di contoh mapping PAT.

Untuk contoh many-to-one NAT atau PAT, dimana banyak real IP dari PC kita di-translate menjadi 1 public IP, maka contoh mapping nya sbg berikut:

Router#sh ip nat tra
Pro Inside global Inside local Outside local Outside global
tcp 195.1.134.4:12338 192.168.1.3:12338 33.33.33.33:23 33.33.33.33:23
tcp 195.1.134.4:12337 192.168.1.2:12337 22.22.22.22:23 22.22.22.22:23

Dalam contoh ini, kita melakukan telnet (destination tcp port 23) ke remote host 22.22.22.22
dari private IP 192.168.1.2, dan telnet ke remote host 33.33.33.33 dari private IP 192.168.1.3.
Kita bisa lihat bahwa ke-2 private IP kita di-translate ke public IP yg sama, yaitu 195.1.134.4. Yg membedakan adalah source port yg digunakan di public IP.
Jadi di mapping ini terlihat bahwa koneksi dari 192.168.1.2 di map ke 195.1.134.4 port 12337, sedangkan koneksi dari 192.168.1.3 di map ke 195.1.134.4 port 12338.

Dgn adanya mapping ini, remote host 22.22.22.22 ketika mengirimkan paket reply (ingat di TCP/IP reply dari remote host destination portnya ditujukan ke source port dari host kita), akan mengirimkan paket ke 195.1.134.4 port 12337. Sedangkan reply packet dari 33.33.33.33 kan ke 195.1.134.4 port 12338.
Berdasarkan mapping tadi, NAT device atau router yg melakukan map bisa mengetahui bahwa packet reply dari 22.22.22.22 harus dikirimkan ke host 192.168.1.2 dan paket reply dari 33.33.33.33 harus dikirimkan ke host 192.168.1.3

Dari ke-2 contoh di atas kelihatan bahwa untuk normal NAT atau one-to-one NAT, setiap private IP akan memiliki public IP sendiri sehingga setiap host di jaringan kita masih bisa di hubungi dari luar. Host dari Internet masih bisa utk menghubungi tiap host kita karena
mereka memiliki public IP yg berbeda-beda.
Namun untuk kasus many-to-one NAT atau PAT, host dari Internet tidak dapat menghubungi setiap host karena semua host memiliki 1 public IP yg sama. Host dari internet hanya bisa me-reply koneksi dari host kita berdasarkan source port yg berbeda-beda.

Ok, langsung masuk contoh konfigurasi biar makin jelas. Contoh dilakukan dgn menggunakan Cisco router dgn 1 ethernet interface konek ke internal network dan 1 serial interface konek ke Internet. Kalo udah ngerti konsepnya bisa pake NAT device apa aja, gue sendiri buat memproteksi home lab gue pake OpenBSD PF.

Topologi:
Internal network – (eth0) router (s0/0) – internet

Internal network kita menggunakan private IP 192.168.1.0/24. IP address eth0 router kita 192.168.1.1 yg merupakan default gateway dari semua host di internal network.

1. Many-to-one PAT, semua private IP ke 1 public IP address

Kita cuma dapet 1 IP address dari ISP 195.1.134.2/30 yg juga merupakan IP address serial 0/0, router ISP kita menggunakan IP 195.1.134.1 yg juga merupakan default route router kita.
Maka konfigurasi PAT sbg berikut:
- Buat ACL yg mem-permit semua network 192.168.1.0/24

Router(config)#ip access-list standard internal_network
Router(config-std-nacl)#permit 192.168.1.0 0.0.0.255

- Bikin NAT rule untuk mentranslate net 192.168.1.0/24 ke 195.1.134.2 yg merupakan IP address s0/0

Router(config)#ip nat inside source list internal_network interface s0/0 overload

- enable NAT di interface e0/0 dan s0/0

Router(config)#int e0/0
Router(config-if)#ip nat inside

Router(config)#int s0/0
Router(config-if)#ip nat outside

2. ISP kita ternyata memberikan kita public IP 195.1.134.0/24, yg berarti range public IP yg bisa kita gunakan adalah 195.1.134.1 – 195.1.134.254. Ini berarti kita bisa melakukan one-to-one NAT, contoh:
192.168.1.1 ke 195.1.134.1
192.168.1.2 ke 195.1.134.2, dst.

Maka konfigurasi yg perlu dilakukan hanya:

Router(config)#ip nat inside source static network 192.168.1.0 195.1.134.0 /24

Tentunya enable NAT di e0/0 dan s0/0 spt contoh no.1

3. Kalo gak dapet persis 254 public IP gimana? Misal dapetnya 195.1.134.0/29, yg berarti range public IP yg bisa digunakan adalah 195.1.134.1-195.1.134.6 (ingat dgn /29 ada total 8 IP dari 0 sampai 7, tapi 0 adalah network address dan 7 sebagai IP terakhir merupakan
broadcast address).

Jika kita mau mentranslate net 192.168.1.0/24 ke range IP 195.1.134.1-195.1.134.6

- bikin NAT pool

Router(config)#ip nat pool public_IP 195.1.134.1 195.1.134.6 netmask 255.255.255.248

- bikin NAT rule, pake ACL internal_network spt contoh no.1 buat permit semua internal net 192.168.1.0/24

Router(config)#ip nat inside source list intenal_network pool public_IP

Jgn lupa enable NAT di e0/0 dan s0/0 spt contoh no.1

4. Ada masalah dgn contoh no.3? Ada.

Dalam 1 waktu, hanya ada 6 internal private IP yg bisa di translate ke 6 public IP. Jadi koneksi dari internal host ke 7 akan gagal dan harus menunggu sampai translation mapping timeout dan di clear, sehingga public ip kembali tersedia.

Cara mengatasinya, kita bisa bikin pool dgn 5 public IP address, dan 1 IP terakhir buat PAT. IP terakhir, 195.1.134.6 digunakan sbg IP address utk interface s0/0

Router(config)#ip nat pool public_IP 195.1.134.1 195.1.134.5 netmask 255.255.255.248

Router(config)#ip nat inside source list internal_network pool public_IP
Router(config)#ip nat inside source list internal_network interface s0/0 overload

Dgn begini, 5 private IP yg pertama akan di translate ke 5 public IP di pool, sedangkan private IP yg lain akan di translate ke ip ke-6, yg merupakan ip address dari interface s0/0.

5. Ok, ayo masuk ke contoh yg lebih advance:
Kita punya 6 public IP dari range 195.1.134.1.- 195.1.134.6
IP address 195.1.134.4 kita gunakan sbg ip address interface s0/0 router kita
IP address 195.1.134.1 digunakan oleh router ISP interface s0/0, yg merupakan default gateway router kita
IP address 195.1.134.2 mau kita gunakan sbg ip address web server kita, dgn real IP 192.168.1.2
Dan IP addres 195.1.134.3 mau kita gunakan sbg ip address mail server kita, dgn real IP 192.168.1.3

Sisanya, 195.1.134.5 dan 6, akan kita pergunakan nanti jika kita punya server2 baru

- Bikin ACL buat semua network, access-list internal_network permit 192.168.1.0 0.0.0.255

- Konfigure PAT buat semua internal network ke interface s0/0

Router(config)#ip nat inside source list internal_network interface s0/0 overload

- Bikin one-to-one NAT buat web dan mail server

Router(config)#ip nat inside source static 192.168.1.2 195.1.134.2
Router(config)#ip nat inside source static 192.168.1.3 195.1.134.3

Jgn kuatir jika terjadi overlap antara static NAT diatas dgn PAT di konfigurasi sebelumnya. Static NAT akan meng-overide rule utk 192.168.1.2 dan 192.168.1.3, sehingga ke-2 IP tsb tidak akan di PAT meskipun termasuk dlm ACL internal_network.
Jgn lupa enable NAT di interface s0/0 dan e0/0 spt contoh no.1

Dan kalo kita punya IOS Firewall dan ACL ingress in interface s0/0, maka kita harus permit koneksi dari internet ke public IP web dan mail server kita, dgn port yg terkait spt tcp 80 dan 25. Jadi di ACL ingress s0/0 jgn gunakan real IP address.

6. Kita terkoneksi dgn ISP, router kita cuman dapet 1 public IP address buat interface s0/0 tapi punya web server dan mail server? Jgn kuatir, ini bisa dilakukan dgn teknik port redirection.

Jadi, bikin dulu PAT biar internal network kita bisa konek ke Internet

Router(config)#ip nat inside source list internal_network interface s0/0 overload

Trus bikin port redirection buat traffic ke port 80 dan 25, di contoh ini private IP web server kita tetap 192.168.1.2 dan mail server 192.168.1.3

Router(config)#ip nat inside source static tcp 192.168.1.2 80 interface s0/0 80
Router(config)#ip nat inside source static tcp 192.168.1.3 25 interface s0/0 25

Dgn cara begini, traffic yg datang ke public IP interface serial port 80 akan di redirect ke real IP web server 192.168.1.2, dan traffic yg datang ke serial port 25 akan di redirect ke real IP mail server 192.168.1.3
Tinggal daftar di public DNS server untuk web dan MX record mail server kita, untuk me-resolve ke public IP router interface s0/0. Keuntungan lain dgn cara PAT ke interface adalah kita bisa saja mendapatkan IP address yg berbeda-beda (dynamic IP) setiap kali konek ke ISP.
Dgn setingan di atas, kita tidak perlu kuatir IP kita akan berubah.
Hanya mungkin public IP yg kita daftarkan untuk web dan mail server di public DNS server harus selalu di-update sesuai dgn IP address yg sedang kita dapatkan.

Mulai kerasakan The Power of NAT? :)

7. Ok, seandainya kita gak mau mentranlasi koneksi dari 192.168.1.0/24 ke 192.168.2.0/24 (katakanlah ini network partner kita dan kita setup VPN misalnya), tapi kalo tujuannya ke internet maka spt contoh yg sebelumnya kita mau translasikan dgn PAT ke interface s0/0

- bikin ACL, extended dgn men-deny traffic dari net 192.168.1.0 ke 192.168.2.0, tapi permit yg lain

Router(config)#ip access-list extended selective_NAT
Router(config-ext-nacl)#deny ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255
Router(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any

Lalu bikin PAT rules
Router(config)#ip nat inside source list selective_NAT interface s0/0 overload

Karena di deny di ACL, maka traffic dari net 192.168.1.0 ke 192.168.2.0 tidak akan di translate, sedangkan diluar itu akan di PAT ke interface s0/0.

8. Makin advance, misalnya kita skrg punya 2 koneksi ke Internet, lewat interface s0/0 ke ISP 1 dan lewat interface s0/1 ke ISP 2.
Ke-dua ISP tsb memberikan kita 1 public IP buat masing-masing interface serial router kita.

Kita mau pada saat internal network konek ke ISP 1, maka akan di translate dan lewat interface s0/0, sedangkan pada saat internal network konek ke ISP 2 akan di translate dan lewat interface s0/1 (penentuan traffic dari internal network akan ke ISP yg mana
sebenernya di atur oleh normal routing, atau bisa menggunakan policy based routing, tapi di contoh ini kita berasumsi routingnya sudah jalan dan fokus kita adalah NAT berdasarkan interface output dari traffic)

Jadi kita menggunakan teknik policy based routing alias route-map untuk melihat traffic dari internal network melalui interface serial yg mana, kemudian akan di PAT secara sesuai:

Router(config)#route-map to_ISP1 permit 10
Router(config-route-map)#match interface s0/0

Router(config)#route-map to_ISP2 permit 10
Router(config-route-map)#match interface s0/1

Router(config)#ip nat inside source route-map to_ISP1 interface s0/0 overload
Router(config)#ip nat inside source route-map to_ISP2 interface s0/1 overload

Dgn ke-2 route-map tsb, packet yg akan keluar melalui interface s0/0 akan match dgn route-map to_ISP1, dan di PAT ke interface s0/0 IP address.
Sedangkan packet yg akan keluad melalui interface s0/1 akan match dgn route-map to_ISP2, dan di PAT ke interface s0/1 IP address.

Sebenernya masih banyak contoh dan trick penggunaan NAT dgn Cisco router, misal load balancing dgn NAT, destination-based NAT dll. Tapi kayaknya semua contoh di atas sudah cukup buat small-medium business network.
Kalo ada masalah dgn konfigurasi NAT, periksa mapping kita dgn show ip nat translation, dan lakukan debug ip nat.

Kalo mau baca-baca lebih lanjut, coba lihat NAT technical tips dan contoh config dari CCO.

Selamat tahun baru 2006.