DNS SERVER IMPLEMENTATION - repository.usd.ac.idrepository.usd.ac.id/31992/2/005314029_Full.pdf ·...
Transcript of DNS SERVER IMPLEMENTATION - repository.usd.ac.idrepository.usd.ac.id/31992/2/005314029_Full.pdf ·...
DNS SERVER IMPLEMENTATION
WITH IPv6 PROTOCOL DEVELOPMENT OF TOOLS named6 BASED
ON SHELL SCRIPT AND PERL
A Thesis
Presented as Partial Fulfillment of the Requirements
to Obtain the Sarjana Teknik Degree
in Department of Informatics Technology
by:
Fito Nathius Tatontos
005314029
DEPARTMENT OF INFORMATICS TECHNOLOGY
FACULTY OF ENGINEERING
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2006
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan dalam
kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, Oktober 2006
Penulis
Fito Nathius Tatontos
iv
Halaman Persembahan
This paper dedicated 2 :
My Almighty God (Mr. J)
( ) Dad, Mom, Sister, Kei &
My Family
I have no special words or something 2 give 4 all of your provisions, prayers, kindnesses,
supports, patient, & etc.
Thank U, never be enough 2 avenge all of your provisions, prayers, kindnesses, supports,
patient & etc.
With Love, your Fito
v
Halaman Motto
Never stop…feel Satisfied
4 what U’ve Got and 4 what U’ve Done
today…
Tomorrow……… Must Get
D’New Things & Better than Today
My Weakness is My Strength
vi
ABSTRAKSI
Pada saat ini jumlah pengguna IP semakin bertambah banyak, dimana
resource yang disediakan untuk alamat IP publik ini semakin sedikit. Oleh karena
itu, Internet Engineering Task Force (IETF) mendesain suatu versi protokol IP
yang baru yaitu IP versi 6 atau IPv6. IPv6 ini menyediakan kombinasi sebanyak
2128 alamat atau sebesar 340282366920938463463374607431768211456 alamat.
Sehingga dengan resource alamat sebesar ini diharapkan komunikasi komputer di
seluruh dunia tidak akan kehabisan alamat.
Hasil dari implementasi dengan pemakaian server DNS berbasis protokol
IPv6 untuk konversi nama ke alamat IPv6 akan menggunakan sistem operasi
Linux yang memiliki layanan aplikasi server DNS (Domain Name System) dari
program BIND (Berkeley Internet Name Domain). Sehingga dimasa mendatang,
layanan DNS dapat membantu layanan, aplikasi atau sistem operasi lain berbasis
protokol IPv6.
vii
ABSTRACT
Today the use of IP version is increasing more and more, which the
reserved resource of this public IP address is decreasing. Therefore, Internet
Engineering Task Force (IETF) designed a new protocol version of IP that called
IP version 6 or IPv6. This version provides 2128 addresses combination or equal to
340282366920938463463374607431768211456 addresses. With this large of
range IP address resource, expected computer communications in all the world
will not lacks of address resource.
The result of the implementation by using DNS server based on IPv6
protocol to convert name to IPv6 address with Linux operating system which has
DNS (Domain Name System) server application services from BIND (Berkeley
Internet Name Domain) program. In the future, the use of DNS service will be
useful for other applications, services or operating systems which based on IPv6
protocol.
viii
KATA PENGANTAR
Puji syukur penulis haturkan kepada Tuhan Yang Maha Esa atas segala karunia
yang diberikan, sehingga penulis dapat menyelesaikan tugas akhir yang berjudul
“IMPLEMENTASI SERVER DNS DENGAN PROTOKOL IPv6:
PENGEMBANGAN TOOLS named6 BERBASIS SHELL SCRIPT dan PERL”
ini dengan baik. Penulisan ini merupakan salah satu syarat untuk memperoleh
gelar Sarjana Teknik di Universitas Sanata Dharma pada program studi Teknik
Informatika.
Selama penulisan skripsi ini penulis telah memperoleh bantuan dan
bimbingan dari berbagai pihak. Oleh karena itu penulis mengucapkan terima kasih
kepada:
1. Ibu A.M. Polina, selaku Ketua Jurusan Tenik Informatika Universitas Sanata
Dharma.
2. Bapak Albert A. Hadhiatma selaku pembimbing I yang telah banyak
membantu dan membimbing selama mengerjakan tugas akhir ini.
3. Bapak H. Agung Hernawan selaku pembimbing II yang telah memberi banyak
masukan dan bimbingannya.
4. (Alm.) Papa, Mama, Oyen, Keiko dan saudara-saudara yang telah memberi
dorongan baik moril maupun materi.
5. Bapak Donny yang banyak memberi masukan, ilmu-ilmu di luar kampus dan
dukungan via sms-nya sampai dengan saat ini.
ix
6. Bapak Belle dan Pak Dar yang banyak memberi bantuan dan semangat terus.
Thanks Pak.
7. Teman-teman TI: Team Lapeks: Wawan “Gundul”, Ninuk “Unino”, Sony
“Sang Poh” + Oenang “Mbeek atau Mbing” thanks buat support dan saat
nemenin nge-garap TA-nya, Teman Asisten Jarkom yang bareng Ariep,
Wawan Suna, Bowcil, Kitul Kids: Joe Wecky KLoN-NenG, I-Pay dan teman-
teman lainnya, thanks a lot guys.
8. Sohib-ku: Oh..Pit & Liendo Mblong @ JKT, Ichpoen & Bgy @ JGY, thanks a
lot bro.
9. Semua pihak yang tidak tersebutkan, yang telah memberikan dukungan serta
bantuannya guna penyusunan karya tulis ini
Penulis menyadari sepenuhnya bahwa Tugas Akhir ini masih jauh dari
kesempurnaan dan masih banyak kekurangan. Oleh karena itu penulis sangat
mengharapkan kritik dan saran yang bersifat membangun demi perbaikan lebih
lanjut. Penulis berharap semoga Tugas akhir ini dapat bermanfaat dan berguna
bagi pembaca.
Yogyakarta, Oktober 2006
Penulis
x
DAFTAR ISI
HALAMAN JUDUL................................................................................................ i
HALAMAN PERSETUJUAN................................................................................ ii
HALAMAN PENGESAHAN................................................................................ iii
HALAMAN PERNYATAAN KEASLIAN KARYA... ........................................ iv
HALAMAN PERSEMBAHAN... ...........................................................................v
HALAMAN MOTTO.. .......................................................................................... vi
ABSTRAKSI.. ...................................................................................................... vii
ABSTRACT......................................................................................................... viii
KATA PENGANTAR... ........................................................................................ ix
DAFTAR ISI.......................................................................................................... xi
DAFTAR GAMBAR..... ..................................................................................... xvii
DAFTAR TABEL... ............................................................................................. xix
BAB I PENDAHULUAN........ ..............................................................................1
1.1. Latar Belakang ..................................................................................................1
1.2. Batasan Masalah ...............................................................................................3
1.3. Rumusan Masalah .............................................................................................4
1.4. Tujuan Penulisan...............................................................................................5
1.5. Metodologi Penelitian .......................................................................................6
1.6. Sistematika Penulisan .......................................................................................7
xi
BAB II LANDASAN TEORI..... ..........................................................................9
2.1. Pengertian..........................................................................................................9
2.2. Jaringan Komputer....................................................................................... ...10
2.3. TCP/IP (Transfer Control Protocol / Internet Protocol).............................. ..13
2.3.1. TCP (Transmision Control Protocol) ...........................................................15
2.3.2. IP (Internet Protocol) ...................................................................................16
2.3.3. IPv6 (Internet Protocol versi 6)....................................................................19
2.3.3.1. Istilah-Istilah dalam IPv6 ..........................................................................21
2.3.3.2. Format Header IPv6................................................................... ...............22
2.3.3.3. Arsitektur Pengalamatan IPv6...................................................................23
2.4. UDP (User Datagram Protocol) ......................................................................24
2.5. PORT.... ..........................................................................................................26
2.6. Sistem Operasi Linux......................................................................................27
2.6.1. Jenis-Jenis Service pada Linux...... ..............................................................29
2.6.2. Domain Name System (DNS).... ..................................................................30
2.6.3. BIND pada Sistem Operasi Linux.... ...........................................................34
2.6.3.1. Konfigurasi BIND dengan IPv4................................................................36
2.6.3.2. Forward DNS dengan IPv6.. .....................................................................36
2.6.3.3. Reverse DNS dengan IPv6........................................................................36
2.6.4. Cara Kerja DNS IPv6 dengan BIND... ........................................................37
2.6.4.1. Konversi alamat IPv6 dengan Format Nibble...........................................38
2.6.4.2. Konversi alamat IPv6 ke nama dengan Format Bitstring. ........................38
2.7. Pemrograman Shell.. .......................................................................................39
xii
2.7.1. Jenis-jenis Shell............................................................................................40
2.7.2. Bash Shell ....................................................................................................40
2.8. Pemrograman Perl... ........................................................................................43
2.8.1. Keuntungan Menggunakan Perl.. .................................................................43
2.8.2. Ekstensi Perl Untuk Database... ...................................................................44
2.8.3. Kelemahan Penggunaan Perl.. .....................................................................45
2.8.4. Tipe Data Perl.. ............................................................................................45
2.8.4.1. Tipe Data Scalar.. ......................................................................................46
2.8.4.2. Tipe Data Array.........................................................................................46
2.8.5. Program Sederhana Perl.. .............................................................................47
BAB III ANALISIS DAN PERANCANGAN SISTEM..................................49
3.1. ANALISIS ..................................................................................................... 49
3.1.1. Strategi pada masa Transisi......................................................................... 49
3.1.2. Kasus Penanganan Porgram BIND-named dengan IPv6........ .................... 53
3.1.3. Program BIND-named Pada Linux......... .................................................... 58
3.1.4. Analisis Kebutuhan................. .................................................................... 59
3.1.5. Analisa Proses.............. ............................................................................... 60
3.2. DESAIN ......................................................................................................... 80
3.2.1. Konfigurasi Jaringan ................................................................................... 80
3.2.2. Konfigurasi Hardware dan Software........................................................... 81
3.2.3. Bentuk Umum Program named6................................................................. 82
3.2.3.1. named6 start ............................................................................................. 83
xiii
3.2.3.2. named6 restart....... ................................................................................... 84
3.2.3.3. named6 stop............ ................................................................................. 84
3.2.3.4. named6 status......... .................................................................................. 84
3.2.3.5. named6 help........................... .................................................................. 84
3.2.3.6. named6 add.................... .......................................................................... 85
3.2.3.7. named6 edit.............. ................................................................................ 85
3.2.3.8. named6 delete........................................................................................... 86
3.2.3.9. named6 view.................. .......................................................................... 87
BAB IV IMPLEMENTASI PROGRAM.. ........................................................88
4.1. Lingkungan Implementasi...............................................................................88
4.1.1. Lingkungan Perangkat Lunak........ ..............................................................88
4.1.2. Lingkungan Perangkat Keras...... .................................................................89
4.2. Karakteristik Pengguna..... ..............................................................................90
4.3.Implementasi Program named6..... ..................................................................90
4.3.1. Inisialisasi Lokasi Direktori...... ...................................................................90
4.3.2. Inisialisasi Passing Parameter...... ................................................................91
4.3.3. Proses Utama Program named6.... ...............................................................91
4.3.4. Proses Fungsi bantu dan Variabel help...... ..................................................92
4.4. Proses Tambah Nama Server dan Host..... ......................................................96
4.4.1. Proses Tambah Server..................................................................................96
4.4.1.1. Proses Program cekIP.pl....... ..................................................................100
4.4.1.2. Proses Program ffwdSRV.sh...................................................................104
xiv
4.4.1.3. Proses Program reSRV.pl.... ...................................................................106
4.4.1.4. Proses Program reSRV.sh.... ...................................................................111
4.4.1.5. Proses Program named-resolv.sh... .........................................................112
4.4.2. Proses Tambah Host...................................................................................114
4.4.2.1. Proses Program cekIP.pl... ......................................................................116
4.4.2.2. Proses Program ffwdHST.sh...................................................................116
4.4.2.3. Proses Program reHST.pl........................................................................117
4.4.2.4. Proses Program reHST.sh..... ..................................................................117
4.4.3. Proses Ubah Server dan Host.....................................................................118
4.4.3.1. Proses Ubah Nama Server dan Host... ....................................................118
4.4.3.1.1. Program EditNama6.sh untuk Ubah Nama Server... ...........................121
4.4.3.1.2. Program EditNama6.sh untuk Ubah Nama Host.... .............................124
4.4.3.2. Proses Ubah Alamat Server dan Host... ..................................................125
4.4.3.2.1. Program cekIPB.pl untuk Ubah Alamat/Prefix Server dan Host... ......129
4.4.3.2.2. Program ReIPL.pl untuk Ubah Alamat/Prefix Server dan Host... .......129
4.4.3.2.3. Program ReIPB.pl untuk Ubah Alamat/Prefix Server dan Host... .......130
4.4.3.2.4. Program EditIP6.sh untuk Ubah Alamat/Prefix Server dan Host.. ......130
4.4.4. Proses Hapus Server dan Host... ................................................................133
4.4.4.1. Program delete6.sh untuk Hapus Server dan Host..................................136
4.4.5. Proses Tampil.............................................................................................136
BAB V ANALISA HASIL.... .............................................................................140
5.1. Analisa Hasil Perangkat Lunak.... .................................................................140
xv
5.2. Analisa Tools Pengembang...........................................................................142
5.3. Analisa File Utama dengan Format IPv6... ...................................................144
5.4. Kelebihan dan Kekurangan... ........................................................................144
5.4.1. Kelebihan Program ..... ..............................................................................144
5.4.2. Kekurangan Program.... .............................................................................145
BAB VI KESIMPULAN DAN SARAN............................................................146
6.1. Kesimpulan... ................................................................................................146
6.2. Saran..............................................................................................................148
xvi
DAFTAR GAMBAR
Gambar 2.1 Pemodelan Layer Menurut OSI dan TCP/IP.................. ....................11
Gambar 2.2 Pembagian Protokol menurut OSI......................................................11
Gambar 2.3 Pembagian Protokol menurut TCP/IP ...............................................12
Gambar 2.4 Segment TCP......................................................................................16
Gambar 2.5 Format Datagram IP ...........................................................................17
Gambar 2.6 Format Header IPv4 ...........................................................................22
Gambar 2.7 Format Header IPv6 ...........................................................................23
Gambar 2.8 Format Daragram UDP ......................................................................25
Gambar 2.9 Format 3 layer dalam internet.............................................................26
Gambar 2.10 Struktur sistem file Linux.................................................................29
Gambar 2.11 Lingkup Kerja sever DNS... .............................................................33
Gambar 2.12 Arsitektur Sistem Linux dan lokasi SHELL ....................................39
Gambar 3.1. Konfigurasi Jaringan dengan Server DNS..... ...................................53
Gambar 3.2.Flowchart proses tambah server program named6.............................62
Gambar 3.3.Flowchart program cekIP.pl tambah server.. .....................................63
Gambar 3.4.Flowchart program ffwdSRV.sh tambah server.................................64
Gambar 3.5.Flowchart program reSRV.pl tambah server......................................65
Gambar 3.6.Flowchart program reSRV.sh tambah server..... ................................66
Gambar 3.7.Flowchart program named-resolv.sh tambah server... .......................67
Gambar 3.8.Flowchart program named6 tambah klien host... ...............................68
Gambar 3.9.Flowchart program ffwdHST.sh tambah klien host.. .........................69
xvii
Gambar 3.10.Flowchart program reHST.sh tambah klien host.. ...........................70
Gambar 3.11.Flowchart program named6 ubah nama.. .........................................71
Gambar 3.12.Flowchart program EditNama6.sh ubah nama.. ...............................72
Gambar 3.13.Flowchart program named6 ubah alamat/prefix.. ............................73
Gambar 3.14.Flowchart program EditIP6.sh ubah alamat/prefix.. ........................75
Gambar 3.15.Flowchart program named6 hapus server atau host.. .......................76
Gambar 3.16.Flowchart program delete6.sh hapus server atau host......................77
Gambar 3.17.Flowchart program named6 untuk tampil server dan host.... ...........78
Gambar 3.18. Flowchart Proses Umum Program named6.....................................79
Gambar 3.19. Implementasi Server DNS dengan IPv6 dalam Jaringan... ............80
xviii
DAFTAR TABEL
Tabel 2.1 Keterangan IPv6.....................................................................................23
Tabel 2.2 Well known port.....................................................................................27
Table 2.3 Ekstensi Perl untuk Database.................................................................45
xix
BAB I
PENDAHULUAN
1.1. Latar Belakang
Perkembangan teknologi yang pesat terutama dalam bidang teknologi dan
informasi komputerisasi, memunculkan suatu gagasan komunikasi antar dua atau
lebih perangkat komputer. Protokol TCP/IP (Transfer Control Protocol / Internet
Protocol) adalah sebuah protokol yang dapat menjembatani komunikasi antar
komputer. Pengalamatan yang dipakai sekarang ini adalah pengalamatan Internet
Protocol dengan menggunakan Internet Protokol versi 4 (IPv4) yang sering
digunakan untuk keperluan komunikasi Internet.
Untuk pemakaian alamat dengan IPv4 memberikan sejumlah alokasi
alamat sebanyak 232 atau 4294967296 alamat. Namun perbandingan dari alamat
IPv4 yang ada dengan berkembangnya jumlah pengguna layanan Internet saat ini,
maka sudah dapat dipastikan bahwa alamat yang tersedia akan habis.
Oleh karena itu dikembangkan suatu model pengalamatan IP baru untuk
menggantikan pengalamatan IPv4. Model pengalamatan ini disebut sebagai
pengalamatan IP versi 6 atau IPv6 atau sering juga disebut IPNG (Internet
Protocol New Generation). Alokasi alamat yang disediakan oleh IPv6 sebesar 2128
atau 340282366920938463463374607431768211456 alamat. Dengan Sumber
daya alamat sebanyak ini, diharapkan dapat mengganti atau setidaknya menutupi
kekurangan sumber daya alamat yang ada sekarang ini.
1
2
Sehingga format penulisan untuk alamat IPv6 akan berubah dan
mempengaruhi layanan aplikasi lain untuk mendukung protokol tersebut. Salah
satu penanganan layanan aplikasi yang dilakukan untuk konversi nama ke alamat
IPv4 adalah dengan menggunakan sebuah layanan server DNS (Domain Name
System) yang berfungsi untuk mengkonversi alamat ke nama atau sebaliknya.
Sehingga pemakaian server DNS berbasis protokol IPv6 dalam suatu jaringan
akan sangat bermanfaat di masa mendatang sebagai salah satu layanan aplikasi
pendukung protokol tersebut.
Karena format penulisan alamat IPv6 berbeda dari alamat IPv4 maka
seorang administrtor harus mengetahui format penulisan isi file-file utama dan
file-file konfigurasi secara manual agar sebuah komputer dapat digunakan sebagai
server DNS pada sistem operasi Linux berbasis text-mode atau non- GUI
(Graphical User Interface) dengan layanan aplikasi named dari program BIND
(Berkeley Internet Name Domain). Pertimbangan pemilihan sistem operasi Linux
berbasis text-mode dengan alasan pemanfaatan dana dalam penggantian
infrastruktur yang mendukung IPv6.
Dengan mempertimbangkan kesulitan konfigurasi dan pembuatan file-file
dalam format alamat IPv6 yang rumit pada sistem operasi Linux berbasis text-
mode, maka penulis mencoba membuat program bantu (tools) yang dapat
mempermudah administrator dalam mempersiapkan file-file dan konfigurasi yang
dibutuhkan sebuah komputer server DNS berbasis alamat IPv6.
.
3
1.2. Batasan Masalah
Beberapa batasan masalah dalam penyusunan skripsi ini adalah:
1. Sistem operasi yang dimanfaatkan untuk layanan aplikasi sebuah server
DNS dengan alamat IPv6 statis adalah sistem operasi Linux berbasis text-
mode dengan memanfaatkan kernel versi 2.4 ke atas.
2. Sistem operasi yang dimanfaatkan untuk klien-klien host server DNS
adalah Linux Fedora Core 2 dan Windows XP Professional SP1 untuk
membandingkan perkembangan fasilitas dukungan protokol IPv6 pada
kedua sistem operasi, pengecekan pada klien dilakukan dengan beberapa
perintah dan melalui browser.
3. Implementasi program bantu (tools) dengan alamat IPv6 dan penamaan
untuk server DNS memanfaatkan servis dari aplikasi BIND versi 9.2.3
dan servis httpd untuk layanan server Web untuk pembuktian penamaan
ke alamat atau sebaliknya, telah didukung untuk layanan lainnya.
4. Penggunaan prefix untuk alamat IPv6 pada program bantu, masih dibatasi
dengan format standard (sering digunakan).
5. Proses pengecekan server DNS telah mendukung protokol IPv6, akan
memanfaatkan perintah ping6, dig, host dan mengaktifkan layanan server
Web pada komputer server DNS untuk pengecekan dari komputer klien.
6. Konsep implementasi DNS server dengan IPv6, masih dilakukan dalam
lingkup jaringan lokal berbasis IPv6 atau tidak memanfaatkan akses
keluar internet backbone IPv6 .
4
7. Bagian instalasi sistem operasi, trouble shooting, routing, tunneling,
Manajemen jaringan dan keamanan tidak dibahas dalam tulisan.
8. Program bantu named6 berbasis shell script dan perl sebagai tools
tambahan pada servis named dari program BIND digunakan untuk
mengkonfigurasi dan membuat file-file utama server DNS dengan format
alamat IPv6.
1.3. Rumusan Masalah
1. Membuat program bantu named6 berbasis shell script dan perl untuk
mempermudah membuat file-file utama dan file konfigurasi dengan
format alamat IPv6 secara otomatis yang dibutuhkan oleh program named
bawaan (default) dari BIND versi 9 pada sistem operasi Linux berbasis
text-mode untuk server DNS berbasis protokol IPv6.
2. Pada saat komputer server DNS telah berjalan dengan baik, layanan server
Web dengan alamat IPv6 akan diaktifkan untuk mengecek servis
penamaan DNS telah dapat dimanfaatkan juga oleh layanan Web.
3. Melakukan perbandingan melalui pengecekan pada sisi klien yang
menggunakan sistem operasi Linux Fedora Core 2 dan Windows XP
Professional SP1, dengan perintah-perintah pengecekan yang mendukung
protokol IPv6, serta penggunaan browser untuk membuktikan penamaan
dari server DNS pada layanan server Web telah dapat digunakan.
5
1.4. Tujuan Penulisan
Tujuan dari penulisan skripsi ini difokuskan pada program bantu atau
program pendukung (tools) pada level layanan aplikasi DNS yang telah
mendukung protokol IPv6, yaitu aplikasi BIND versi 9.2.3 dengan daemon named
pada sistem operasi Linux Fedora Core 2.
Tools tersebut akan berfungsi untuk menjalankan servis DNS dari aplikasi
yang telah ada dalam sebuah komputer, sehingga komputer dapat berfungsi
sebagai sebuah komputer server DNS yang memanfaatkan alamat IPv6. Dengan
menjalankan tools bantu, server DNS memiliki kemampuan untuk melakukan
pembuatan, penyimpanan dan pencarian informasi dari alamat IPv6 ataupun
nama server dan klien pada komputer dalam jaringan sebuah jaringan lokal
berbasis IPv6.
Dengan adanya perancangan dan implementasi tools pendukung yang
difokuskan pada sebuah layanan aplikasi untuk server DNS dalam jaringan lokal
berbasis IPv6 ini, diharapkan dicapai beberapa manfaat berikut :
1. Memberikan kemudahan dan timing down untuk seorang
administrator dalam membuat file-file utama secara otomatis untuk
servis named dari BIND dengan format alamat IPv6 pada komputer
server DNS yang mengunakan sistem operasi Linux berbasis text-
mode dengan aplikasi BIND versi 9.
2. Server DNS dengan protokol IPv6 telah dapat berfungsi sebagai mesin
konversi dan pemberian nama untuk server maupun klien DNS dalam
suatu jaringan lokal berbasis alamat IPv6 dan telah dapat
6
berkomunikasi dengan perintah pemanggilan nama dari klien ke server
DNS atau dari klien ke klien lainnya.
3. Server DNS berbasis protokol IPv6 telah dapat membantu layanan
server Web dengan protokol IPv6 yang memanfaatkan layanan server
DNS dalam pemanggilan dengan nama melalui browser, baik dari sisi
klien dengan sistem operasi Linux dan Windows ataupun server DNS
sendiri.
1.5. Metodologi Penelitian
Beberapa tahapan yang dilakukan dalam proses implementasi dan
pembuatan program / tools untuk IPv6 ini adalah :
1. Melakukan studi pustaka.
a. Mempelajari sistematika, arsitektur, dan struktur IPv6.
b. Mempelajari Sistem Operasi serta aplilkasi yang dipakai dalam
membangun jaringan IPv6.
c. Mencari referensi IPv6 di Internet.
2. Melakukan tanya jawab dalam forum Mailing List.
a. Mencari referensi tambahan dari internet.
b. Mencari seting dan konfigurasi untuk mengaktifkan aplikasi BIND
versi 9.2.3 yang telah mendukung IPv6.
3. Melakukan implementasi dan file-file konfigurasi server DNS dengan
IPv6 secara manual.
4. Merancang program.
7
a. Rancangan sistem secara umum.
i. Sistem Operasi yang akan dipakai.
ii. Aplikasi BIND dengan program named untuk mendukung
program bantu.
iii. Perangkat keras dan lunak yang akan dipakai.
b. Rancangan program.
c. Algoritma program.
5. Membuat program.
a. Mewujudkan rancangan yang telah dibuat dalam bentuk program.
b. Melakukan uji coba program dalam suatu mesin yang akan
difungsikan sebagai server DNS Linux.
6. Mengevaluasi Program.
1.6. Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini membahas tentang latar belakang penulisan skripsi, batasan
masalah yang diambil, rumusan masalah, tujuan penulisan skripsi dan
metodologi penelitian skripsi.
BAB II LANDASAN TEORI
Bab ini membahas tentang konsep dasar jaringan, protokol yang
dipakai, IPv6 dan arsitektur IPv6, sistem operasi yang digunakan,
jenis servis, DNS dengan BIND 9 dan pemrograman dengan shell
script dan perl.
8
BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab ini berisi penjelasan perancangan desain, seting aplikasi dan
langkah-langkah dari program yang akan dibuat. Perancangan meliputi
perancangan program, analisa proses dan bentuk tampilannya.
BAB IV IMPLEMENTASI PROGRAM
Bab ini membahas tentang implementasi perancangan program
kedalam bahasa program. Mengimplementasikan program ke dalam
komputer yang akan digunakan sebagai server DNS untuk menseting
dan mengaktifkan servis program named yang telah mendukung
protokol IPv6 pada progam BIND versi 9.
BAB V ANALISA HASIL
Bab ini membahas mengenai hasil program bantu dan jalannya service
setelah diterapkan pada lingkungan sistem.
BAB VI KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan dari keseluruhan program yang
dibangun dan saran-saran yang diajukan.
BAB II
LANDASAN TEORI
2.1. Pengertian
Jika seorang bekerja pada komputer yang tidak dihubungkan dengan
komputer lain maka dapat dikatakan orang tersebut bekerja secara Stand Alone.
Jika komputer dimana orang tersebut bekerja berhubungan dengan komputer dan
peralatan lain sehingga membentuk suatu group, maka ini disebut sebagai network
(Jaringan). Sedangkan bagaimana komputer tersebut bisa saling berhubungan
serta terdapat pengaturan sumber daya yang ada disebut sistem jaringan
(Networking).
Jaringan komputer merupakan suatu koleksi komputer-komputer terpisah
yang berkomunikasi satu dengan yang lain, dengan memanfaatkan media
komunikasi yang dipakai bersama-sama.
Keuntungan dalam menggunakan jaringan komputer adalah sebagai
berikut:
1. Dapat saling berbagi (Sharing) penggunaan peralatan yang ada, baik itu
harddisk, printer, modem dll, tanpa harus memindahkan peralatan-
peralatan tersebut kepada yang membutuhkan. Dengan demikian terjadi
peningkatan efesiensi waktu dan biaya pembelian hardware.
2. Dapat saling berbagi (Sharing) penggunaan file atau data yang ada pada
server atau pada masing-masing workstation. Dengan demikian untuk
9
10
mendapatkan suatu informasi tertentu dapat dilakukan dengan cepat.
Dalam hal ini terjadi peningkatan efesiensi waktu.
3. Aplikasi dapat dipakai bersama-sama (multiuser). Akses ke jaringan
memakai nama, password dan pengaturan hak untuk data-data rahasia.
4. Komunikasi antar pemakai melalui e-mail atau Lan Conference.
5. Pengontrolan para pemakai ataupun pemakaian data-data secara terpusat
dan oleh orang-orang tertentu.
6. System backup yang mudah karena manajemen yang tersentralisasi.
7. Data yang selalu up to date karena server senantiasa menguptodatekan
data begitu ada input (Data Entry).
8. Seorang Supervisor/Aministrator dapat melakukan pengontrolan pemakai
berdasarkan : waktu akses, tempat akses, kapasitas pemakaian harddisk.
Mendeteksi pemakai yang tidak berhak dan/atau memonitor pekerjaan
setiap pemakai.
.
2.2. Jaringan Komputer
Jaringan komputer adalah suatu media transmisi bersama serta rangkaian
hardware dan software untuk menginterfacekan perangkat menjadi media serta
mengatur akses menuju media tersebut dengan tepat1.
Arsitektur jaringan komputer dibagi menjadi beberapa lapisan (layer).
Terdapat dua pemodelan lapisan protokol yang penting dalam arsitektur jaringan.
1 Komunikasi Data dan Komputer Jaringan Komputer hal 42
11
Yaitu acuan layer dari OSI (Open System Interconnection) dan model protokol
TCP/IP.
Session
Aplication
6
7
5
Presentation
Aplication
Not Present in the Model
Transport
Data Link
Physical
3
1
2
4
Network
Data Link
Internet
Physical
Transport
OSI TCP/IP
Gambar 2.1 Pemodelan Layer Menurut OSI dan TCP/IP
Dalam setiap lapisan tingkatan OSI pasti memiliki protokol yang
digunakan untuk berkomunikasi dengan lapisan yang sederajat pada komputer
lain. Berikut ini adalah diagram lapisan OSI yang menunjukan protokol dalam
tiap-tiap tingkat lapisan OSI.
Session
Transport
Aplication
Presentation
Data Link
Physical
6
7
3
1
2
4
5
Network
XML, XDR, SMB, AFP
HTTP, FTP, SMTP, DNS, Telnet, Ssh and Scp
IP, ICMP, IGMP, ARP, RARP, X.25
Electricity, Radio, Laser
Ethernet, Token ring, ATM, Frame Relay
TCP, UDP, SCTP, ATP
TLS, SSH, RPC, NET BIOS, ASP
Gambar 2.2 Pembagian Protokol menurut OSI
12
Dengan melihat diagram diatas, pada tiap level menunjukkan fungsi yang
dilakukan oleh protokol. Namun dalam kenyataannya, tiga lapisan teratas dalan
model OSI (Aplication, Presentation, dan Session) biasanya diperlakukan menjadi
satu lapisan tunggal dalam deretan TCP/IP yaitu sebagai lapisan Aplication yang
protokol-protokolnya dianggap menjadi satu kesatuan protokol aplikasi.
Transport
7
Data Link
Physical
3
1
2
4
Network
Aplication
HTTP, FTP, SMTP, Telnet, Ssh and Scp
IP, ICMP, IGMP
Electricity, Radio, Laser
Ethernet, Token ring, ATM, Frame Relay
TCP, UDP, SCTP
Gambar 2.3 Pembagian Protokol menurut TCP/IP
Diagram lapisan OSI maupun TCP/IP memiliki persamaan pada keempat
layer dasar (Physical, Data Link, Network dan Transport). Dari level Network dan
Transport dapat diketahui bahwa protokol IP yang terletak di layer Network dan
TCP yang terletak di layer Transport digunakan sebagai protokol yang berfungsi
untuk pengalamatan antar komputer dan pengendali transmisi. Layer "physical"
dan "data link" dari susunan TCP/IP sering disebut sebagai satu layer yaitu
"network interface layer".
13
2.3. TCP/IP (Transfer Control Protocol/Internet Protokol)
TCP/IP merupakan proyek yang dikembangkan oleh Departement of
Defence (DoD) Defense Advance Research Projects Agency (DARPA) untuk
menghubungkan antar jaringan (network) yang dikembangkan oleh vendor yang
berbeda menjadi suatu jaringan dalam jaringan luas (Network of Networks) atau
sekarang terkenal dengan nama Internet.
Rancangan ini sukses berkembang karena dapat memberikan layanan
dasar yang dibutuhkan oleh orang-orang (file sharing, electronic mail) karena
beberapa komputer dalam suatu departemen kecil dapat menggunakan TCP/IP
(berjalan bersama dengan protokol lainnya) dalam satu jaringan LAN. Komponen
IP menyediakan routing dari satu departemen ke jaringan perusahaan yang lebih
luas, dan pada akhirnya jaringan ini berkembang kepada jaringan global yang
disebut Internet2.
Fungsi yang ada pada protokol TCP/IP adalah :
• File Transfer Protocol (FTP) yaitu fasilitas transfer file antar komputer
• Surat elektronik (E-mail) atau fasilitas surat menyurat antar komputer yang
terdiri atas Simple Mail Transfer Protocol (SMTP) sebagai dasar
komunikasi e-mail, Multi Purpose Internet Mail Extensions (MIME) yaitu
standar format biner grafik, dan suara agar dapat ditransmisikan melalui e-
mail, Post Office Protocol (POP) yaitu sistem penerima e-mail, Network
News Transfer Protocol (NNTP) sarana pertukaran berita, artikel dan
diskusi melalui e-mail
2 http://www.yale.edu
14
• Emulasi terminal jarak jauh (Telnet, Remote Login) yang memungkinkan
suatu komputer (client) untuk masuk dan mengendalikan host yang
terletak jauh darinya, misalnya pada network yang lain atau di Internet.
• Simple Network Management Protocol (SMNP) yaitu protokol
pengendalian peralatan network jarak jauh. Drew Heywood (1996)
menyebutkan : fungsi utama itu masih diikuti dengan fasilitas Domain
Name System (DNS) yaitu metode penamaan dan pengalamatan suatu
network berdasarkan kelompoknya
Seperti halnya protokol komunikasi lainnya, TCP/IP juga dibagi menjadi
beberapa lapisan :
a. IP
IP bertanggung jawab untuk memindahkan paket data dari satu titik ke
titik lainnya. IP meneruskan paket data berdasarkan empat byte alamat tujuan
(IP number / IP address). Otoritas Internet membagi alamat IP menjadi
beberapa organisasi yang berbeda. Setiap organisasi akan mengkelompokkan
alamat itu menjadi beberapa departemen. IP bekerja sebagai pintu gerbang
mesin dalam memindahkan paket data dari satu departemen ke satu organisasi
dan diteruskan ke suatu wilayah regional dan kemudian seluruh dunia ini.
b. TCP
TCP bertanggung jawab untuk pengecekan pengiriman paket data dari
client ke server. Dalam pengirimannya, data dapat hilang ditengah jalan dalam
jaringan. Oleh karena itu, TCP menambahkan suatu paket tambahan untuk
15
mengecek kesalahan data atau kehilangan data dan memerintahkan untuk
mengirim ulang data sampai data diterima dalam keadaan benar dan lengkap.
c. Sockets
Sockets adalah suatu nama yang diberikan kepada subrutin paket yang
menyediakan akses TCP/IP pada kebanyakan sistem.
2.3.1. TCP (Transmision Control Protocol)
TCP adalah pengarahan koneksi, protokol handal yang berada pada layer
transport TCP/IP Protokol Stack. TCP bertugas memecah paket data menjadi
beberapa bagian (segment), menyatukan kembali (reassemble) pada stasiun
tujuan. Apabila stasiun tujuan tidak menerima paket, atau menerima paket tetapi
dalam keadaan rusak, TCP bertugas untuk mengirimkan kembali paket tersebut
hingga paket diterima oleh stasiun tujuan secara lengkap dan tanpa kerusakan, dan
menyatukan kembali pesan-pesan tersebut dari beberapa segment menjadi satu
paket utuh. TCP juga bekerja untuk mengatur bagaimana cara membuka
hubungan komunikasi, jenis aplikasi apa yang digunakan dalam komunikasi
tersebut. Dengan kata lain, TCP mengatur seluruh proses koneksi antar satu
komputer dengan komputer yang lain dalam suatu jaringan.
16
30 4 1 1
Source Port (16)
Window (16) Code bits (5)
Reserved (6)Header Length
Checksum (16)
Data (varies)
Options (0 or 32 if any)
Urgent (16)
Acknowlegement Number (32)
Sequence Number (32)
Destination Port (16)
Gambar 2.4 Segment TCP
Mekanisme kerja TCP adalah connection oriented yaitu TCP membangun
suatu hubungan secara logik antar satu komputer dengan komputer lainnya. Dalam
waktu yang ditentukan komputer yang sedang berhubungan harus mengirimkan data
atau acknowledge agar hubungan tetap berlangsung. Jika hal ini tidak sanggup
dilakukan maka dapat diasumsikan bahwa komputer yang sedang berhubungan
mengalami gangguan dan hubungan secara logik dapat diputus.
2.3.2. IP (Internet Protocol)
Protokol Internet adalah jalur komunikasi yang dimanfaatkan sebuah
komputer untuk saling berkomunikasi yang teradapat pada network layer.
IP (Internet Protocol) address adalah alamat yang diberikan pada jaringan
komputer dan peralatan jaringan yang menggunakan protokol TCP/IP (fahrial,
2004). IP address terdiri atas 32 bit angka binner yang dapat dituliskan sebagai
empat kelompok angka desimal yang dipisahkan oleh tanda titik seperti
192.168.0.1.
17
IP (Internet Protocol) merupakan inti dan protokol TCP/IP. Seluruh data
yang berasal dari protokol pada layer di atas IP harus dilewatkan, diolah oleh
protokol IP, dan dipancarkan sebagai paket IP, agar sampai ke tujuan.
Dalam melakukan pengiriman data , IP memiliki sifat yang dikenal sebagai
unreliable, connectionless, datagram delivery service.
• Unreliable, berarti bahwa protokol IP bahwa datagam yang dikirim pasti
sampai pada tempat tujuan.
• Connectionless, berarti dalam pengiriman paket dari tempat asal ketujuan,
pihak pengirim dan penerima tidak mengadakan perjanjian (handshake)
terlebih dahulu.
• Datagram delivery service, berarti setiap data yang terkirim adalah
independen terhadap paket data yang lain.
Version Header Length Type of Service Total Length of Datagram
Identification Flags Fragment Offset Time to Live Protocol Header Checksum
Source IP Address Destination IP Address
Options Strict Source Routing, Loose Source Routing DATA
Gambar 2.5 Format datagram IP
Format datagram IP terdiri atas:
1. Version, versi dan protokol IP yang dipakai. Pada saat ini versi IP yang
dipakai adalah IP versi 4.
2. Header Length, berisi panjang dan header paket IP ini dalam hitungan
18
32 bit word.
3. Type Length of Service, berisi kualitas service yang dapat
mempengaruhi cara penanganan paket IP ini.
4. Total Length of Datagram, panjang IP datagram total dalam ukuran
byte.
5. Identification, Flags, dan Fragment Offset, berisi beberapa data yang
berhubungan dengan fragmentasi (dipecah menjadi beberapa paket yang
lebih kecil).
6. Time to Live, berisi jumlah router atau hup maksimal yang boleh
dilewati paket IP.
7. Protokol, mengandung angka yang mengidentifikasikan protokol layer
atas pengguna isi data dan paket IP ini.
8. Header Checksum, berisi nilai checksum yang dihitung dan seluruh field
dan header paket IP.
9. IP address pengirim dan penerima data, berisi alamat pengirim paket
dan penerima paket.
10. Byte Option, berisi Strict Source Route (SSR) dan Loose Source Route
(LSR). SSR berisi daftar lengkap IP address dan router yang harus
dilalui oleh paket ini dalam perjalanan ke host tujuan. SSR paket yang
dikirim diharuskan singgah di beberapa router.
Format IP Address bisa dinyatakan dalam dua bentuk yaitu :
a. Bentuk Biner
Alamat IP merupakan bilangan biner 32 bit yang dipisahkan oleh
19
tanda pemisah berupa tanda titik setiap 8 bit. Bentuk alamat IP
adalah sebagai berikut:
xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxxx
Simbol “x” dapat digantikan oleh angka 0 dan 1, misalnya:
10000100.1011 l00.1111001.00000001
b. Bentuk dotted decimal
Format penulisan “dotted-decimal notation” (notasi desimal bertitik).
Setiap bilangan desimal tersebut merupakan nilai dari satu oktet (8
bit) alamat IP. Tiap oktet mewakili bilangan desimal dan 0 sampai
255.
bit#0 31
10000100 01011100 01111001 00000001
132 92 121 1
w x y z
penulisan IPv4 menjadi : 132.92.121.1
2.3.3. IPv6 (Internet Protocol versi 6)
Pengalamatan IPv6 memiliki 2128 kombinasi alamat. Sama seperti
halnya IPv4, IPv6 menggunakan bilangan biner yang memiliki panjang 128 bit
dan terbagi menjadi 8 segmen, dengan setiap segmen terdiri dari 16 bit yang
dipresentasikan dalam bilangan hexadesimal 0 sampai FFFF. Dengan kapasitas
tersebut, maka pengalamatan IPv6 adalah dari:
0000:0000:0000:0000:0000:0000:0000:0000
sampai
FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
20
Terdapat tiga jenis pengalamatan dalam IPv6, yaitu:
a. Unicast : Alamat pengenal satu interface. Paket yang dikirim ke
alamat Unicast akan disampaikan ke interface yang didefinisikan
oleh lamat tersebut.
b. Anycast : Alamat pengenal kumpulan interface. Paket yang dikirim
alamat ini akan disampaikan ke salah satu interface terdekat menuru
routing.
c. Multicast : Alamat pengenal kumpulan interface. Paket yang dikirim
ke alamat ini akan disampaikan ke semua interface dan
menggantikan fungsi alamat broadcast dalam IPv4.
Berikut bentuk representasi alamat IPv6 adalah sebagai berikut :
a. Bentuk x:x:x:x:x:x:x:x, x adalah nilai hexadesimal 8 bagian 16 bit
alamat. Penulisan alamat IPv6 adalah sebagai berikut:
3ffe:419:2ac6:44ff:10ab:f54:a9:34fa
b. Penulisan alamat IPv6 juga dapat menggunakan tanda “::” utnuk
menyederhanakan penulisan. Tanda menunjukkan kumpulan 16 bit
yang terdiri dari bit nol. Tanda ini hanya boleh digunakan sekali
dalam satu buah alamat.
c. Penulisan alamat IPv6 juga dapat digunakan dalam lingkungan
gabungan IPv4 dan IPv6. Alamat dalam lingkungan gabungan dapat
ditulis dengan x:x:x:x:x:x:d.d.d.d, dengan x adalah 6 segmen 16 bit
alamat IPv6 (hexadesimal) dan d adalah 4 segmen 8 bit IPv4
21
(desimal). 0:0:0:0:0:0:167.205.22.116 atau dapat ditulis
::167.205.22.116
d. Prefix alamat IPv6 dapat ditulis dalam notasi : Alamat -
IPv6/Panjang-Prefix. Panjang prefix menunjukkan banyaknya bit di
bagian kiri yang dibatasi nilai prefixnya.
Internet Protokol versi 6 (IPv6) adalah protokol internet versi baru yang
didesain sebagai pengganti dari internet protokol versi 4 (IPv4) yang didefinisikan
dalam RFC 791. Perubahan dari IPv4 keIPv6 pada dasarnya terjadi karena
beberapa hal yang dikelompokkan dalam beberapa kategori berikut:
• Kapasitas perluasan alamat
• Penyederhanaan format header
• Peningkatan dukungan untuk header pilihan dan header tambahan
• Kemampuan pelabelan aliran paket
• Autentifikasi dan kemampuan privasi
2.3.3.1. Istilah-Istilah dalam IPv6
Node: peralatan yang dapat mengimplementasikan IPv6
Router: node yang melewatkan paket Ipv6 dimana paket-paket yang
diteruskan tidak hanya terdiri dari paket-paket dengan alamatnya
sendiri.
Host: node sembarang yang bukan merupakan router
22
Upper layer: layer protokol yang secara langsung berada diatas IPv6, yaitu
protokol transport TCP dan UDP, protokol kontrol ICMP, protokol
routing seperti OSPF dan internet.
Link: Fasilitas komunikasi atau medium, yaitu ethernet, link PPP, X.25,
atau jaringan ATM dan layer internet tunnel.
Neighbors: node lain yang dihubungkan dalam link yang sama.
Interface: media penghubung dari node ke jaringan.
Alamat identifikasi paad layer IPv6 untuk interface atau sekumpulan
interface.
Packet: header IPv6 dan payload-nya (isi)
Link MTU: Maximum transmission unit, ukuran maksimum paket dalam ukuran
byte yang dapat disampaikan melalui link.
Path MTU: link MTU yang paling kecil dari semua link dalam path node asal
sampai ke node tujuan.
2.3.3.2. Format Header IPv6
Format header alamat IPv6 merupakan penyederhanaan dari format
header alamat IPv4. Perbandingan header IPv4 dan IPv6 dapat dilihat
pada gambar berikut:
Version Header Length Type of Service Total Length of Datagram
Identification Flags Fragment Offset Time to Live Protocol Header Checksum
32 bit Source IP Address 32 bit Destination IP Address
Gambar 2.6 format header IPv4
23
Version Traffic Class Total Length of Datagram
Payload length Next Header Hop Limit 128 bit Source IP Address
128 bit Destination IP Address
Gambar 2.7 format header IPv6
Nama Panjang Kolom
Keterangan
Versi 4 bit Nomor versi protokol internet, yaitu versi 6
Traffic class 8 bit Kolom kelas atau kasifikasi traffic (lalu lintas)
Flow Label 20 bit Label aliran dari traffic Payload Length 16 bit Panjang payload/muatan IPv6,
payload adalah sisa paket setelah header IPv6 dalam bentuk oktet (diluar header IPv6.)
Next Header 8 bit Identifikasi tipe header yang akan ada setelah header IPv6. Nilai header ini menggunakan tipe header yang sama dengan yang ada pada IPv4
Hop Limit 8 bit Nilai pada kolom ini akan dikurangi satu jika paket ini melewati node yang berfungsi melewatkan/mem-forward paket (router). Paket akan dibuan saat nilai batas hop telah mencapai nol.
Nama Panjang Kolom
Keterangan
Source Address 128 bit Alamat asal paket IPv6 Destination Address 128 bit Alamat tujuan paket IPv6
Tabel 2.1 keterangan IPv6
2.3.3.3. Arsitektur Pengalamatan IPv6
Alamat IPv6 pengidentifikasi alamat sepanjang 128 bit untuk interface dan
sekumpulan interface. Ada tiga tipe dari alamat IPv6:
24
• Unicast : pengidentifikasi untuk interface tunggal. Paket yang dikirimkan
ke alamat unicast adalah paket yang dikirim ke sebuah interface yang
diidentifikasi oleh alamat tersebut.
• Anycast : pengidentifikasi untuk sekumpulan interface (umumnya milik
node yang berbeda). Paket yang dikirimkan ke alamat anycast adalah
paket yang dikirmkan ke salah satu dari sekumpulan interface yang
diidentifikasi oleh alamat tersebut (alamat yang terdekat, mengacu pada
pengukuran jarak dan protokol routing).
• Multicast : pengidentifikasi untuk sekumpulan interface (umumnya milik
node yang berbeda). Paket yang dikirimkan ke alamat multicast adalah
paket yang dikirimkan kesemua interface yang diidentifikasi oleh alamat
tersebut.
IPv6 tidak memiliki alamat broadcast, hal ini disebabkan fungsi dari
alamat broadcast digantikan oleh alamat multicast.
2.4. UDP (User Datagram Protocol)
UDP (User Datagram Protocol) merupakan protokol transport yang
sederhana. Berbeda dengan TCP yang connection oriented, UDP bersifat
connectionless. Dalam UDP tidak memiliki sequencing (pengurutan kembali)
paket yang datang, acknowledgement terhadap paket yang datang atau retransmisi
jika paket mengalami masalah di tengah jalan.
Kemiripan UDP dengan TCP ada pada penggunaan port number.
Sebagaimana digunakan pada TCP, UDP menggunakan port number ini utnuk
25
membedakan pengirimana datagram ke beberapa aplikasi berbeda yang terletak
pada komputer yang sama.
Karena sifatnya yang connectionless dan unreliable, UDP digunakan oleh
aplikasi-aplikasi yang secara periodik melakukan aktivitas tertentu (misalnya
query routing table pada jaringan lokal), serta hilangnya satu data akan dapat
diatasi pada query periode berikutnya dan melakukan pengiriman data ke jaringan
lokal. Pendeknya jarak tempuh datagram akan mengurangi resiko kerusakan data.
Bersifat broadcasting atau multicasting. Pengiriman datagram kebanyak
client sekaligus akan efisien jika prosesnya menggunakan metode connectionless.
Source Port Destination Port
Datagram Length Checksum
Aplication Data
Gambar 2.8 Format datagram UDP
Gambar diatas ditunjukkan format dari datagram UDP. Ssource dan
Destination port memiliki fungsi yang sama seperti pada TCP. Datagram Length
berisi panjang datagram, sedangkan cheksum berisi angka hasil perhitungan
matematis yang digunakan untuk memeriksa kesalahan data. UDP banyak
digunakan pada model Client-Server yang menggunakan model layer internet,
dimana proses dilakukan pada level aplikasi. Contoh aplikasi yang menggunakan
UDP, yaitu : SMTP, NFS, FTP, DNS dan sebagainya. Dapat dilihat pada gambar
dibawah berikut :
26
TFTP SMTP
Session
Presentation
Application Application
NFS DNS
UDPTCPTransport
RARP ARPIGMPICMP IP
Network
Data Link Protocol defined by
the underlying network Physical
Gambar 2.9 format 3 layer dalam internet.
2.5. PORT
Hal penting yang perlu dipahami pada TCP atau UDP adalah port number.
Port number menentukan service yang dilakukan oleh aplikasi diatas TCP atau
UDP. Penomeran port ini telah ditentukan oleh Network Information Center dalam
Request For Comment (RFC) 1010. Prisip kerja TCP didasarkan pada prinsip Client-
Server. Server adalah program yang secara pasif akan mendengarkan (listen) port
number yang telah ditentukan oleh TCP. Sedangkan client adalah program yang
secara aktif akan membuka hubungan TCP ke komputer server untuk meminta
service yang dibutuhkan. Port digunakan pada transport layer untuk memberi nama
27
bagian dasar dari koneksi logical (logical connections) atau sebuah servis yang
berjalan dengan terus menerus3.
Tujuannya adalah untuk memberikan sebuah nama pada sebuah servis dan
mendefinisikannya dalam sebuah alamat kontak. Port digunakan untuk melakukan
koneksi antara server dan client-nya. Port yang biasa digunakan oleh server untuk
melakukan koneksi sering disebut dengan ‘well known port’.
Dari total jumlah port yaitu 65535, Port dibagi menjadi 3 bagian yaitu :
• Well known Port : antara 0 sampai 1023 digunakan oleh sevis-servis yang
digunakan server dan client dalam proses komunikasi.
• Registered Port : 1024 sampai 4951 digunakan untuk kepentingan suatu
instansi yang sudah terdaftar untuk menggunakan port tertentu.
• Dynamic/Private Port 4951 sampai 65535 bebas digunakan untuk koneksi
pribadi.
Berikut ini adalah sebagian dari tabel tabel wellknown port :
Port Protocol Keterangan 20 21 23 25 53 80 111
FTP, data FTP,controlTelnet SMTP DNS HTTP RPC
FTP (koneksidata) FTP, kontrol Terminal Network Simple Mail Transfer Protocol Domain Name Server Hyper Text Transfer Protocol Remote Procedure Call
Tabel 2.2 well known port
3 www.iana.org/assignments/portnumbers
28
2.6. Sistem Operasi Linux
Linux adalah sistem operasi UNIX-like. Linux awalnya dikembangkan
oleh Linus Torvald. Awalnya Linux ini merupakan pengembangan dari sistem
operasi MINIX yang ditulis oleh Tannenbaum. Linux versi awal diluncurkan oleh
Linus pada akhir 1991.
Dengan sifatnya yang open source dan gratis, Linux mudah didapat dan
dikembangkan oleh banyak orang di dunia ini, sehingga perkembangannya pun
sangat pesat. Saat ini Linux dikemas dalam berbagai distribusi yang dikeluarkan
seperti : Redhat, Caldera, Mandrake, Debian, Slackware, Turbolinux dan lainnya.
Linux adalah Sistem-Operasi yang:
• multi-tasking : memungkinkan menangani banyak proses pada saat yang
bersamaan tanpa saling mengganggu.
• multi-program : memungkinkan menangani banyak program pada saat
yang bersamaan.
• multi-user : memungkinkan penggunaan satu aplikasi yang sama atau
berbeda pada dalam satu mesin yang sama pada saat yang bersamaan
• TCP/IP built-in, virtual memory, copy-on-write pages, demand paging dan
lainnnya.
• menganut multiple file system seperti : EXT2fs, EXT3fs, FAT16, FAT32
(DOS), Vfat (win), HPFS (OS2), Minix dan lainnya.
• mengadopsi "X-Windowing System
29
Dari keterangan diatas, dapat dikatakan bahwa sistem operasi Linux
adalah sebuah sistem yang dapat menjadikan sebuah komputer menjadi sebuah
komputer server.
Struktur sistem file Linux adalah berbentuk tree, dengan "pusat"-nya
adalah root (akar) yang dilambangkan dengan tanda "/" (slash). Gambar struktur
tree Linux dapat dilihat seperti berikut :
/(Root)
bin dev etc home lib proc sbin tmp var usr
sbin bin include doc lib man src
Gambar 2.10 Struktur sistem file Linux
Beberapa penjelasan struktur sistem file Linux :
/(Root) : merupakan direktori parent bagi semua direktori.
/bin : berisi program-program dasar Linux
/dev : berisi file-file device, seperti cdrom, floppy, harrdisk, dan lainnya.
/etc : berisi file-file seting dan inisialisasi sistem (konfigurasi).
/home : direktori kerja user
/lib : berisi file-file library untuk program-program sistem
/proc : berisi catatan (log) kondisi sistem pada saat-saat tertentu.
/tmp : direktori sementara
/var : berisi berkas dan direktori sistem yang akan ditulisi selama operasi.
30
/usr : berisi sejumlah direktori yang berisi program-program yang
digunakan pemakai.
2.6.1. Jenis-Jenis Service pada Linux
Jenis-jenis service yang diberikan pada sistem operasi Linux terdapat
banyak macam dan jenisnya. Service-service tersebut sengaja diberikan sesuai
kebutuhan atau kegunaan dari komputer yang akan diisikan sistem operasi Linux,
misalnya sebagai: MAIL server, WEB server, DNS server, FTP server, Proxy
server, File Control server, Router, Telnet dan lainnya.
Salah satu service yang saat ini sedang dikembangkan adalah service
untuk mendukung protokol internet IPv6, demikian juga untuk aplikasi-aplikasi
yang telah mendukung protokol tersebut.
2.6.2. Domain Name System (DNS)
DNS (Domain Name System) adalah suatu bentuk database yang
terdistribusi, dimana pengelolaan secara lokal terhadap suatu data akan segera
diteruskan ke seluruh jaringan (internet) dengan menggunakan skema client-
server. Suatu program yang dinamakan name server, mengandung semua segmen
informasi dari database dan juga merupakan resolver bagi klien-klien yang
berhubungan ataupun menggunakannya4.
Salah satu aplikasi yang masih dikembangkan agar dapat mendukung
protokol IPv6 tersebut adalah BIND (Berkeley Internet Name Domain) dengan
program named yang berfungsi agar sebuah komputer dapat menjadi sebuah
4 DNS and BIND 3rd Edition, Paul Albitz & Cricket Liu, 1998 Hal 4
31
komputer server DNS yang dapat memberikan nama atas klien-klien yang
dimilikinya.
Kerja dari server DNS sendiri adalah untuk mengkonversi dari alamat
IPv4 dan IPv6 ke nama atau sebaliknya. Sehingga sebuah sever DNS dapat me-
resolve (memberi jawaban) atas query (pertanyaan) dari sebuah nama atau alamat
IPv4 maupun IPv6.
Struktur dari database DNS bisa diibaratkan dengan dengan struktur file
dari sebuah sistem operasi UNIX. Seluruh database digambarkan sebagai sebuah
struktur terbalik dari sebuah pohon (tree) dimana pada puncaknya disebut dengan
root node. Pada setiap node dalam tree tersebut mempunyai keterangan (label)
misalnya, .org, .com, .edu, .net, .id dan lain-lainnya, yang relatif rerhadap
puncaknya (parent).Ini bisa diibaratkan dengan relative pathname pada sistem file
UNIX,seperti direktori bin, usr, var, etc dan lain sebagainya. Pada puncak root
node dalam sebuah sistem DNS dinotasikan dengan "." atau "/" pada sistem file
UNIX.
Pada setiap node juga merupakan root dari subtree, atau pada sistem file
UNIX merupakan root direktori dari sebuah direktori. Hal ini pada sistem DNS
disebut dengan nama domain. Pada tiap domain juga memungkinkan nama
subtree dan bisa berbeda pula, hal ini disebut subdomain atau subdirektori pada
sistem file UNIX. Pada bagian subdomainjuga memungkinkan adanya subtree lagi
yang bisa dikelola oleh organisasi yang berbeda dengan domain utamanya.
32
Dengan adanya DNS server akan mempermudah seseorang untuk
mengingat sebuah nama dibandangkan alamat IP yang dimiliki. DNS
menggunakan arsitektur hierarki dalam pemberian nama, seperti yang kita kenal
adalah struktur pohon (tree).
Tingkat pertama adalah nama domain yang oleh INTERNIC dikategorikan
sebagai berikut:
• .com dipakai oleh perusahaan-perusahaan
• .edu dipakai oleh perguruan tinggi
• .gov dipakai oleh badan-badan pemerintah
• .org dipakai oleh badan-bada yang lain
• untuk pemakaian untuk suatu negera, misalnya: .id untuk indonesia, .uk
untuk inggris, .au untuk australia dan lainnya
Tingkat berikutnya adalah subdomain dimana suatu domain dapat
diterapkan ke berbagai subdomain yang berupa bagian dari domain tersebut.
DNS bekerja dalam modus client-server. Dengan kata lain ada klien yang
mencari nama atau alamat IP dan sebuah server yang memberikan informasi letak
dimana nama atau alamat IP tersebut dapat diakses. Server DNS yang paling
banyak digunakan untuk lingkungan UNIX menggunakan aplikasi BIND
(Berkeley Internet Name Domain).
Contoh proses kerja DNS: seorang klien ingin mengakses sebuah
komputer yang bernama mobius.mobs.edu dalam sebuah domain mobs.edu dapat
menggunakan beberapa perintah seperti nslookup, dig, atau host. Maka sistem
kerja DNS akan dapat terlihat seperti berikut:
33
nslookup
Name server lokal
Name server root (.)
Name server edu (edu.)
Name server mobs (mobs.edu.)
Host support (support.mobs.edu.)
Berikut bentuk umum penempatan sebuah DNS Server dalam suatu
jaringan lokal berbasis IPv4:
Web Server
DNS Server
Mail Server
router1
router2
client
client
INTERNET
Gambar 2.11 LingkupKerja server DNS
2.6.3. BIND pada Sistem Operasi Linux
BIND (Berkeley Internet Name Domain)adalah sebuah aplikasi dari DNS
yang dibuat oleh Paul Mockapetris5. BIND adalah Software DNS terbanyak yang
digunakan pada sistem operasi yang berbasis UNIX. BIND bekerja secara
background dengan mendengarkan permintaan klien pada port 53 dengan setingan
5 RFC 882 dan 883
34
default. BIND mengimplementasikan name server internet untuk sejumlah sistem
operasi.
Salah satu versi yang terbaru dan yang digunakan adalah BIND versi 9.
BIND versi 9 telah mendukung secara penuh pengkonversian nama ke alamat
IPv6 sebaliknya. Dimana BIND veri 9 ini telah dapat melakukan pencarian ke
database DNS berdasarkan alamat IPv6 saat berjalan pada sebuah sistem yang
telah memanfaatkan IPv6. Dua fungsi DNS server pada jaringan lokal , yaitu:
1. meningkatkan performa operasi jaringan, seperti web browsing yang
memerlukan hostname lookup.
2. dapat mengembangkan/memperluas jaringan dengan tempat penyimpanan
(repository) secara terpusat mengenai informasi mesin-mesin lokal tanpa
harus meng-kopi seluruh file dari tiap-tiap jaringan.
2.6.3.1. Konfigurasi BIND dengan IPv4
Bentuk umum untuk konfigurasi file BIND untuk program named yang
berwewenang (authority) dengan IPv4, terletak pada direktori /etc/named.conf
yang bertugas untuk memberikan BIND name server mengenali file zona yang
akan dilayani dan pada direktori /etc/resolv.conf yang berfungsi sebagai resolver
untuk pencarian domain name serta alamat server DNS. File-file konfigurasi
utama yang dibutuhkan untuk menjalakan program: resolv.conf, named.conf,
named.root, forward dan reverse.
a. Berikut contoh file pada /etc/resolv.conf dengan IPv4:
nameserver mobs.edu search 192.168.0.254
35
b. Berikut contoh konfigurasi /etc/named.conf dengan IPv4 :
options {
directory "/var/named"; // letak direktori file listen-on {any;}; //untuk set port yang akan
//digunakan mendengar permintaan //dari client. }; zone "." { type hint; file "named.root" ; //file-file root };
zone "localhost" IN { type master; file "localhost.zone";
};
zone "rev.localhost" IN { type master; file "named.local"; //file reverse localhost
};
zone "mobs6.edu" IN { type master; file "mobs6.edu"; //file forward
};
zone "0.168.192.in-addr.arpa" IN { type master; file "rev.mobs6"; //file reverse };
c. Berikut adalah bentuk umum file forward mobs6.edu dengan IPv4
$ORIGIN mobs6.edu. $TTL 86400 @ IN SOA ns.mobs6.edu. root.localhost. (
42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.mobs6.edu. IN A 192.168.0.254
localhost IN A 127.0.0.1 lnx1 IN A 192.168.0.254 client IN A 192.168.0.2
ftp IN CNAME linx1 //nama alias
36
d. Berikut adalah bentuk umum file rev.mobs6 dengan IPv4:
$ORIGIN 0.168.192.in-addr.arpa. $TTL 86400 @ IN SOA lnx1.mobs6.edu. root.localhost. (
1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS lnx1.mobs6.edu.
254 IN PTR lnx1.mobs6.edu. 2 IN PTR client.mobs6.edu.
2.6.3.2. Forward DNS dengan IPv6
Pencarian forward DNS menggunakan sebuah nama internet domain untuk
mencari sebuah alamat IP. Sedangkan untuk pencarian reverse DNS
menggunakan alamat IP internet untuk mencari sebuah nama domain. Saat
melakukan pencarian dengan menggunakan alamat dari sebuah lingkungan web
melalui browser, pencarian alamat tersebut biasanya disebut dengan URL
(Uniform Resource Locator). Pencarian forward DNS adalah model pencarian
yang paling umum digunakan, mengingat manusia lebih mudah mengingat nama
dibandingkan dengan alamat IP (angka).
Untuk lookup forward IPv6 (konvesi dari nama ke alamat IPv6), BIND
versi 9 mendukung record A6 dan AAAA walaupun menggunakan IPv6. Dimana
penggunaan record AAAA yang sebenarnya berjalan pada IPv4, hal ini dilakukan
karena pada saat ini masih banyak sistem yang memanfaatkan pencarian jenis
record AAAA.
Untuk penggunaan record jenis A6 lebih sulit dibandingkan dengan
pencarian record jenis A atau AAAA. Hal ini dikarenakan resolver yang didukung
37
oleh sistem operasi pada saat ini hanya mendukung pencarian jenis AAAA.
Meskipun record jenis A6 ini memberikan informasi yang sama dengan record
AAAA.
2.6.3.3. Reverse DNS dengan IPv6
Reverse DNS adalah sebuah cara untuk mengasosiasikan sebuah alamat IP
dengan domain name yang telah di bentuk. Untuk mengenali reverse DNS akan
terdapat di dalam porsi PTR (pointer) dari file zona IP yang diisikan. File zona IP
berisikan seluruh IP dan domain name yang dapat diasosiasikan, tiap asosiasi
berguna untuk melayani sebuah kebutuhan yang berbeda. Reverse DNS harus
berda dalam sebuah daftar domain name yang berkualifikasi penuh (fully-
qualified).
Untuk reverse lookup IPv6 (pencarian dari alamat IPv6 ke nama), BIND
versi 9 mendukung pencarian dengan format baru, yaitu bitstring yang digunakan
dalam domain IP6.arpa dan juga mendukung format lama, yaitu format nibble
yang digunakan dalam domain IP6.int.
2.6.4. Cara Kerja DNS dengan IPv6
Ada dua model record pencarian alamat baru dalam DNS untuk IPv6, yang
mendukung untuk mengurangi perawatan dan mobilitas yang telah diresmikan
utnuk IPv6. Dua model record ini telah tersedia didalam BIND versi 9, yang telah
sebelumnya telah dilakukan uji coba terlebih dahulu. A6 dan AAAA records, dan
sintak BINARY LABEL yang ada memperbolehkan sebuah tempat untuk membuat
38
masukan ke DNS dengan IPv6, tanpa memberikan kesulitan pengkodean (hard-
coding) pada lahan alamat provider.
Jaringan IPv6 juga dapat menggunakan AAAA record untuk masa transisi
antara jaringan IPv4 dan IPv6. AAAA record telah didiukung oleh BIND versi
lama, seperti BIND versi 8. Untuk BIND versi 9 mendukung seluruh daftar IPv6
dan pencarian alamat ke nama (address-to name-lookups). BIND juga dapat
menerima koneksi melalui IPv6 (AF_INET6) dan menggunakan alamat IPv6
untuk melakukan pertanyaan saat menjalankan sistem IPv6.
Sebagai catatan, BIND resolver (pemecah masalah) belum dapat
menempatkan (ported) untuk berkomunikasi melalui koneksi IPv6. Dengan
menggunakan pemanggilan fungsi getaddrinfo() dan getnameinfo(), aplikasi IPv6
dapat mengembalikan informasi alamat IPv6 yang terkandung didalam AAAA
record dan PTR record melalui sebuah jaringan IPv4.
2.6.4.1. Konversi alamat IPv6 dengan Format Nibble
Format nibble yang digunakan dari alamat ke namadalam DNS adalah
format lama. Tetapi format ini masih digunakan dalam mendukung
kompatibilitas kebelakang untuk aplikasi IPv6 yang ada. Hasil pengkonversian
dari alamat ke nama dengan format ini sama dengan hasil pengkonversian pada
IPv4. Dimana format nibble menggunakan pembatasan pada kelipatan 4 bit
dengan label ip6.int.. Contoh penulisan alamat dengan format nibble untuk host
dengan alamat 3ffe:8050:201:1860:42::1. Contoh penulisan alamat dalam format
nibble dapat dilihat seperti berikut:
39
$ORIGIN 0.6.8.1 .1.0.2.0.5.0.8.e.f.f.3.ip6.int.
1.0.0.0.0.0.0.0.0.0.0.0.2.4.0.0 IN PTR host.mobs.edu.
2.6.4.2. Konversi alamat IPv6 ke nama dengan Format Bitstring
Label bistring dapat dimulai dan diakhiri pada semua batasan bit, hal ini
lebih baik dibandingkan dengan format nibble yang dibatasi tiap kelipatan 4.
Label bistring menggunakan IP6.arpa.. Contoh penulisan alamat dengan format
bitstring untuk host dengan alamat 3ffe:8050:201:1860:42::1. Contoh penulisan
alamat dalam format bitstring dapat dilihat seperti berikut:
$ORIGIN \[x3ffe805002011860/64].ip6.arpa.
\[]x0042000000000001/64] IN PTR host.mobs.edu.
2.7. Pemrograman Shell
Shell merupakan nama yang diberikan untuk suatu program yang
berfungsi untuk menjembatani user dengan sistem operasi UNIX (Susanto, 2001).
Shell adalah bahasa penterjemah perintah (command interpreter language) atau
sebuah prosesor makro yang menjalankan perintah (Rofiq Yuliardi 2002). Shell
menerima setiap perintah dari user dan menjalankan sesuai dengan fungsinya.
Dengan kata lain Shell adalah penterjemah perintah (command interpreter).
Sebagai sebuah interpreter shell juga mempunyai kemampuan untuk
menjalankan sekumpulan perintah. Perintah-perintah itu disimpan dalam satu file
dan disebut sebagai shell script.
40
Syscall
Dev Driver
Aplication Utility
SHELL
Kernel
Hardware
User
Gambar 2.12 Arsitektur Sistem Linux dan lokasi SHELL
2.7.1. Jenis-jenis Shell
Ada beberapa jenis pemrograman shell pada UNIX antara lain (Budi
Susanto, 2001) :
a. csh (c shell) : suatu shell yang sintaknya mirip dengan bahasa C.
b. tcsh : c shell dengan penambahan karakteristik.
c. ksh (korn shell) : Korn shell merupakan shell yang dikembangkan melalui
laboratorium Bell, AT&T oleh David Korn.
d. zsh, pdksh : keduanya adalah turunan dari korn shell dengan beberapa
penambahan seperti TC shell.
e. sh, bash (shell, bourne again shell) : shell yang paling banyak digunakan.
2.7.2. Bash Shell
Bash adalah singkatan dari Bourne Again Shell. Bash adalah suatu bahasa
pemrograman yang dapat menterjemahkan bahasa perintah, yang terdapat dalam
41
sistem operasi GNU. Bash kompatibel dengan shell sh dan ditambah dengan
kemampuan atau karakteristik yang dimiliki oleh Korn Shell (ksh) dan C Shell
(csh) (Wahana, 2003).
Sebagai sebuah programming language, bash memungkinkan user dapat
memprogram secara terstruktur. Namun sebagai command language, bash
memungkinkan user untuk mengontrol eksekusi.
Sebagai command language, Bourne Shell memiliki karakteristik sebagai
berikut :
Eksekusi Program : Memungkinkan menjalankan program secara
berurutan maupun paralel.
Pembuatan File : Dapat membuat file yang baru dan menambah isi
dari file yang sudah ada.
Argument Passing : Memungkinkan untuk melewatkan argumen ke
program melalui baris perintah maupun environment variabel.
Eksekusi Program Berkondisi : Memungkinkan untuk menjalankan
program berdasarkan pada keberhasilan atau kegagalan program lain.
Predefined Procedures : User dapat menyusun suatu script yang
mendefinisikan suatu urutan program yang akan di eksekusi.
Sedangkan sebagai programming language, bash memiliki karakteristik
sebagai berikut :
Variables : Dapat mendefinisikan variabel dan melakukan operasi
terhadapnya.
42
Structured Language Constructs : Menyediakan struktur sequence,
selection dan iterasi.
Scope : User dapat membatasi ruang lingkup dimana antara variabel
dan program dapat saling mengenal.
Macro Substitution : Bash menyediakan macro dan header file.
Subroutines : User dapat menulis dan memanggil suatu subroutin dan
memungkinkan untuk membuat suatu rekursi didalamnya.
Berikut adalah contoh penulisan bash script dalam suatu konsole :
[root@linux /]# echo “hello world”
Script diatas ditulis langsung dalam konsol dan jika program dijalankan maka
akan langsung menampilkan pesan dalam bentuk sebagai berikut :
[root@linux /]# echo “hello world” hello word [root@linux /]#
Dan dapat pula program ditulis dalam sebuah script. Penulisan script adalah
sebagai berikut :
#! /bin/sh echo “hello world” echo “selamat pagi”
Ketika program dijalankan maka program tersebut akan menampilkan tulisan
berupa :
hello world selamat pagi [root@linux /]#
Bash adalah suatu bahasa pemrograman yang dapat dijalankan dengan
memanggil langsung nama filenya. Namun dalam file Linux terdapat mode yang
43
digunakan untuk pembatasan akses oleh user (file permission). Untuk dapat
menjalankan script bash, user harus mengganti mode file dengan perintah chmod.
File permission di Linux memiliki tiga mode yang berbeda untuk tiga
pengguna. Yaitu mode baca (read), tulis (write) dan eksekusi (execution). Ketiga
mode ini dimiliki oleh masing-masing pengguna.
User Group Other
chmod rwx rwx rwx
File permission biasanya hanya mengijinkan user untuk mengeksekusi
script, namun tidak menutup kemungkinan penguna lain yang masih berada dalam
satu group atau pengguna lain dapat mengeksekusi program tersebut.
Dari script diatas dimisalkan disimpan dalam file hello di directori home.
Maka untuk mengaktifkan mode eksekusi script hello diatas adalah dengan cara :
[root@linux /]# chmod 755 /home/hello
Dan untuk menjalankan script diatas dapat dituliskan :
[root@linux /]# /home/hello
Namum apabila user berada dalam direktori dimana file itu berada, maka user
dapat menamggil dengan perintah :
[root@linux /]# ./hello
2.8. Pemrograman Perl
Perl singkatan dari “Practical Extraction and Report Language”
ditemukan tahun 1986 oleh Larry Wall, untuk mengatasi kerumitan
pengembangan apalikasi dan sistem yang beragam pada UNIX. Perl sendiri dibuat
44
dari bahasa C dan dikerjakan oleh para programmer sukarela, yang memiliki
kemampuan sebagai bahasa scripting, menangani regular expresion, signal,
socket dan sebagainya. Perl adalah bahasa interpreter. Program Perl disediakan
untuk mengatasi kelemahan bahasa awk, sed, dan sh dalam pembuatan laporan
dan manipulasi teks.
2.8.1. Keuntungan Menggunakan Perl
Perl memiliki sifat yang gratis/bebas, karena pendistribusiannya
menggunakan GNU copyleft. Selain itu Perl juga didistribusikan menggunakan
artisitic license6. Perl tersedia pada berbagai platform sistem operasi, yang
diantaranya adalah:
• UNIX dan keluarganya
• MS-DOS
• Windows 95, 98 dan NT.
• OS/2
• Macintosh
Telah dijelaskan diatas bahwa Perl adalah bahasa interpreter. Perl
memiliki waktu pengembangan yang jauh lebih pendek dibandingkan bahasa
pemrograman yang berbasis kompiler , sehingga Perl memiliki waktu eksekusi
yang lebih cepat dibandingkan dengan bahasa yang berbasis kompiler. Perl dapat
digunakan untuk melakukan pengembangan secara iteratif dan melakukan testing
6 Dudy Rudianto, PERL UNTUK PEMULA, 2003, Hal 5
45
tanpa harus melakukan proses kompilasi, testing, debug dan lain-lain yang sering
ditemui pada bahasa berbasis kompiler.
Perl dapat digunakan untuk melakukan berbagai project dengan tingkat
kerumitan yang cukup tinggi, karena kemampuan Perl hampir setara dengan
bahasa C. Perl memiliki kemampuan utnuk melakukan read/write pada socket
TCP/IP. Hal ini berarti Perl memiliki kemampuan berkomunikasi dengan berbagai
server dengan berbagai tipe socket komunikasi yang digunakan.
2.8.2. Ekstensi Perl untuk Database
Ekstensi pada Perl dalam menangani berbagai database, seperti Oracle,
MySQL, mSQL, serta database besar lainnya. Keseragaman pengaksesan berarti
kemuidahan bagi seorang programmer karena database apapun yang digunakan
antarmuka yang digunakan tetap seragam.
btreeperl NDBM ekstensictreeperl C-Tree ekstensiduaperl X.500 directory user agentingperl ingresisqlperl informixInterperl Interbaseoraperl Oraclepgperl Postgressybperl Sybaseuniperl Unify
Tabel 2.3. Ekstensi Perl untuk Database
2.8.3. Kelemahan Menggunakan Perl
Kelemahan yang dimiliki Perl antara lain adalah:
• Informal Support
46
Oleh karena Perl dikembangkan oleh begitu banyak programmer
sukarela, maka dukungan teknis hanya diberikan kepada mereka yang
bekerja secara informal.
• Protecting Popietary Code
Sebagai bahasa Interpreter, Perl tidak dapat diberikan hanya versi
binarinya saja, sehingga Perl tidak dimungkinkan utnuk tertutup kode
asalnya
2.8.4. Tipe Data Perl
Perl memiliki tipe data terbatas, hal ini dikarenakan Perl akan melakukan
suatu Internal Conversion yang akan melakukan suatu operasi tersendiri terhadap
tipe data yang diberikan dalam suatu ekspresi. Jika pada bahasa C, pemrogram
dapat mendifinisikan tipe data signed atau unsigned, dalam Perl cukup memiliki
dua tiper data dasar, yaitu scalar dan array. Untuk tiap tipe-tipe data tersebut,
aturan penamaan variabel juga berlainan. Variabel adalah suatu nama yang
dimunculkan pada pad program yang menunjukkan pada suatu nilai tertentu yang
disimpannya selama program tesebut dijalankan7.
2.8.4.1. Tipe Data Scalar
Semua angka dan string adalah scalar. Suatu nilai yang termasuk dalam
tipe data angka adalah nilai yang terdiri dari digit 0-9 dan tanda + (plus) atau –
(minus). Untuk string adalah kumpulan karakter yang diapit dengan tanda petik
7 Budi Susanto, Pemrograman Script pada Unix/Linux, 2004, Hal 259
47
tunggal (‘) atau ganda (“). Perbedaan antara petik tunggal dan ganda adalah petik
tunggal akan mengartikan karakter yang diapit apa adanya, sedangkan untuk petik
ganda mengartikan karakter yang diapit harus diterjemahkan.
2.8.4.2. Tipe Data Array
Array adalah suatu daftar dari scalar. Utnuk membentuk variabel scalar
array, harus didahului dengan karakter @ di awal nama variabel tersebut. Berikut
bentuk umum dari penulisan definisi variabel array pada Perl8.
@namavar = ( elemen0, elemen1 , elemen2.......elemenN );
Perl menyediakan banyak berbagai fungsi pustaka yang berhubungan
dengan list dan variabel array. Fungsi-fungsi ini dapat digunakan untuk berbagai
keperluan berikut:
• Melakukan sorting pada elemen array dalam bentuk alphabetical
order.
• Membalikkan elemen pada array.
• Menghilangkan karakter terakhir dari setiap elemen array.
• Menggabungkan elemen array menjadi string tunggal
• Memisahkan sebuah string menjadi elemen array
2.8.5. Program Sederhana Perl
Pada bahasan ini akan diberikan gambaran tentang contoh pemrograman
Perl sederhana. script Perl dapat dibuat dengan menggunakan teks editor seperti vi
8 Budi Susanto, Pemrograman Script pada Unix/Linux, 2004, Hal 264
48
atau joe. Berikut contoh script perl dengan nama file tampil.pl, untuk
menampilkan input tulisan dari keyboard pada shell :
#!usr/bin/perl $barismasukan = <STDIN>; print (“Selamat menggunakan program $barismasukan”);
Untuk menjalankan script diatas pada shell, ubah mode script dengan perintah:
#chmod 755 /home/perl/dasar/tampil.pl
Maksud dari dari perintah diatas adalah agar file tampil.pl dapat menjadi sebuah
file eksekusi. Dan untuk menjalankan script diatas dapat ditulis dengan:
#./home/perl/dasar/tampil.pl
input dan output program akan ditampilkan seperti berikut:
#./home/perl/dasar/tampil.pl Perl input Selamat menggunakan program Perl output
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1. ANALISIS
Dengan habisnya resource alamat IPv4, penggunaan IPv6 diharapkan
dapat mecukupi kebutuhan alamat IP pada masa sekarang ini. Namun, IPv6 adalah
protokol baru yang tidak semua peralatan yang telah terhubung dengan internet
dapat berkomunikasi menggunakan protokol IPv6 ini. Untuk mengganti jaringan
IPv4 dengan IPv6 pun memerlukan dana yang tidak sedikit. Penggunaan
mekanisme yang memanfaatkan jaringan IPv4 menjadi salah satu alternatif
penghematan biaya.
Sistem operasi Linux memiliki beberapa layanan aplikasi yang
memungkinkan sebuah komputer untuk menjadi sebuah komputer server, baik
sebagai server Poxy, Web server, server DNS, Router dan lainnya. Dalam masa
transisi ini, orang harus mempelajari cara menseting alamat IPv6 dalam sistem
operasi Linux dan juga aplikasi-aplikasi lain yang telah mendukung protokol IPv6
ini.
3.1.1. Strategi pada masa Transisi
Sistem operasi Linux Fedora Core 2 adalah salah satu sistem operasi yang
telah mendukung penggunaan protokol IPv6 dan aplikasi-aplikasi yang
dibutuhkan protokol IPv6 tersebut. Salah satu aplikasi yang telah mendukung
protokol tersebut, adalah program named dari BIND versi 9.2.3 yang berfungsi
49
50
sebagai sebuah komputer server DNS (Domain Name Sistem). Sebuah komputer
yang bertugas untuk konversi alamat ke nama maupun nama ke alamat. DNS
terdiri atas sintaks yang digunakan untuk menspesifikasikan nama dari entitas-
entitas dalam internet ke dalam bentuk yang hierarki.
Pada saat ini, IP yang digunakan bukan hanya IPv4 saja, namun pada masa
trasnisi protokol IPv6 telah dipakai dalam mengantisipasi keterbatasan alamat
IPv4. Pada masa transisi IPv4 ke IPv6, seorang administrator jaringan harus
mempelajari cara menseting IPv6, serta mengetahui aplikasi-aplikasi yang telah
mendukung protokol tersebut. Salah satu aplikasi yang telah mendukung protokol
IPv6 adalah program named dari BIND pada sistem operasi Linux yang berfungsi
untuk membuat sebuah komputer menjadi sebuah komputer server DNS dengan
protokol IPv6.
Pada kenyataannya, peran fungsi program named tersebut, memiliki
keterbatasan dalam mengkonfigurasi dan pembuatan file-file komputer server
DNS, terutama yang menggunakan sistem operasi Linux berbasis text-mode atau
non-GUI. Karena program named yang dijalankan berbasis sistem operasi Linux
berbasis non-GUI, hanya dapat mengkonfigurasi letak direktori, port, user
privilege dan lainnya.
Akan berbeda bila program named yang dijalankan berbasis sistem operasi
Linux berbasis GUI, telah dapat membuat file-file konversi untuk IPv4 secara
otomatis.
Kecenderungan orang merasa malas untuk mempelajari serangakaian
perintah, serta bentuk rangkaian format IPv6 yang sulit dan panjang. Dalam
51
penelitian ini, digunakan pemrograman bash dan perl untuk membuat tools yang
dapat membantu administrator. Dalam melakukan seting konfigurasi IPv6 pada
sebuah komputer yang memiliki fungsi server DNS dengan sistem operasi Linux
non-GUI atau text-mode.
Terutama pada masa transisi penggunaan IPv4 ke IPv6 akan dibutuhkan
mekanisme yang dapat membantu penggunaan IPv6. Dalam tahap implementasi
server DNS dengan IPv6 ini, akan dilakukan dalam sebuah jaringan lokal tanpa
harus melakukan komunikasi keluar jaringan atau BackBone6. Hal ini disebabkan
koneksi ke jaringan internet masih menggunakan router-router dengan IPv4.
Perlu diketahui dalam model pencarian dari nama ke alamat yang
digunakan program named, terdapat 2 model pencariaan atas nama yang
menggunakan alamat IPv6, yaitu dengan model AAAA records dan A6 records
agar dapat melakukan komunikasi dengan protokol IPv6. Kedua model pencarian
untuk IPv6 tersebut adalah standard yang telah ditetapkan, untuk lookup forward
(konversi dari nama ke alamat IPv6), tetapi pada kenyataannya format record
AAAA masih belum fleksibel. Sehingga status untuk penggunaan record AAAA
pada saat ini masih dalam status eksperimen (boleh digunakan atau tidak
digunakan).
Namun untuk menjaga kompatibilitasnnya, kedua format tersebut
digunakan secara bersamaan, sehingga format record AAAA masih digunakan
resolver untuk mendukung pencarian dengan record jenis AAAA. Hal ini
dikarenakan penggunaan record A6 jauh lebih sulit dibandingkan record pencarian
dengan jenis A atau AAAA.
52
Pencarian alamat IPv6 ke nama (reverse lookup) digunakan konversi
pencarian dengan format nibble, mengingat tingkat kesulitan format baru bitstring
untuk pencarian alamat IPv6 ke nama masih berstatus eksperimen. Untuk
pemetaan zona reverse (kebalikan) yang digunakan adalah ip6.arpa, sedangkan
untuk ip6.int yang pada dasarnya tidak disetujui. Maka kegunaan dari ip6.arpa
adalah untuk memetakan zona reverse (kebalikan), hal ini disebabkan tingkat
kesulitan untuk pemetaan ruang alamat IPv6 dengan ip6.int1. Sehingga
penggunaan ip6.int masih sering dialihkan ke ip6.arpa untuk mengatasi pencarian
dengan format tersebut.
Server DNS berbasis IPv6 berperan dalam perkembangan masa transisi
ini, karena beberapa hal, yaitu:
1. Alamat IPv6 yang jauh lebih panjang dan pengalamatan dengan
menggunakan format hexadecimal.
2. Manusia cenderung lebih mudah mengingat nama dibandingkan
dengan angka yang panjang.
3. Membuat file-file utama secara manual dengan format IPv6
memerlukan waktu dan ketelitian.
4. Dengan sistem DNS yang terdistribusi, pemberian nama untuk tiap
komputer dalam sebuah komputer server DNS, jauh lebih mudah
dibandingkan dengan menamakan tiap-tiap komputer yang berjumlah
banyak.
1 RFC (request for comment) 1886
53
Web Server
DNS Server
Mail Server
router1
router2
client
client
INTERNET
Gambar 3.1. Konfigurasi sebuah Jaringan dengan Server DNS
3.1.2. Kasus Penanganan Program BIND-named dengan IPv6
Ada beberapa kasus penanganan terhadap server DNS berbasis IPv6
dalam masa transisi ini. Domain Name System digunakan untuk pemberian nama
ke alamat maupun alamat ke nama secara terpusat dalam sebuah komputer untuk
komputer-komputer lainnya dalam satu lingkup jaringan lokal yang besar dan
tersimpan dalam beberapa file konfigurasi dan file forward dan reverse.
Dalam kasus ini sistem operasi yang akan digunakan untuk server DNS
adalah sistem operasi Linux berbasis text-mode atau non-GUI dengan klien-klien
yang mengunakan sistem operasi Windows dan Linux berbasis GUI.
Maka perlunya sebuah tools yang dapat berjalan pada sistem operasi Linux
non-GUI, sehingga memungkinkan dan memudahkan administrator untuk
membuat file-file konfigurasi DNS dengan format alamat IPv6. Agar sebuah
server DNS berbasis IPv6 dapat berjalan dengan baik, maka perlunya mengetahui
format atau model penulisan file-file konfigurasi dengan format penulisan dan
konversi yang mendukung alamat IPv6.
54
Beberapa file yang dimanfaatkan dan dibutuhkan untuk konfigurasi dan
dibuat adalah named.conf, resolv.conf, forward, reserve.int dan reverse.arpa. File-
file utama yang dibutuhkan untuk sebuah server DNS dalam jaringan lokal yang
berbasis IPv6 adalah resolv.conf, named.conf, named.root6, forward, reverse.int
dan reverse.arpa.
Berikut bentuk file-file utama dengan format IPv6 yang dibutuhkan dan
telah mendukung untuk menjalankan servis program named :
a. Format Penulisan pada file resolv.conf
File Resolver adalah program yang mengirim pertanyaan (query) terhadap
server DNS untuk mendapatkan informasi suatu host. File ini berisi
informasi tentang domain dan server DNS untuk domain yang dituju,
contoh :
nameserver mobs6.edu
search 2002:200::abcd:10a
b. Format Penulisan sebuah zona bebrbasis IPv6 pada file named.conf
File named.conf adalah sebuah file yang dibaca pertama kali oleh program
named, file tersebut adalah sebuah file boot yang berfungsi untuk
mengatur kemanan, port yang digunakan dan serta penulisan letak file
zona forward dan file reverse yang dibuat, contoh :
options { directory "/var/named"; listen-on-v6 { any };
// query-source address * port 53; };
controls { inet 127.0.0.1 allow { localhost; } keys { rndckey; };
55
inet ::1 allow { localhost; } keys { rndckey; }; }; zone "ipv6.my.zone" IN { type master; file "ipv6.my.zone"; allow-update { none;}; };
c. Format Penulisan file forward dengan Pencarian Alamat dengan
Record AAAA
Fungsi record AAAA memiliki kesamaan dengan penulisan record A pada
IPv4, contoh :
www IN AAAA 2002:200::abcd:10a
d. Format Penulisan file forward dengan Pencarian Alamat dengan
Record A6
Fungsi record A6 digunakan untuk membentuk rantai record A6 untuk
menspesifikasi alamat IPv6, contoh :
www IN A6 0 2002:200::abcd:10a
e. Format Penulisan file reverse.int, Konversi dari Alamat IPv6 ke
Nama dengan Format Nibble
Format nibble digunakan untuk pencarian dari alamat ke nama dalam DNS
adalah pencarian dengan format lama (IPv4)2, contoh :
$ORIGIN 0.0.0.0.0.0.0.0.0.0.2.0.2.0.0.2.ip6.int.
a.0.1.0.d.c.b.a.0.0.0.0.0.0.0.0 IN PTR ns.ipv6.my.zone.
2 Riza Taufan, Teori dan Implementai IPv6, PT. Elex Media Komputindo, 2002, hal 256
56
f. Format Penulisan file reverse.arpa, Konversi dari Alamat IPv6 ke
Nama dengan Format Bitstring
Format bitstring dapat dimulai dan diakhiri pada semua batasan bit, hal ini
lebih baik apabila dibandingkan dengan format nibble:
$ORIGIN \[x2002020000000000/64].ip6.arpa
\[x00000000abcd010a/64] IN PTR ns.ipv6.my.zone.
g. Format Penulisan named.root6 untuk Alamat IPv6
File named.root6 adalah cache file dan file ini sangat penting. File ini
digunakan untuk memberikan informasi ke arah server DNS tentang root
untuk mengetahui informasi host-host yang tidak terdapat di domain lokal.
Namun dalam penelitian ini, konfigurasi server DNS yang digunakan
hanya berjalan dalam jaringan lokal tanpa melakukan koneksi internet ke
BackBone6 yang memiliki nama-nama root berbasis alamat IPv6 di
internet. Sehingga file named.root6 ini akan berfungsi untuk
menggantikan posisi caching file koneksi ke BackBone6. Contoh file:
. 3600000 IN NS ipv6.my.zone. ipv6.my.zone. 3600000 IN AAAA 2002:200::abcd:10a ipv6.my.zone. 3600000 IN A6 0 2002:200::abcd:10a
Namun pada kenyataannya, saat implementasi pembuatan file-file secara
manual dilakukan, bentuk file reverse.arpa dengan format nibble tidak dapat
berjalan dengan baik saat servis named diaktifkan dan dilakukan pengecekan.
Untuk mengatasi hal tersebut, file reverse.arpa akan dilakukan beberapa
modifikasi dengan menggunakan contoh pembuatan file yang diperoleh dari situs
57
http://h71000.www7.hp.com/doc/732final/6645/6645pro_005.html dari Hewlett-
Packard Development Company,L.P., sebagai berikut :
Untuk memperbaiki kompabilitasan pada file reverse.arpa, modifikasi file
reverse.arpa dari Hewlett-Packard3 akan digunakan format nibble seperti berikut:
$ORIGIN 0.0.0.0.0.0.0.0.0.0.2.0.2.0.0.2.ip6.arpa. $TTL 86400 @ IN SOA ipv6.myzone. root.mobius.edu.( 42 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ns.ipv6.my.zone. a.0.1.0.d.c.b.a.0.0.0.0.0.0.0.0 IN PTR host.ipv6.my.zone.
Sedangkan untuk file reverse.int akan dimodifikasi agar pencarian lamat
ke nama dialihkan ke file reverse.arpa dengan menggunakan perintah DNAME,
seperti berikut:
$ORIGIN 0.0.0.0.0.0.0.0.0.0.2.0.2.0.0.2.ip6.int. $TTL 86400 @ IN SOA ipv6.my.zone. root.ipv6.my.zone.( 42 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS ipv6.my.zone. DNAME 0.0.0.0.0.0.0.0.0.0.2.0.2.0.0.2.ip6.arpa.
Dengan melihat contoh format penulisan file-file diatas, dapat dilihat
panjang dan kerumitan dalam pembuatan file-file tersebut jika dilakukan secara
manual, sehingga akan memakan banyak waktu dalam memberikan nama-nama
server dan host dalam sebuah server DNS. Oleh karena itu dibutuhkan suatu tools
yang dapat membantu administrator dalam menseting dan menyiapkan sebuah 3 http://h71000.www7.hp.com/doc/732final/6645/6645pro_005.html
58
komputer yang berfungsi sebagai server DNS berbasis IPv6 dengan sistem operasi
Linux berbasis text-mode. Dalam penelitian ini digunakan pemrograman bash dan
perl untuk membuat tools tersebut.
3.1.3. Program BIND-named Pada Linux
Linux memiliki aplikasi-aplikasi yang terus berkembang. Dalam program
named yang berjalan pada sistem operasi Linux Fedora Core 2 berbasis text-mode,
memiliki perintah-perintah yang hanya berfungsi untuk menseting konfigurasi
letak direktori, port, file konfigurasi default (bawaan) yang terdapat pada direktori
/etc seperti file named.conf dan resolv.conf, sedangkan pada direktori /var/named
telah terdapat file localhost.zone, named.local, dan named.ca yang telah terinstall
secara otomatis dengan bentuk bawaan saat menginstall sistem operasi Linux.
Perintah untuk pembuatan file-file utama DNS secara otomatis seperti:
forward dan reverse, program named tidak memiliki fasilitas atau perintah
tersebut baik untuk format IPv4 maupun IPv6, jika berjalan pada sistem operasi
Linux berbasis text-mode. Maka untuk membuat file-file utama DNS masih harus
dilakukan secara manual (pembuatan file dan mengetik secara keseluruhan baik
bentuk atapun format isi dari file).
Apabila sistem operasi Linux yang digunakan berbasis GUI, program
named yang ada telah diberikan aplikasi tambahan yang berbasis GUI dalam
pembuatan file-file utama secara mudah dan efisien. Namun program named
berbasis GUI tersebut, belum mendukung pembuatan format file-file utama
berbasis IPv6.
59
Bentuk program named bila dijalankan pada sistem operasi Linux berbasis
text-mode, memiliki perintah-perintah yang dapat digunakan untuk menseting
konfigurasi letak direktori, port, file konfigurasi default (bawaan) dan lainnya,
seperti berikut :
usage: named [-c conffile] [-d debuglevel] [-f|-g] [-n number_of_cpus]
[-p port] [-s] [-t chrootdir] [-u username]
Dengan melihat perintah-perintah yang dimiliki program named diatas,
yang hanya dapat menseting konfigurasi letak direktori, port, file konfigurasi
bawaan dan lainnya. Program named yang ada akan diberikan program tambahan
untuk pembuatan file-file utama dalam format yang telah didukung oleh alamat
IPv6 secara cepat dan efisien.
3.1.4. Analisis Kebutuhan
Analisis kebutuhan disini dimaksudkan untuk mengumpulkan kebutuhan
administrator dalam membangun jaringan lokal berbasis IPv6 yang
memanfaatkan fungsi server DNS.
1. Analisis sistem
Berdasarkan analisis yang telah dilakukan, maka yang diperlukan dalam
implementasi ini adalah:
a. Membuat lingkup jaringan lokal dengan komputer-komputer yang sudah
terkoneksi dan terkonfigurasi dengan alamat IPv6.
b. Memberikan kemudahan bagi administrator untuk membuat sebuah
komputer dalam jaringan lokal menjadi server DNS.
60
c. Memberikan fungsi otomatis terhadap pembuatan file-file utama dengan
format IPv6 yang dibutuhkan oleh server DNS.
2. Analisis pengguna
Sistem ini hanya ditujukan kepada administrator yang pernah
mengkonfigurasi dan membuat file-file utama untuk server DNS dengan
program named berbasis IPv4 maupun IPv6 secara manual.
3.1.5. ANALISA PROSES
Pada tahapan ini dilakukan analisa proses pembuatan file dari input-input
dan kondisi-kondisi bentuk perintah yang akan diproses melalui program named6,
selama servis program named belum dijalankan. Sehingga bentuk dari perintah
dan opsi-opsi yang dimiliki dari program named6 tersebut akan jauh berbeda
dengan program named yang telah dijelaskan sebelumnya. Hal ini dikarenakan
fungsi dari program named6 adalah memanipulasi file yang telah ada (telah
terinstall sebelumnya) dan membuatkan file-file baru dalam format yang
mendukung IPv6.
Adapun untuk menggambarkan proses jalannya program dilakukan dengan
cara menggambarkan flowchart-flowchart untuk memahami tiap proses membuat,
mengubah, menghapus, menampilkan file-file utama dan fasilitas-fasilitas yang
diberikan.
Program named6 akan dimanfaatkan untuk mengepalai semua proses
program yang berkaitan dari proses opsi-opsi yang ada seperti: menambah (add),
mengubah (edit), menghapus (delete), menampilkan (view) atau perintah lain yang
61
telah dikondisikan pada program named6 tersebut. Dengan kata lain, semua
program akan dimulai dari proses program named6 terlebih dahulu, kemudian
dilanjutkan dengan menjalankan program-program lainnya secara otomatis.
Saat tiap proses satu program telah selesai, maka program akan dilanjutkan
dengan memanggil program-program yang berkaitan sampai dengan proses
program terakhir selesai. Tiap program yang terkait akan memiliki fungsi yang
berbeda-beda, hal ini disebabkan penggunaan dua bahasa pemrograman yang
berbeda dengan memanfaatkan kelebihan dari tiap bahasa pemrograman itu
sendiri
Proses menambahkan sebuah nama dan alamat, maka jalan program yang
berkaitan adalah:
1. Tambah (add) nama dan alamat IPv6/prefix untuk server, yaitu:
a. named6 add, perintah diatas adalah proses pengkondisian bentuk
perintah input yang telah ditetapkan yaitu dengan mengisikan perintah
“add”, “-DNS” diikuti pengisian nama server, dan “-ip6/prefix” diikuti
alamat dan prefix, maka program akan membuatkan file temporary
(sementara) pada direktori /var/tmp/SERVER sehingga dapat
digunakan untuk proses program-program selanjutnya. Berikut adalah
bentuk flowchart untuk menambah sebuah nama dan alamat/prefix
untuk server DNS, dimulai dari program named6 dan proses
pemanggilan program-program lainnya:
62
START
case $isi1=”add”
$isi1=add, $isi2=-DNS, $isi3=”nama server”, $isi4=-ip6/prefix, $isi5=”alamat/
prefix"
no
no
yes
END
echo “Perhatikan format penulisan“ echo; $helpS; $helpHelse
yes
yes
no
if [[ $ip != "" && $pfx != "" ]]
echo "$isi3 $ip $pfx" > $TMPVar/"$isi3"; echo "1" > /proc/sys/net/ipv6/bindv6only
./cekIP.pl $ip $pfx $isi3
if [[ $isi2 == help || $isi2 == "" ]]
elif$isi2=-DNS && $isi3 != “” && $isi4=-ip6/prefix && $isi5 !=
“”if [[ -d $TMPS ]]
if [[ -f $Var/f-"$isi3" ]]
else[[ -s $Etc/
resolv.conf ]]
yes
elif$isi2=-H && $isi3 != “” && $isi4=-ip6/prefix && $isi5 != “” && $isi6=-
Z && $isi7 != ””
echo "Nama Domain $isi3 Sudah Ada !!!" ;
no
else
mkdir $TMPS; …...…..
echo "1" > /proc/../ ipv6/bindv6only./cekIP.pl $ip $pfx $isi3
yes
……..
yes
yes
Gambar 3.2.Flowchart proses tambah server program named6
b. cekIP.pl, program ini memanfaatkan bahasa pemrograman Perl dan
berfungsi untuk memproses hasil masukan alamat IPv6 beserta prefix
yang diterima dari program named6 untuk pengecekan bentuk format
alamat IPv6 dan prefix yang telah ditetapkan. Seperti yang telah
dijelaskan sebelumnya, jika fungsi dari program cekIP.pl akan
63
digunakan untuk mengecek format alamat IPv6 dan penggunaan prefix
yang telah ditetapkan, berikut flowchart program cekIP.pl:
START
If( $ip !~ /[G-Z]|[g-z]/ && $ip !~ /
^(?>(.*?){1}):/ && $ip !~ /(?>(.*?){1}):::/ && $ip !~ /(?>(.*?){1})[;]/ &&
$ip !~ /(?>(\.*?\.){1})/ )if ($ip eq "::1")
If($cap<"1" && $count < 7 || $cap ==1 &&
$count > 6 )
elsif($cap=="2" ||
$error=="1" || $count > "7" )
else
else
yes
$tes=@prefix; for ($x=0; $x<$tes;$x++)
no
system("echo $nama $ip $prfx >> /var/tmp/$zona");system("./ffwdHST.sh");
system("echo $nama $ip $prfx > /var/tmp/$nama");system("./ffwdSRV.sh");
else
END
print "\nMessage 1 ==> Format INPUT alamat IPv6 SALAH!!!\n\n";
if(open(test,"$DIRH/
zonaH")) hapusS();
yesno
hapusH(); else
else
no
yesno
yes
if($pass eq "1")
if(open(test,"$DIRH/
zonaH"))
else
yes
no
no
yes
yes
no
$ip = $ARGV[0]; $prfx = $ARGV[1]; $nama = $ARGV[2]; $zona = $ARGV[3]; $DIRS ="/var/tmp/SERVER"; $DIRH ="/var/tmp/HOST"; @prefix = (16, 32, 48, 64, 80, 96, 112);
Gambar 3.3.Flowchart program cekIP.pl tambah server
c. ffwdSRV.sh, program ini memanfaatkan bahasa pemrograman shell
script dan berfungsi untuk membuat file-file pada direktori
64
/var/named, yaitu file-file: named.root6, localhost6.zone,
named6.local, dan forward (penamaan file sesuai dengan format yang
telah ditentukan). Bila input alamat dan prefix program telah terpenuhi
dengan kondisi yang ada, maka program akan melanjutkan memanggil
program ffwdSRV.sh yang akan berfungsi untuk membuat file-file
dalam format yang telah ditentukan, berikut flowchart program
ffwdSRV.sh:
START
if [[ -s $Etc/resolv.conf ]]
echo "……" >> $Var/named.root6 echo "……" > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS
echo "……" > $Var/named6.local echo "……" > $Var/localhost6.zone echo "……" >> $Var/named.root6 echo "……" > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS
else
END
TMPS=/var/tmp/SERVER; Var=/var/named; Etc=/etc namaS=`awk '{print $1}' $TMPS/namaS`; IpS=`awk '{print $1}' $TMPS/ipS` pfxS=`awk '{print $1}' $TMPS/pfxS` revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." ptrlocal="1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR localhost."
Gambar 3.4.Flowchart program ffwdSRV.sh tambah server
d. reSRV.pl, program ini dibuat memanfaatkan bahasa pemrograman Perl
dan berfungsi untuk membalik format alamat IPv6 dan membuatkan
file sementara agar dapat diporoses pada program selanjutnya. Berikut
65
proses program reSRV.pl yang mendapatkan input dari program
ffwdSRV.sh. Berikut bentuk flowchart dari program reSRV.pl:
START
if ($prfxS == "16") { $nilai=0; $nilai2=1 }……………….
if ($prfxS == "112") { $nilai=6; $nilai2=7;} $cari= length($ipS);
$i=0;
if ($tempat eq "1")
$hitung = 8 - ($count) ;
$kar=substr($ipS,$i,1);$kar2=substr($ipS,$i+1,1);
$i++
$i<$cari
no
$i<$cari;
$kar = substr($ipS,$i,1);$kar2 = substr($ipS,$i+1,1);$kar3 = substr($ipS,$i+2,1);
$i++
yes
$ i=0;
my $str2 = $karakter;@daftar= split(/:/,$str2);
$count=$#daftar;
no
no
$i=0;
$i++ yes
$itung=$nilai;
$j=0;
$awal="...";$j++
$j<=$itung
$panjang = length($awal);
yes
yes
no
no
no
if ($kar eq ":" && $kar2 ne ":") elsif ($kar eq ":" && $kar2 eq ":")
…..
if($hitung >= 0)
if($kar ne ":")elsif ($kar eq ":" && $kar2 ne ":")elsif ($kar eq ":" && $kar2 eq ":")
for($x=1;$x<=$hitung;$x++)…….
if(length($daftar[$i]) == 4)if(length(...[$i]) == 3 && $i != 0)if(length(...[$i]) == 2 && $i != 0)if(length(...[$i]) == 1 && $i != 0)
…..
$i<$count
yes
yes
no
yes
yes
If ($i==$panjang-1)else {}…….
$i=$panjang
$i--
$j<=$itung
no
system("echo $depan > /var/tmp/SERVER/depanS "); $itung2=7;
$blkg="...";$j2++;
$j<=$itung
yes
$panjang2 = length($blkg);
$i2=$panjang 2-1$temp2=substr(...);
if ($i2==$panjang 2-1)else {}…….
$j<=$itung
$i2--
system("echo $depan > /var/tmp/SERVER/belakangS ");system("./reSRV.sh");
END
$ipS = $ARGV[0]; $prfxS = $ARGV[1];
Gambar 3.5.Flowchart program reSRV.pl tambah server
66
e. reSRV.sh, program ini memanfaatkan bahasa pemrograman shell
script dan berfungsi untuk membuat file reverse (penamaan file sesuai
dengan format yang telah ditentukan) pada direktori /var/named.
START
echo "……" > $Var/rev."$namaS".arpa echo "……" > $Var/rev."$namaS".int ./named-resolv.sh
TMPS=/var/tmp/SERVERVar=/var/namednamaS=`awk '{print $1}' $TMPS/namaS` dpnS=`awk '{print $1}' $TMPS/depanS`blkgS=`awk '{print $1}' $TMPS/belakangS
END
Gambar 3.6.Flowchart program reSRV.sh tambah server
f. named-resolv.sh, program ini memanfaatkan bahasa pemrograman
shell script berfungsi untuk memanipulasi file named.conf dan
resolv.conf yang telah terdapat sebelumnya pada direktori /etc,
sehingga dapat mendukung penamaan dengan alamat IPv6 dan
menghapus file-file sementara pada direktori /var/tmp/SERVER.
Berikut bentuk gambar flowchart dari program named-resolv.sh:
67
START
if [[ -f $Etc/named.conf ]]
echo "……" > $Etc/named .conf echo "……" > $Etc/resolv.conf rm $TMPS/namaS ; rm $TMPS/ipS; rm $TMPS/pfxS rm $TMPS/depanS ; rm $TMPS/belakangS
else
END
itung=`awk '/include/{print NR}' $Etc/named.conf` let x=$itung sed "$x"d $Etc/named.conf > $TMP/named.conf
echo "...” >> $TMP/named.conf mv $TMP/named.conf $Etc/named.conf echo "..." >> $Etc/resolv.conf rm $TMPS/namaS ; rm $TMPS/ipS; rm $TMPS/pfxS rm $TMPS/depanS ; rm $TMPS/belakangS
TMPS=/var/tmp/SERVER; Etc=/etc; TMP=/var/tmpnamaS =`awk '{print $1}' $TMPS/namaS`ipS=`awk '{print $1}' $TMPS/ipS`dpnS =`awk '{print $1}' $TMPS/depanS `revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"inet="127.0.0.1 allow { localhost; } keys { rndckey; };"inet6="::1 allow { localhost; } keys { rndckeys; };"
Gambar 3.7.Flowchart program named-resolv.sh tambah server
2. Tambah (add) nama dan alamat IPv6 untuk klien host server, yaitu:
a. named6 add, berfungsi untuk proses pengkondisian bentuk perintah
input yang telah ditetapkan yaitu “-H” diikuti dengan mengisikan
nama klien host, “-ip6/prefix” dan diikuti dengan mengisi alamat
beserta prefix, dan “-Z” diikuti dengan zona server yang berwewnang
atas klien tersebut. Gambar flowchart dari proses program named6
untuk menambah nama dan alamat klien host dapat dilihat pada
gambar berikut:
68
START
case $isi1=”add”
$isi1=add, $isi2=-H, $isi3=”nama host ”, $isi4=-ip6/prefix, $isi5=”alamat/prefix"
$isi6=-Z, $isi7=”nama zona ”
no
no
yes
END
echo “Perhatikan format penulisan“ echo; $helpS; $helpHelse
yes
yes
no
echo "$isi3" > $TMPH/namaH;echo "$ip" > $TMPH/ipHecho "$pfx" > $TMPH/pfxH; echo "$isi7" > $TMPH/zonaHrm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7
if [[ $isi2 == help || $isi2 == "" ]]
elif$isi2=-DNS && $isi3 !=
“” && …...
elif$isi2=-H && $isi3 != “” && $isi4=-ip6/prefix && $isi5 != “” && $isi6=-
Z && $isi7 != ””
else
yes
if [[ -d $TMPH && -f $Var/f-"$isi7" ]]
if cek=`grep $isi 3 $TMPVar/$isi7`
yes
echo "Nama Host: $isi3 Sudah Ada Dalam
Zona: $isi7";
no
yes
elif [[ -f $Var/f-"$isi7" ]]
mkdir $TMPH; …...…..
rm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7yes
no
no
Gambar 3.8.Flowchart program named6 tambah klien host
b. cekIP.pl, program ini dimanfaatkan kembali untuk pengecekan
alamat/prefix untuk klien host server. Proses dari program ini sama
dengan proses pengecekan alamat/prefix untuk server. Perbedaan yang
dimiliki adalah pada saat seluruh kondisi terpenuhi maka program akan
melanjutkan untuk memanggil program ffwdHST.sh yang dapat dilihat
pada gambar 3.3. Flowchart program cekIP.pl tambah server.
69
c. ffwdHST.sh, program ini memanfaatkan bahasa pemrograman shell
script yang berfungsi untuk menambahkan isi file forward server yang
telah dituju dengan nama klien host dan alamat IPv6nya. Berikut
bentuk gambar flowchart dari program ffwdHST.sh:
START
echo "$namaH IN AAAA $ipH IN A 6 0 $ipH
" >> $Var/f-"$zoneH"./reHST.pl $ipH $pfxH
END
TMPH=/var/tmp/HOST; TMPVar=/var/tmpVar=/var/namedzoneH=`awk '{print $1}' $TMPH/zonaH`namaH=`awk '{print $1}' $TMPH/namaH`ipH=`awk '{print $1}' $TMPH/ipH`pfxH=`awk '{print $1}' $TMPH/pfxH`
Gambar 3.9.Flowchart program ffwdHST.sh tambah klien host
d. reHST.pl, program ini memliki proses yang sama persis dengan
program reSRV.pl yang berfungsi untuk membalik format alamat IPv6
dan perbedaannya adalah untuk membuat file-file sementara pada
direktori /var/tmp/HOST agar dapat digunakan sebagai input pada
proses program selanjutya. Karena proses kerja yang dimiliki sama
maka proses gambar flowchart dari program ini dapat dilihat pada
gambar 3.5. yaitu flowchart dari program reSRV.pl.
e. reHST.sh, program ini dibuat memanfaatkan bahasa pemrograman
shell script dan berfungsi untuk menambahkan isi file reverse server
70
yang telah dituju dengan nama klien host dan alamat IPv6 terbalik,
kemudian menghapus file-file sementara yang terdapat pada direktori
/var/tmp/HOST. Gambar proses kerja program dapat dilihat pada
flowchart berikut:
START
echo "$blkgH IN PTR $namaH .$zoneH." >> $Var/rev."$zoneH".arpa
rm $TMPH/namaH ; rm $TMPH/ipH; rm $TMPH/pfxH; rm $TMPH/belakangH; rm $TMPH/zonaH
END
Var=/var/namedTMPH=/var/tmp/HOSTzoneH=`awk '{print $1}' $TMPH/zonaH`namaH =`awk '{print $1}' $TMPH/namaH` blkgH=`awk '{print $1}' $TMPH/belakangH`
Gambar 3.10.Flowchart program reHST.sh tambah klien host
Proses untuk mengubah (edit) sebuah nama atau alamat/prefix, maka jalan
program yang berkaitan adalah :
1. Ubah (edit) nama server atau klien host, proses program-program yang
berkaitan adalah:
a. named6 edit, program ini berfungsi untuk proses pengkondisian
bentuk perintah input untuk pengeditan yang telah ditetapkan yaitu
“edit”, “-DNS” diikuti dengan mengisi nama server lama yang akaqn
diubah dan “-NN” diikuti dengan mengisi nama baru atau “edit” “-H”
diikuti dengan mengisi nama klien host, “-NN” diikuti dengan mengisi
nama baru klien host dan “-Z” diikuti dengan mengisi nama zona
server yang berwewenang atas klien host tersebut. Kemudian
71
dilanjutkan dengan proses pembuatan file-file sementara pada direktori
/var/tmp/EDIT yang akan digunakan pada proses program selanjutnya.
Berikut flowchart dari program named6 untuk ubah nama:
START
case $isi1=”edit”
$isi1=edit, $isi2=-DNS or -H, $isi3=”nama lama ”, $isi4=-NN, $isi5=”nama baru ”, $isi6=-Z,
$isi7=”zonaserver”
no
END
yes
no
if [[ $isi2 == help || $isi2 == "" ]]
elif[[ $isi2 == -DNS && $isi3 != "" &&
$isi4 == -NN && $isi 5 != "" ]]
elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -NN && $isi5 != "" && $isi6 == -
Z && $isi7 != "" ]]
yes
no
no
elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix &&
$isi5 != "" …..
no
no
elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi 4 == -Nip6/prefix &&
$isi5 != "" …..
else
echo "Perhatikan Format Penulisan !!!" $helpE
no
echo "$isi3" > $TMPE/namaLama ; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh
else
if [[ -f $Var/f-"$isi3" && -d $TMPE ]]
no
yes
elif[[ -f $Var/f-"$isi3" ]]
mkdir $TMPEecho "$isi3" > $TMPE/namaLama ; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh
yes
echo "Nama Domain Sever : $isi3, Tidak Ditemukan !!!"; . $helpED
echo "$isi3" > $TMPE/namaLama ; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh
else
if [[ -f $Var/f-"$isi3" && -d $TMPE ]]
elif [[ -f $Var/f-"$isi7" ]]
mkdir $TMPEecho "$isi3" > $TMPE/namaLama ; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh
echo "Nama Host: $isi3, Tidak Ada Dalam Zona: $isi7"
echo "File DNS Tidak Ditemukan !!!";$helpEHelse
if cek=`grep $isi7 $TMPVar/$isi7`
if cek=`grep $isi7 $TMPVar/$isi7`
yes
yes
yes
yes
no
no
no
no
yes
Gambar 3.11.Flowchart program named6 ubah nama
b. EditNama6.sh, program ini memanfaatkan bahasa pemrograman shell
script. Fungsi utama dari program ini adalah untuk mengubah, baik
nama server ataupun klien host berdasarkan pengecekan file sementara
yang ada untuk membedakan pengubahan akan dilakukan untuk nama
72
server atau klien host. Berikut flowchart untuk ubah nama untuk server
atau klien host:
START
Var=/var/named ; Etc=/etcTMPE=/var/tmp/EDIT; TMPVar=/var/tmp
if [[ -f $TMPE/ZONA ]]
zona=`awk '{print $1}' $ TMPE/ZONA` namaL =`awk '{print $1}' $ TMPE/namaLama ` namaB =`awk '{print $1}' $ TMPE/namaBaru`
else
elseecho "\"Nama Host Baru\" Sama Dengan \"Nama Host Lama\" !!!";
sed "s/$namaL/$namaB/g" $Var/f-"$zona" > $TMPE/f-"$zona" mv $TMPE/f-"$zona" $Var
..…… rm $TMPE/ZONA; rm $TMPE/namaLama; rm $TMPE/namaBaru;
if[[ $namaB != $namaL ]]
namaL =`awk '{print $1}' $ TMPE/namaLama ` namaB =`awk '{print $1}' $ TMPE/namaBaru `
if[[ $namaB != $namaL ]]
else
sed "s/$namaL/$namaB/g" $Var/named.root6 > $TMPE/named.root6 mv $TMPE/named.root6 $Var ..…… rm $TMPE/ZONA; rm $TMPE/namaLama; rm $TMPE/namaBaru;
echo "\"Nama Domain Baru\" Sama Dengan \"Nama Domain Lama\" !!!";
yes
no
yes
yes
no
no
END
Gambar 3.12.Flowchart program EditNama6.sh ubah nama
2. Ubah (edit) alamat/prefix server atau klien host, maka jalan program yang
berkaitan adalah:
a. named6 edit, berfungsi untuk proses pengecekan alamat/prefix lama
yang dimiliki oleh server ataupun klien host dan pengkondisian bentuk
perintah input yang telah ditetapkan yaitu “edit”, “-ip6/prefix” diikuti
dengan mengisikan alamat/prefix lama, “-Nip6/prefix” diikuti dengan
mengisi alamat/prefix baru dan “-DNS” diikuti dengan nama server
yang memiliki alamat yang akan diubah. Sedangkan bentuk perintah
73
untuk ubah alamat atau prefix klien host adalah “-ip6/prefix” diikuti
dengan mengisikan alamat/prefix lama, “-Nip6/prefix” diikuti dengan
mengisi alamat/prefix baru, “-H” diikuti dengan nama klien host yang
memiliki alamat lama dan “-Z” diikuti dengan mengisi nama server
yang berwewenang atas klien tersebut. Dilanjutkan dengan pembuatan
file-file sementara pada direktori /var/tmp/EDIT dan pemanggilan
program berikutnya. Berikut gambar flowchart dari program named6
untuk ubah alamat dan prefix server maupun klien host:
START
case $isi1=”edit”
$isi1=edit, $isi2=-ip6/prefix, $isi3=”ip/prefix”, $isi4=-Nip6/prefix, $isi5=”ip/prefix baru”, $isi6=-DNS
or -H, $isi7=”server or host”, $isi8 =-Z, $isi9=”ZonaServer”
no
yes
no
if [[ $isi2 == help || $isi2 == "" ]]
elif[[ $isi2 == -DNS && $isi3 !=...
&& $isi4 == -NN &&..
elif [[ $isi2 == -H && $isi3 !=
&& $isi4 == -NN && $isi5 !=&&$isi6 == -Z && $isi7 != ]]
yes
no
no
elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix &&
$isi5 != "" && $isi6 = -H$isi7 !=””, $isi8=-Z,
$isi9 != “”
no
no
elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix &&
$isi5 != "" && $isi6= -DNS$isi7 != “”
else echo "Perhatikan Format Penulisan !!!" $helpE
no
else
if [[ -f $Var/f-"$isi7" &&
-d $TMPE ]]
no
yes
elif[[ -f $Var/f-"$isi7" ]]
yes
if $ipLama == $ipL &&
$pfxLama == $pfxL && $pfxBaru != $pfxLama ]]
else
echo "Nama Domain : $isi7 Tidak Ditemukan !!!";
echo "$isi3" > $TMPE/ipL.; ... sed 's/[/]/ /' $TMPE/ipL > …...
…..ipL=`awk '..’ $TMPVar/$nama`
echo "$isi3" > $TMPE/ipL.; ... sed 's/[/]/ /' $TMPE/ipL > …...
…..ipL=`awk '….’ $TMPVar/$nama`
no
else
if [[ -f $Var/f-"$isi9" &&
-d $TMPE ]]
no
yes
elif[[ -f $Var/f-"$isi9" ]]
yes
if [[ $namaH == $cekH &&
$ipLama == $ipL && $pfxLama == $pfxL && $pfxBaru !=
$pfxLama ]]
else
echo; echo "Nama Domain6 : $isi9 Tidak Ditemukan !!!";
echo "$isi3" > $TMPE/ipL.; ... sed 's/[/]/ /' $TMPE/ipL > …...
….. cekH=`awk '..' $TMPVar/$namaD`
mkdir $TMPE echo "$isi3" > $TMPE/ipL.; ... sed 's/[/]/ /' $TMPE/ipL > …...
….. cekH=`awk '..' $TMPVar/$namaD`
END
yes
noyes
yes
no
rm $TMPE/ipL; rm $TMPE/ipLku; ..…../cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama
echo "Alamat IPv6 atauPrefix Lama Tidak Sesuai !!!";
….
rm $TMPE/ipL;..$TMPE/ipLku; ..…../cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama
echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!";echo "Alamat IPv6 atau Prefix Baru == IPv6 atau Prefix Lama !!!";
Gambar 3.13.Flowchart program named6 ubah alamat/prefix
74
b. cekIPB.pl, program ini memanfaatkan bahasa pemrograman Perl dan
memiliki proses kerja yang sama dengan program cekIP.pl pada proses
penambahan server ataupun klien host yaitu mengecek format alamat
dan prefix baru. Kemudian dilanjutkan pada proses program
berikutnya. Gambar flowchart program cekIPB.pl sama dengan gambar
flowchart cekIP.pl gambar flowchart reSRV.pl pada gambar 3.3,
perbedaan yang dimiliki terdapat pada penempatan direktori file-file
sementara dan penamaan filenya.
c. ReIPL.pl, program ini memanfaatkan bahasa pemrograman Perl dan
memiliki proses yang sama dengan program reSRV.pl atau reHST.pl
yang berfungsi untuk membalik alamat lama menurut prefix lama yang
dimiliki. Kemudian dilanjutkan dengan membuat file-file sementara
dan memproses program selanjutnya. Gambar flowchart program
reIPL.pl sama dengan gambar flowchart reSRV.pl pada gambar 3.5,
perbedaan yang dimiliki terdapat pada penempatan direktori file-file
sementara dan penamaan filenya.
d. ReIPB.pl, program ini memanfaatkan bahasa pemrograman Perl dan
memiliki proses kerja yang sama dengan program sebelumnya yaitu
ReIPL.pl. Kemudian dilanjutkan pada pembuatan file-file sementara
yang akan diporses pada program selanjutnya. Gambar flowchart
program reIPB.pl sama dengan gambar flowchart reSRV.pl gambar
flowchart reSRV.pl pada gambar 3.5, perbedaan yang dimiliki terdapat
pada penempatan direktori file-file sementara dan penamaan filenya.
75
e. EditIP6.sh, program ini memanfaatkan bahasa pemrograman shell
script yang berfungsi untuk mencari dan mengubah alamat ataupun
prefix dari file-file sementarta yang telah ditentukan, baik file untuk
server maupun klien host. Berikut gambar flowchart dari program
EditIP6.sh:
START
TMPE=/var/tmp/EDIT; TMPVar=/var/tmpVar=/var/named; Etc=/etc;
if [[ -f $TMPE/HOST ]] else
yes
no
END
ipL=`awk '{print $1}' $TMPE/ipLama`; blkgL=`awk '{print $1}' $TMPE/belakangLama` ipB=`awk '{print $1}' $TMPE/ipBaru ; blkgB=`awk '{print $1}' $TMPE/belakangBaru` pfxL=`awk '{print $1}' $TMPE/pfxLama`; pfxB=`awk '{print $1}' $TMPE/pfxBaru` host=`awk '{print $1}' $TMPE/HOST`; namaZ=`awk '{print $1}' $TMPE/ZONA`
ipL=`awk '{print $1}' $TMPE/ipLama`; dpnL=`awk '{print $1}' $TMPE/depanLama` ipB=`awk '{print $1}' $TMPE/ipBaru`; dpnB=`awk '{print $1}' $TMPE/depanBaru pfxL=`awk '{print $1}' $TMPE/pfxLama`; pfxB=`awk '{print $1}' $TMPE/pfxBaru` blkgL=`awk '{print $1}' $TMPE/belakangLama` blkgB=`awk '{print $1}' $TMPE/belakangBaru`
cariH=`awk '/'$host'/{print NR}' $Var/f-$namaZ`lok=$cariH; sed $lok"s/$ipL/$ipB/" $Var/f-"$namaZ" > $TMPE/f-"$namaZ"
…….…….
rm $TMPE/f-"$namaZ"; rm $TMPE/HOST; rm $TMPE/ZONA; rm $TMPE/ipLama;
…….rm $TMPE/"$namaZ"
root=`awk '/NS/{print NR}' $Var/named.root6`let x=$root+1 sed $x"s/$ipL/$ipB/" $Var/named.root6 > $TMPE/named.root6root6=`awk '/NS/{print NR}' $TMPE/named.root6`let y=$root6+2sed $y"s/$ipL/$ipB/" $TMPE/named.root6 > $Var/named.root6; rm $TMPE/named.root6
…….…….
rm $TMPE/DNS; rm $TMPE/ipLama; rm $TMPE/depanLama; …….
rm $TMPE/pfxBaru; rm $TMPE/"$namaD"
Gambar 3.14.Flowchart program EditIP6.sh ubah alamat/prefix
Proses menghapus (delete) sebuah nama server atau klien host, maka jalan
program yang berkaitan adalah:
1. Hapus (delete) nama server atau klien host, proses program-program yang
berkaitan adalah
76
a. named6 delete, program ini berfungsi untuk mengecek nama file
server dan proses pengkondisian bentuk perintah input untuk
penghapusan berdasarkan nama server atau klien host yang telah
ditetapkan yaitu “-DNS” untuk menghapus nama server, sedangkan “-
H” dan“-Z” akan menghapus sebuah nama klien host pada zona server
yang berwewenang. Kemudian akan dilanjutkan pada proses program
selanjutnya. Berikut gambar flowchart dari program named6 untuk
menghapus nama server atau klien host:
START
case $isi1=”delete”
$isi1=delete, $isi2=-DNS or -H, $isi3=”nama server or host”, $isi4=-Z, $isi5= ”zonaserver”
END
yes
no
if [[ $isi 2 == help || $isi2 == "" ]]
elif[[ $isi2 == "-DNS" && $isi3 != "" ]]
yes
no
no
no
no
elif [[ $isi2 == "-H" && $isi3 != "" &&
$isi4 == -Z && $isi 5 != "" ]]
elseecho "File Server belum di buat !!!"; . $helpD
no
else
if [[ -d $TMPE ]]
no
yes
elif [[ -f $Var/f-"$isi3" ]]
yes
if [[ -d $TMPE && -f $Var/f-"$isi5" && "$isi3" ==
"$cekH" ]]
yes
echo "$isi3" > $TMPVar/DNS ./delete6.sh
if [[ -f $Var/f-"$isi3" ]] else
echo "Nama Domain Server: $isi3 Tidak Ditemukan !!!";
mkdir $TMPE; echo "$isi3" > $TMPVar/DNS ./delete6.sh
echo "Nama Domain Server: $isi3 Tidak Ditemukan !!!";
no
cekH=`awk '/'$isi3'/{print $1}' $TMPVar/$isi5`
elif [[ -f $Var/f-"$isi5" && "$isi3" == "$cekH" ]]
else
echo "Nama Host: $isi3 atau Nama Domain: $isi5 Tidak Ditemukan !!!";
echo "$isi3" > $TMPVar/host; echo "$isi5" > $TMPVar/zona ./delete6.sh
mkdir $TMPE; echo "$isi 3" > $TMPVar/host; echo "$isi 5" > $TMPVar/zona ./delete6.sh
yes
yes
no
yes
Gambar 3.15.Flowchart program named6 hapus server atau host
77
b. delete6.sh, progam ini memanfaatkan bahasa pemrograman shell script
yang berfungsi untuk mencari nama file server dan menghapus isi file-
file dengan server yang telah ditentukan, jika perintah penghapusan
yang akan dilakukan untuk server. Sedangkan untuk penghapusan
untuk klien host akan dilakukan dengan mencari file-file server yang
dituju dan dilanjutkan dengan menghapus nama klien host yang telah
dipilih pada file-file server yang telah ditentukan. Berikut gambar
flowchart dari program delete6.sh:
START
Var=/var/named; Etc=/etcTMPE=/var/tmp/EDIT; TMPVar=/var/tmp
if [[ -f $TMPVar/DNS ]]
else
host=`awk '{print $1}' $TMPVar/host`; zona=`awk '{print $1}' $TMPVar/zona`
delH=`awk '/'$host'/{print NR}' $Var/f-$zona`; let H1=$delH; let H2=$H1+2sed "$H1,$H2"d $Var/f-"$zona" > $TMPE/f-"$zona"; mv $TMPE/f-"$zona" $Var
…. ……. …
rm $TMPVar/host; rm $TMPVar/zona
yes
no
END
domain=`awk '{print $1}' $TMPVar/DNS`delN=`awk '/'$domain'/{print NR}' $Etc/named.conf`; let N1=$delN; let N2=$N1+17sed "$N1,$N2"d $Etc/named.conf > $TMPE/named.conf;mv $TMPE/named.conf $Etc
…. ...…. ...
rm $Var/f-"$domain"; rm $Var/rev."$domain".arpa;rm $Var/rev."$domain".int rm $TMPVar/"$domain"; rm $TMPVar/DNS
Gambar 3.16.Flowchart program delete6.sh hapus server atau host
Proses menampilkan (view) sebuah daftar nama, daftar file server forward
atau reverse dan file zona. Proses ini cukup dilakukan dari program named6 tanpa
78
memanfaatkan program-program lainnya dengan perintah pengkondisian
“named6 view”, “-Zone” akan menampilkan zona-zona yang terdapat dari file
named.conf. Untuk “named6 view”, “-File6” diikuti “Forward atau Reverse” akan
menampilkan file-file forward atau reverse berdasarkan nama server yang telah
dipilih pada direktori /var/named. Sedangkan “named6 view”, “-List6” akan
menampilkan file server dari direktori /var/tmp secara interaktif untuk
mempermudah saat akan melakukan proses pengubahan (edit) atau penghapusan
(delete). Berikut gambar flowchart dari program named6 untuk view:
$isi1= view, $isi2=Zone or -File6 or -List6, $isi3, $isi4
elif $isi2=Zone
elif$isi2 = -File6 &&
$isi3 != “” && $isi4 !=””
elif$isi2 = -List6 &&
$isi3 != ””
cek=`awk '$1 != 0 {print NR}' $Etc/named.conf`
awk 'NR == 13, NR == $cek {print}' $Etc/named.conf |more
tail -n 1000 $Var/rev."$isi3".arpa |
more
else $helpV
yesyes
yes
no
nono
if$isi2 == "" || $isi2
== "help"$helpV
no
Start
if [[ $isi4 = Forward ]]
if [[ -f $Var/f-"$isi3" ]]
echo "File Zona Forward DNS Tidak
Ditemukan !!!";
elif [[ $isi4 = Reverse ]]
if [[ -f $Var/rev."$isi3".arpa ]]
tail -n 1000 $Var/rev."$isi3".arpa |
more
echo "File Zona Reverse DNS Tidak
Ditemukan !!!";
else
else
yes
End
yes
yesno
no
if [[ -f $TMPVar/"$isi3" ]]
awk '/'$isi3'/{print "\t "$1,"\t\t" $2"/"$3}' $TMPVar/$isi3 cek=`awk '$1 != 0 {print NR}' $TMPVar/$isi3`
…....…....
Gambar 3.17.Flowchart program named6 untuk tampil server dan host
79
nam
ed6
Edi
tNam
a6.s
h
end
$isi
1=ed
it $i
si2
=-D
NS
$isi
3, $
isi5
or
$isi
7
ffwdS
RV
.sh
reS
RV
.pl
reS
RV
.sh
nam
ed-
reso
lv.s
h
$isi
1=ad
d$i
si2
=-D
NS
$ip,
$pf
x, $
isi3
ffwdH
ST.
sh
reH
ST.
pl
reH
ST.
sh
$isi
1=ad
d$i
si2
= -H
$ip,
$pf
x, $
isi3
$isi
1=ed
it$i
si2
= -ip
6/pr
efix
$ipL
ama,
$pf
xLam
a $i
pBar
u $p
fxB
aru
cekI
PB
.pl
ReI
PL.
pl
ReI
PB
.pl
Edi
tIP6.
sh
$isi
1=de
lete
$isi
2=-D
NS
or -
H$i
si3,
$is
i5
$isi
1=vi
ew,
$isi
2= Z
one
or -F
ile6
or -L
ist6
$isi
3, $
isi4
dele
te6.
sh
elif
$isi
2=Zo
ne
fung
si u
bah(
)fu
ngsi
tam
bah(
)
elif
$isi
2 =
-File
6 &
&
$isi
3 !=
“” &
&
$isi
4 !=
””
elif
$isi
2 =
-Lis
t6 &
&
$isi
3 !=
””
cek=
`aw
k '$
1 !=
0
{prin
t NR
}' $E
tc/
nam
ed.c
onf
a
wk
'NR
==
13,
NR
==
$cek
{prin
t}'
$E
tc/n
amed
.con
f |m
ore
tail
-n 1
000
$V
ar/f-
"$is
i3"
| mo
rea
tau
tail
-n 1
000
$Var
/re
v."$
isi3
".ar
pa |
mor
e
aw
k '/'
$is
i3'/{
prin
t "\t
"$1,
"\t\t
" $2
"/"$
3}'
$TM
PV
ar/$
isi3
cek=
`aw
k '$
1 !=
0
{pri
nt N
R}'
$TM
PV
ar/
$is
i3`..
.
else
$hel
pV
fung
si h
apus
()
fung
si ta
mpi
l()
yes
yes
yes
yes
no no no$isi
2 ==
"" ||
$is
i2
== "
help
"$h
elpV
no
cekI
P.p
l
Gam
bar 3
.18.
Flo
wch
art P
rose
s Um
um P
rogr
am n
amed
6
80
3.2. DESAIN
Tahap selanjutnya dari penelitian ini adalah perancangan program / tools
yang akan digunakan pada mesin. Perancangan ini meliputi perancangan
perangkat keras (hardware) dan perangkat lunak (software) yang akan dipakai.
3.2.1. Konfigurasi Jaringan
Berikut bentuk konfigurasi jaringan lokal untuk membangun sebuah server
DNS yang dapat menkonversi alamat IPv6 ke dalam nama ataupun sebaliknya,
dapat melakukan pencarian dalam sebuah zona (wilayah) berdasarkan nama
ataupun alamat IPv6.
Berikut gambar penempatan sebuah dan lingkup kerja server DNS dalam
sebuah jaringan lokal IPv6 yang memiliki dua buah klien memakai IPv6, dapat
dilihat seperti berikut:
Lingkup Kerja
Server DNS dalam Jaringan Lokal IPv6
internet
Client DNSIPv6
DNS ServerIPv6
Client DNSIPv6
hub/switch
Router IPv4/IPv6
Gambar 3.19.Implementasi Server DNS dengan IPv6 dalam Jaringan
81
3.2.2. Konfigurasi Hardware dan Software
Dalam penelitian ini perancangan dan pembuatan tools, memerlukan
perangkat bantu. Pernagkat batnu teresebut adalah berupa perangkat keras
(hardware) dan perangkat lunak (software). Perangkat keras yang digunakan
adalah Personal Computer (PC) yang digunakan sebagai klien ataupun server
DNS.
PC yang digunakan sebagai klien adalah PC dengan spesifikasi perangkat
keras sembarang yang lebih tinggi dari komputer server dan memungkinkan
protokol IPv6 dapat terinstall, dengan memiliki satu buah NIC (Network Interface
Card) atau kartu jaringan. Sedangkan untuk server DNS akan menggunakan PC
dengan spesifikasi perangkat keras yang lebih rendah dari klien-kliennya dan
memiliki satu buah kartu jaringan.
Hal ini dikarenakan ssstem operasi serta program yang akan digunakan
oleh server DNS berbasis text-mode atau non-GUI, sehingga perangkat keras yang
diperlukan tidak terlalu tinggi dan dapat menghemat biaya. Berbeda dengan
perangkat keras klien yang lebih variatif dan lebih sering digunakan untuk
keperluan kantor, sehingga diperlukan spesifikasi yang mampu menyediakan
program-program keperluan kantor seperti program office, AutoCad, Visio Pro
dan program lainnya.
Rekomendasi perangkat keras yang digunakan untuk server DNS
diharapkan memiliki spesifikasi minimal :
Prosesor : Intel Pentium II 350MHz
Hardisk : 5Gbyte atau lebih
82
RAM : 128 Mbyte atau lebih
NIC : Realtek8029(AS) atau Realtek8139 family
Rekomendasi perangkat keras yang digunakan untuk klien-klien
diharapkan memiliki spesifikasi minimal :
Prosesor : Intel Pentium III 750MHz atau lebih tinggi
Hardisk : 5 Gbyte atau lebih
RAM : 128 Mbyte atau lebih
NIC : Realtek8029(AS) atau Realtek8139 family
Konfigurasi perangkat lunak yang dipakai dalam pembuatan tools ini
adalah berupa :
Linux Fedora Core 2 berbasis text-mode sebagai sistem operasi yang
digunakan pada PC server DNS.
Microsoft Windows XP Professional SP1 dan Linux Fedora Core 2
digunakan sebagai sistem operasi yang digunakan oleh klien server DNS.
3.2.3. Bentuk Umum Program named6
Tools yang akan dibuat adalah tools yang memanfaatkan program named
sebagai servis utama untuk membuat sebuah komputer server DNS. Maka tools
yang akan dibuat akan merujuk pada bentuk file-file utama yang dibutuhkan
dalam format konversi IPv6. Karena tools ini dapat digunakan untuk membuat
dan mengkonfigurasi file-file server DNS IPv6 dan memanfaatkan servis dari
program named, maka tools ini akan disebut sebagai program named6.
83
Karena program named6 ini akan membantu fungsi program named yang
berjalan pada sistem operasi Linux non-GUI dalam konfigurasi pembuatan file-
file utama dengan alamat IPv6. Sehingga bentuk umum program named6 ini akan
berbeda dari program named yang ada, baik dalam perintah, options dan objek
yang dimiliki.program named.
Dengan mempertimbangkan bentuk dan format file-file utama yang
mendukung IPv6, struktur penempatan file-file dan servis program named. Maka
bentuk option dan objek yang dimiliki oleh program named6 yang akan dibuat
adalah sebagai berikut :
named6 option := { command | help } := { add | edit | delete | view } command := { start | restart | stop | status | help }
OPTION yang dimiliki oleh perintah named6 adalah pilihan yang tepat
digunakan tools dalam kecepatan dan efisiensi pemakaian.
3.2.3.1. named6 start
Perintah ini digunakan untuk menjalankan servis program named untuk
konversi nama ke alamat maupun alamat ke nama. Dimana, perintah ini
sebenarnya hanya menempel dan merpsingkat perintah menjalakan servis Linux,
yaitu service named start. Maka bentuk perintah tersebut akan menjadi seperti
berikut:
named6 start
84
3.2.3.2. named6 restart
Perintah ini digunakan untuk mengulang perintah menjalakan servis dari
keadaan status berhenti ke keadaan berjalan atau sebaliknya, apabila terjadi
perubahan pada konfigurasi atau file-file utama DNS. Maka bentuk perintah
sebagai berikut :
named6 restart 3.2.3.3. named6 stop
Perintah ini digunakan untuk menhentikan servis program named dari
status berjalan menjadi status berhenti. Maka bentuk perintah adalah sebagai
berikut:
named6 restart 3.2.3.4. named6 status
Perintah ini digunakan untuk mengetahui keadaan status servis program
named, apakah status servis sedanag berjalan atau sedang berhenti. Maka bentuk
perintah adalah sebagai berikut:
named6 status
3.2.3.5. named6 help
Perintah ini digunakan untuk menampilkan pesan bantuan dan dapat
berfungsi juga bila terjadi kesalahan input atau perintah. Maka bentuk perintah
umum untuk memanggil perintah bantuan adalah sebagai berikut:
85
named6 help
3.2.3.6. named6 add
Perintah named6 add ini digunakan untuk membuat file-file utama yang
dibutuhkan untuk mengaktifkan servis DNS pada Linux. Dengan pertimbangan
cara kerja sebuah DNS adalah client-server, perintah ini akan dipecah menjadi
dua bentuk perintah. Perintah named6 add pertama akan digunakan untuk
membuat sebuah nama server domain dan alamat IPv6 server / prefix. Bagian
perintah berikutnya untuk menambahkan nama sebuah host yang terdapat pada
sebuah domain. Perintah yang dapat digunakan pada named6 add adalah sebagai
berikut :
a. named6 add [–DNS] [–ip6/prefix]
named6 add –DNS mobs6.edu –ip6 2002:200:abcd:10a/64
b. named6 add [–H[ost]] [–ip6/prefix] [–Z[one]]
named6 add –H www –ip6 2002:200:abcd:10a/64 –Z mobs6.edu
3.2.3.7. named6 edit
Perintah ini digunakan untuk mengedit nama dan alamat IPv6 untuk server
atau host pada file-file utama. Sehingga perintah named6 edit ini akan dibagi
menjadi empat bentuk perintah. Perintah pertama akan digunakan perintah untuk
mengganti nama server, perintah kedua digunakan untuk mengganti nama host,
perintah ketiga digunakan untuk menggantikan alamat IPv6/Prefix server dan
86
perintah keempat digunakan untuk menggantikan alamat IPv6/Prefix host.
Perintah yang dapat digunakan pada named6 edit adalah sebagai berikut :
a. named6 edit [–DNS] [–NN NewName]
named6 edit –DNS mobs6.edu –NN mobs6.co.id
b. named6 edit [–H[ost]] [–NN NewName] [–Z[ona]]
named6 edit –H www –NN ftp –Z mobs6.edu
c. named6 edit [–ip6/prefix] [–Nip6/prefix] [–DNS]
named6 edit –ip6 2002::10a/64 –Nip6/prefix f303::10/96 –DNS mobs6.edu
d. named6 edit [–ip6/prefix] [–Nip6/prefix] [–H[ost]] [–Z[one]]
named6 edit –ip6/prefix 2002::10a/64 –Nip6/prefix f303::10/96 –H www –Z mobs6.edu 3.2.3.8. named6 delete
Perintah ini digunakan untuk menghapus file-file server atau nama host
dengan meggunakan kata kunci nama server atau host. Dalam perintah named6
delete ini dibagi menjadi dua bagian Perintah yang dapat digunakan pada named6
delete adalah sebagai berikut :
a. named6 delete [–DNS]
named6 delete –DNS mobs6.edu
b. named6 delete [–H[ost]] [–Z[ona]]
named6 delete –H www –Z mobs6.edu
87
3.2.3.9. named6 view
Perintah ini digunakan untuk menampilkan file forward atau reverse, file
named.conf yang berisikan zona, dan file server yang berisikan alamat IPv6 dan
prefix untuk server dan klien. Dalam perintah named6 view dibagi menjadi tiga
bentuk perintah. Perintah yang dapat digunakan pada named6 delete adalah
sebagai berikut :
a. named6 view [Zone]
named6 view Zone
b . named6 view [–File6] { Forward | Reverse }
named6 view –File6 mobs6.edu Forward
c. named6 view [–List6]
named6 view –List6 mobs6.edu
BAB IV
IMPLEMENTASI PROGRAM
Implementasi merupakan tahap pengkodean, perancangan dan penerapan
pada lingkungan yang tepat. Pada bab sebelumnya telah dijelaskan bagaimana
perancangan program untuk membentuk format file-file utama dengan IPv6 yang
dibutuhkan server DNS secara otomatis. Pada bab ini dijelaskan mengenai
implementasi beserta analisa program.
4.1. Lingkungan Implementasi
Pada tahap implementasi, pengembang mengetahui dan mendefinisikan
lingkungan yang hendak dipakai. Lingkungan-lingkungan yang mendukung antara
lain adalah lingkungan perangkat keras dan perangkat lunak.
4.1.1. Lingkungan Perangkat Lunak
Perangkat lunak yang dipakai didalam implementasi ini adalah sebagai
berikut:
a. Sistem Operasi Server : Linux Fedora Core 2
b. Sistem Operasi klien : Linux Fedora Core 2 dan Microsoft
Windows XP Professional SP1
c. Bahasa pemrograman : Bash dan Perl
88
BAB V
ANALISA HASIL
5.1. Analisa Hasil Perangkat Lunak
Hasil proses program named6 ini dilakukan pada lapisan aplikasi melalui
lapisan network, dimana proses program named6 yang terjadi adalah melakukan
konversi alamat IPv6 ke nama maupun sebaliknya yang dilakukan dari lapisan
aplikasi. Sehingga komputer-komputer klien yang berada dalam wewenang server
DNS yang dibentuk dapat melakukan komunikasi dengan perintah ping6 dengan
nama yang menggunakan protokol alamat IPv6 dan menerima jawaban dari server
DNS.
Proses program named6 sendiri akan melalui beberapa tahapan untuk
mencapai hasil yang diinginkan, antara lain:
• Komputer yang disediakan untuk dijadikan server DNS dan klien-
kliennya telah terkonfigurasi dengan alamat IPv6 statis dan telah dapat
melakukan komunikasi dengan perintah ping6.
• Administrator menjalankan program named6 serta memberikan nama
server DNS dan alamat IPv6/prefix komputer sesuai dengan alamat
IPv6 statis yang diberikan pada kartu jaringan komputer server, agar
dapat membuat file-file utama berbasis alamat IPv6 pada sebuah
komputer yang akan difungsikan sebagai server DNS.
• Administrator memberikan nama dan alamat IPv6/prefix yang dimiliki
klien host yang diarahkan ke nama server DNS dengan program
140
141
named6 agar klien-klien yang ada dapat dikenali pada zona (wilayah)
domain server yang berwewenang atas penamaan yang ada
• Administrator menjalakan servis program named6 dengan perintah
“named6 start” dan mendapatkan pesan “ok” yang berarti servis
berjalan tanpa eror.
• Administrator melakukan beberapa perintah umum dari computer
server DNS seperti ping6, dig dan host untuk melakukan pengecekan
server DNS telah dapat menjawab semua query dan servis berjalan
dengan baik dalam jaringan.
Selain pengecekan dari komputer server yang telah berjalan baik, tahap
selanjutnya yang harus dilakukan adalah pengecekan dari komputer klien:
• Administrator melakukan pengecekan penggunaan nama tersebut
dengan mennjalankan servis httpd pada komputer server DNS, untuk
memanfaatkan server DNS sebagai sebuah Web server untuk
melanjutkan pengecekan dengan browser.
• Administrator juga melakukan pengecekan dari klien dengan perintah
ping6, dig, host dan pemanggilan nama dari browser klien. Untuk
mengetahui server DNS juga telah dapat melayani port 80 untuk
sebuah layanan web.
Setelah pengecekan telah berjalan baik, program named6 juga memiliki
fasilitas untuk mengedit nama atau alamat IPv6/prefix untuk sebuah server
142
maupun klien dengan perintah “named6 edit”. Disarankan sebelum menggunakan
fasilitas edit, sebaiknya servis yang sedang berjalan dihentikan terlebih dahulu.
Apabila pengeditan telah selesai, maka servis dapat dijalankan dan dilakukan
pengecekan kembali dari komputer server ataupun klien. Hal ini dilakukan untuk
menghindari terjadinya error (kesalahan).
Salah satu fasilitas yang dimiliki dari program named6 ini adalah
menghapus (delete) nama klien atau server dengan menggunakan perintah
“named6 delete”. Untuk penggunaan fasilitas ini sebaiknya servis yang sedang
berjalan dihentikan terlebih dahulu. Hal ini dilakukan untuk menghindari
terjadinya kesalahan.
Fasilitas berikutnya yang dimiliki oleh program named6 ini adalah fasilitas
untuk menampilkan (view) dengan perintah “named6 view”, mengingat program
named6 yang ada berjalan pada sistem operasi Linux yang tidak menggunakan
Graphical User Interface. Fasilitas ini dapat menampilkan isi dari zona, file dan
daftar nama server berserta klien yang dimiliki dengan output berupa teks dan
tampilan interaktif.
5.2. Analisa Tools Pengembang
Dalam pembuatan program named6, penulis menggunakan dua model
bahasa pemrograman, yaitu pemrograman Bash dan Perl. Pemilihan kedua bahasa
tersebut dikarenakan, sebagai berikut:
1. Dengan pemanfaatan sistem operasi Linux berbasis text-mode, maka
masalah untuk jumlah inputan antara kedua bahasa pemrograman memiliki
143
perbedaan, sehingga penggunaan bahasa pemrograman shell script yang
dapat menampung inputan lebih banyak akan dimanfaatkan sebagai proses
program pertama yaitu program named6.
2. Pemrograman bash memiliki perintah-perintah yang mudah dimengerti,
algoritma yang dimiliki sangat sederhana dan dapat dikembangkan untuk
menambah fasilitas–fasilitas program bawaan yang terdapat dari Linux.
3. Bash memiliki beberapa model perintah untuk seleksi teks (regular
expression), dimana masing-masing perintah penyeleksi tersebut memiliki
kemampuan yang berbeda-beda.
4. Perl merupakan program yang dikembangkan untuk dapat mendukung
bentuk-bentuk perintah yang dimiliki pada bash dan sintak-sintak yang
dimiliki Perl menyerupai bahasa pemrograman C++, sehingga untuk
memadukan kedua model bahasa pemrograman tersebut tidak rumit.
5. Perl berfungsi untuk mengatasi keterbatasan perintah-perintah bash. Sintak
dan algoritma yang dimiliki perl mudah dipahami.
6. Perl memiliki serangkaian perintah-perintah yang sangat berguna bila
digunakan pada sistem operasi Linux.
7. Kedua bahasa tersebut memiliki kemampuan untuk melakukan
pencocokan pola atau regular expresion (REGEX) dan edua bahasa
pemrograman tersebut berjalan di sistem operasi Linux dan terdapat di
dalam semua distro Linux.
144
5.3. Analisa File Utama dengan Format IPv6
File-file yang dibentuk untuk mendukung format IPv6 pada program
named berupa teks, seperti file forward, reverse, named.root6 dan lainnya.
Sehingga ukuran file-file tersebut tidak terlalu besar dan dapat mengurangi
penggunaan kapasitas harddisk. Demikian juga file-file sistem yang
dimanfaatkankan seperti file named.conf, resolv.conf dan bindv6only.
5.4. Kelebihan dan Kekurangan
5.4.1. Kelebihan Program
• Program named6 ini digunakan sebagai program tambahan atau program
bantuan untuk program named dari BIND yang telah ada pada saat sistem
operasi Linux terinstall, baik dengan text-mode atau GUI (Grapichal User
Interface).
• Dengan beberapa bentuk perintah dan inputan yang sederhana, program
named6 dapat membuat file-file utama yang dibutuhkan secara otomatis
dalam format IPv6, sehingga program named yang ada dapat
mengaktifkan sebuah komputer server DNS berbasis protokol IPv6 dengan
cepat.
• Dijalankan pada sistem operasi Linux berbasis text-mode, sehingga
kebutuhan hardware yang diperlukan tidak terlalu besar dan dapat
mengkompres biaya.
• Program ini masih dapat dikembangkan untuk sebuah server DNS berbasis
IPv6 dengan aplikasi model GUI (Graphical User Interface) atau berbasis
145
Web, karena program named6 saat ini masih dijalankan dalam sistem
operasi Linux berbasis text-mode.
5.4.2. Kekurangan Program
• Program ini dibuat pada masa transsisi sehingga program ini masih banyak
sekali kekurangan yang dimiliki, dikarenakan status penerapan protokol
IPv6 yang sampai saat ini belum ada batasan perkembangannya. Bila suatu
waktu terjadi perubahan dari program BIND-named maka program
named6 yang dibuat dengan memanfaatkan servis program BIND-named
juga harus dilakukan perubahan sesuai dengan perubahan yang terjadi
pada servis program BIND-named tersebut.
• Proses dan kode program masih terlalu panjang (kurang sederhana) untuk
digunakan, karena penggunaan dua bahasa pemrograman dan penggunaan
sistem operasi berbasis text-mode.
• Penggunaan prefix yang masih dibatasi.
• Konversi pencarian dari alamat ke nama dengan format bitsring tidak
sertakan, karena belum adanya kepastian penerapan yang akan dilakukan
secara global.
• Implementasi masih dilakukan dalam lingkup jaringan lokal.
• Implementasi belum dapat dilakukan dengan mekanisme yang
menghubungkan dua buah jaringan IPv6 melalui jaringan IPv4
(tunneling). Sehingga belum dapat melakukan koneksi keluar (internet)
dengan backbone6.
89
4.1.2. Lingkungan Perangkat Keras
Perangkat keras yang mendukung dalam implementasi ini dibagi menjadi
dua bagian, yaitu perangkat keras untuk server DNS dan perangkat keras untuk
client. Adapun perangkat yang digunakan sebagai server DNS adalah sebagai
berikut:
a. Komputer Pentium II 350MHz atau lebih tinggi.
b. Memori minimal 128 MB
c. Hardisk minimal 2.5 GB.
d. VGA card 16 MB
e. NIC satu buah atau lebih
f. Alat input berupa keyboard
g. Alat output berupa monitor
Sedangkan kebutuhan perangkat keras yang digunakan untuk client adalah
sebagai berikut:
a. Komputer Pentium III 750MHz atau lebih tinggi.
b. Memori minimal 128 MB
c. Hardisk minimal 5 GB atau lebih.
d. VGA card 32 MB atau lebih
e. NIC satu buah
f. Alat input berupa keyboard
g. Alat output berupa monitor dengan resolusi 800 x 600 atau lebih.
90
4.2. Karakteristik Pengguna
Sistem ini hanya dituijukan kepada administrator, sehingga hanya
administrator saja yang dapat menggunakan program ini. Adapun syarat-syarat
yang harus dimiliki oleh administrator yaitu:
a. Memahami konsep jaringan secara umum
b. Menguasai jaringan dengan protokol IPv4 maupun IPv6
c. Menguasai konsep kerja aplikasi BIND yang berada pada Linux
d. Memahami format penulisan dan model pencarian yang digunakan
program named dengan IPv6
4.3. Implementasi Program named6
Dalam implementasi program ini akan dijelaskan kegunaan dari masing-
masing fungsi dan alur jalan program ke program untuk membuat file-file utama
yang dibutuhkan sebuah server DNS. Dalam bab perancangan telah disebutkan
bahwa program ini memanfaatkan servis dari program named default (bawaan)
dalam sistem operasi Linux, maka program ini hanya merupakan program bantu
atau tambahan untuk program named yang telah ada. Karena protokol yang
digunakan berbasis protokol IPv6, maka program ini disebut dengan program
named6.
4.3.1. Inisialisasi Lokasi Direktori
Untuk menentukan lokasi direktori, maka inisialisasi alamat dan nama
dibutuhkan untuk mempermudah dan mempersingkat penulisan lokasi
91
Etc=/etc; Var=/var/named TMPS=/var/tmp/SERVER; TMPH=/var/tmp/HOST TMPE=/var/tmp/EDIT; TMPVar=/var/tmp
Inisialisasi alamat ini hanya tujukan untuk menentukan dimana proses
program akan dijalankan atau dimana file-file utama akan diletakkan. Semua
seting file dan konfigurasi untuk DNS nantinya akan menunjuk ke arah direktori-
direktori file-file default dari program named yang ada. Semua hasil file yang
dibentuk akan diletakkan pada lokasi Etc dan Var, dimana lokasi Etc menunjuk
pada direktori /etc dan lokasi Var menunjuk pada.direktori /var/named. Sedangkan
untuk semua proses file temporary (sementara) dan direktori akan dialokasikan
pada beberapa lokasi, yaitu TMPVar menunjuk pada direktori /var/tmp, TMPS
menunjuk pada direktori /var/tmp/SERVER, TMPH menunjuk pada direktori
/var/tmp/HOST, TMPE menunjuk pada direktori /var/tmp/EDIT.
4.3.2. Inisialisasi Passing Parameter
Inisialisasi passing parameter digunakan untuk mendefinisikan nama variable isi1
sampai dengan isi9 dari keyboard. Variabel-variabel yang dibuat akan berfungsi
sebagai kondisi input yang telah ditetapkan. Inisialisasi ini akan berguna untuk
tracking error pada saat input variabel ke program.
isi1=$1; isi2=$2; isi3=$3; isi4=$4; isi5=$5 isi6=$6; isi7=$7; isi8=$8; isi9=$9 4.3.3. Proses Utama Program named6
Dalam proses program named6 pertama kali adalah proses dari menu
utama yang akan dilakukan dengan beberapa kondisi pilihan untuk input variabel
92
$isi1 dari keyboard, menggunakan perintah kondisi case. Apabila perintah
terpenuhi maka proses yang akan dilanjutkan adalah mengeksekusi sebuah fungsi
yang telah ditentukan, kemudian akan dilanjutkan ke dalam proses kondisi yang
berada di dalam fungsi-fungsi yang dipilih. Berikut perintah kondisi case yang ada
dalam program named6 :
case $isi1 in add) tambah;; edit) ubah;; delete) hapus;; "view") tampil;; help) bantu;; "") bantu;; start) mulai;; restart) ulang;;
stop) berhenti;; status) stat;; esac
4.3.4. Proses Fungsi bantu dan Variabel help
Fungsi bantu berfungsi untuk memanggil dan menampilkan bantuan
penggunaan perintah program yang terletak pada direktori /etc/dns6/help untuk
setiap option penggunaan named6. Sedangkan untuk variabel help berfungsi untuk
menampilkan bentuk perintah dan sintak-sintak untuk menggunakan program
named6, bila terjadi kesalahan input atau sintak perintah. Berikut adalah variabel-
variabel dan fungsi bantu yang disediakan untuk pemanggilan bantuan yang
dimiliki oleh program named6 :
help=/etc/dns6/help/hlp_bantu6; helpA=/etc/dns6/help/hlp_add helpS=/etc/dns6/help/hlp_addS; helpH=/etc/dns6/help/hlp_addH helpE=/etc/dns6/help/hlp_edit; helpES=/etc/dns6/help/hlp_eSRV helpED=/etc/dns6/help/hlp_editD; helpEH=/etc/dns6/help/hlp_editH helpD=/etc/dns6/help/hlp_del; helpV=/etc/dns6/help/hlp_view
Untuk penggunaan variabel help akan digunakan untuk menangani
kesalahan input atau bentuk sintak untuk variable $isi1 yang hanya dapat
berisikan opsi add, edit, delete, view, start, restart, stop dan status. Perintah
pemilihan dengan kondisi case, sebagai berikut:
93
bantu() { if [[ $isi1 == help || $isi1 == "" ]] then . $help ... else echo "Perhatikan format penulisan !!!" fi }
a. Variabel help dalam fungsi tambah
Dalam fungsi tambah terdapat beberapa variabel help yang berfungsi untuk
menangani beberapa inputan dalam fungsi tambah. Input-input yang
mendapatkan penanganan kesalahan dalam fungsi tambah akan diberikan
variabel-variabel bantu seperti helpA, helpS dan helpH. Berikut letak dan
pemanggilan variabel-variabel help yang diberikan pada potongan program
dalam fungsi tambah :
tambah() { if [[ $isi2 == help || $isi2 == "" ]] then $helpA elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" ]] ... ... elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" && $isi6 = -Z && $isi7 != "" ]] ... ... else echo; echo "Perhatikan Format Penulisan !!!"; echo; $helpS; $helpH exit 0 fi }
b. Variabel help dalam fungsi ubah
Dalam fungsi ubah terdapat beberapa variabel help yang memiliki fungsi
untuk menangani beberapa inputan dalam fungsi ubah. Input-input perintah
yang tidak sesuai dengan dengan isi yang telah ditentukan akan diberikan
94
penanganan kesalahan dalam fungsi ubah akan diberikan variabel-variabel
bantu seperti helpE, helpED dan helpEH. Berikut letak dan pemanggilan
variabel-variabel help yang diberikan pada fungsi ubah :
ubah() { if [[ $isi2 == help || $isi2 == "" ]] then $helpE elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -NN && $isi5 != "" ]] then #-------------- EDIT NAMA SERVER if [[ -f $Var/f-"$isi3" && -d $TMPE ]] ... ... else echo; echo "Nama Domain Sever: $isi3, Tidak Ditemukan !!!"; . $helpED exit 0 fi elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -NN && $isi5 != "" && $isi6 == -Z &&
$isi7 != "" ]] then #-------------- EDIT NAMA HOST if [[ -f $Var/f-"$isi7" && -d $TMPE ]] ... ... else echo; echo "File DNS Tidak Ditemukan !!!"; . $helpEH exit 0 fi elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix && $isi5 != "" &&
$isi6 == -DNS && $isi7 != "" ]] then #-------------- EDIT IP SERVER if [[ -f $Var/f-"$isi7" && -d $TMPE ]] ... else echo; echo "Nama Domain : $isi7 Tidak Ditemukan !!!"; $helpED fi elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix && $isi5 != "" &&
$isi6 == -H && $isi7 != "" && $isi8 == -Z && $isi9 != "" ]] then #-------------- EDIT IP HOST if [[ -f $Var/f-"$isi9" && -d $TMPE ]] ... else echo; echo "Nama Domain6 : $isi9 Tidak Ditemukan !!!"; $helpEH fi else echo; echo "Perhatikan Format Penulisan !!!" $helpE echo "Gunakan command:= named6 view untuk cek list Nama & IP";
95
fi }
c. Variabel help dalam fungsi tampil
Dalam fungsi tampil terdapat beberapa variabel help yang berfungsi untuk
menangani beberapa inputan dan sintak perintah dalam fungsi tampil. Input-
input yang mendapatkan penanganan kesalahan dalam fungsi tampil akan
diberikan variabel bantu helpV. Berikut letak dan pemanggilan variabel bantu
yang diberikan pada fungsi tampil :
tampil() { if [[ $isi2 == "" || $isi2 == "help" ]] then . $helpV elif [[ $isi2 == Zone && $isi3 == "" ]] ... elif [[ $isi2 = -File6 && $isi3 != "" && $isi4 != "" ]] ... elif [[ $isi2 = -List6 && $isi3 != "" ]] ... else . $helpV fi }
d. Variabel help dalam fungsi hapus
Dalam fungsi hapus terdapat beberapa variabel help yang berfungsi untuk
menangani beberapa inputan dalam fungsi hapus. Input-input yang
mendapatkan penanganan kesalahan dalam fungsi hapus akan diberikan
variabel bantu . helpD. Berikut letak dan pemanggilan variabel bantu yang
diberikan pada fungsi hapus :
hapus() { if [[ $isi2 == "" || $isi2 == "help" ]] then . $helpD elif [[ $isi2 == -DNS && $isi3 != "" ]]
96
... elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -Z && $isi5 != "" ]] ... else echo; echo "File Server belum di buat !!!"; echo . $helpD fi }
4.4. Proses Tambah Nama Server dan Host
Proses menambah atau membuat file-file utama untuk nama sebuah server
dan klien host DNS yang beralamatkan IPv6 akan dilakukan beberapa proses
program untuk pengecekan nama, format alamat IPv6, prefix dan pembuatan file-
file sementara baik server ataupun klien host. Program yang akan diproses untuk
penambahan server akan meliputi, yaitu program named6, cekIP.pl, ffwdSRV.sh,
reSRV.pl, reSRV.sh dan named-resolv.sh. Sedangkan proses untuk menambahkan
klien host akan meliputi program named6, cekIP.pl, ffwdHST.sh, reHST.pl dan
reHST.sh.
4.4.1. Proses Tambah Server
Fungsi tambah dari program named6 adalah fungsi untuk membuat atau
menambah penulisan untuk file-file server atau klien host dengan alamat IPv6 dan
sistem ke dalam direktori-direktori default (bawaan) yang digunakan oleh
program named pada saat menjalankan servis, yaitu pada direktori /etc, /var/tmp
dan /var/named. Direktori /var/tmp/SERVER akan digunakan untuk menampung
file-file sementara server saat dilakukan penambahan atau pembuatan, sampai
keseluruhan semua proses file dari program-program yang terkait terbuat. Bila
terjadi kesalahan di tengah-tengah proses, maka file-file pada direktori sementara
97
akan langsung terhapus. Pemakaian file sementara ini digunakan sebagai
jembatan dan passing parameter dalam penggunaan 2 model bahasa
pemrograman yaitu bash dan perl.
Proses fungsi tambah ini akan meliputi beberapa proses program yang
akan dilalui agar dapat membuat file-file utama server, yaitu program cekIP.pl,
ffwdSRV.sh, reSRV.pl, reSRV.sh dan named-resolv.sh.
Masing-masing program tersebut akan memiliki fungsi yang berbeda-beda
dalam proses pembuatan file-file utama. Fungsi tambah memiliki model kondisi
input atau sintak tambah yang akan dibedakan menjadi dua jenis model, seperti
berikut:
Kondisi atau sintak menambah server, yaitu: $isi2 == -DNS &&
$isi3!= "" && $isi4 == -ip6/prefix && $isi5 != "".
Kondisi atau sintak menambah host, yaitu: $isi2 == -H && $isi3!=
"" && $isi4 == -ip6/prefix && $isi5 != "" && $isi6 = -Z
&& $isi7 != "", kondisi ini digunakan menambahkan nama host dan
alamat IPv6 ke dalam sebuah zona server yang akan dituju.
Kondisi input diatas akan berfungsi untuk membedakan proses
penambahan atau pembuatan file untuk server dan host, sehingga proses program
yang akan dilalui untuk server dan host pun akan berbeda.
Berikut potongan kode program dari program named6 untuk membuat
atau menambahkan nama server DNS dari fungsi tambah adalah sebagai berikut:
elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" ]] then if [[ -d $TMPS ]] #-----------Tambah Nama Server Baru then …..lanjutan di halaman berikutnya if [[ -f $Var/f-"$isi3" ]]
98
then echo; echo "Nama Domain $isi3 Sudah Ada !!!"; echo else echo "$isi5" > $TMPS/ip; sed 's/[/]/ /' $TMPS/ip > $TMPS/ipku ip=`awk '{print $1}' $TMPS/ipku`; pfx=`awk '{print $2}' $TMPS/ipku`; echo "$isi3" > $TMPS/namaS; echo "$ip" > $TMPS/ipS;
echo "$pfx" > $TMPS/pfxS if [[ $ip != "" && $pfx != "" ]] then echo "$isi3 $ip $pfx" > $TMPVar/"$isi3"; echo "1" > /proc/sys/net/ipv6/bindv6only rm $TMPS/ip; rm $TMPS/ipku ./cekIP.pl $ip $pfx $isi3 exit 0 fi exit 0 fi else [[ -s $Etc/resolv.conf ]] mkdir $TMPS; mv $Etc/named.conf $Etc/named.conf~ echo "$isi5" > $TMPS/ip; sed 's/[/]/ /' $TMPS/ip > $TMPS/ipku ip=`awk '{print $1}' $TMPS/ipku`; pfx=`awk '{print $2}' $TMPS/ipku`; echo "$isi3" > $TMPS/namaS; echo "$ip" > $TMPS/ipS; echo "$pfx" > $TMPS/pfxS echo "1" > /proc/sys/net/ipv6/bindv6only; rm $TMPS/ip; rm $TMPS/ipku ./cekIP.pl $ip $pfx $isi3 exit 0 fi
Dari potongan program diatas dapat dilihat untuk menambahkan atau
membuat server diawal penggunaan program named6 akan dilakukan bila
memenuhi kondisi atau sintak yang telah ditentukan, berikut: elif [[ isi2 == -DNS &&
$isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" ]]. Apabila salah satu kondsi tidak
terpenuhi maka program langsung mengeksekusi perintah else yang akan
menampilkan pesan kesalahan “Perhatikan Format Penulisan !!!" dan memproses
variabel $helpS untuk menampilkan bantuan penggunaan sintak atau perintah
program.
Apabila program dijalankan untuk pertama kali, maka proses yang
dilakukan adalah pengecekan direktori $TMPS sudah terbuat atau tidak, dengan
perintah pengecekan if [[ –d $TMPS ]]. Jika direktori belum ada, maka akan
99
dilanjutkan pada pengecekan kondisi sebuah ukuran file resolv.conf yang berada
di direktori /etc, apabila file resolv.conf berukuran 0 bytes maka program akan
membuatkan direktori ke $TMPS.
Tetapi, jika program pernah digunakan maka dari proses pengecekan
direktori $TMPS akan dilanjutkan ke proses pengecekan nama file server sudah
terbuat atau tidak dengan perintah if [[ -f $Var/f-"$isi3" ]].
Proses selanjutnya adalah memecah alamat IPv6 dengan prefix dari file ip
yang berisikan, contoh: “ff3:200::20/64”, dan menghilangkan karakter “/” yang
mengapit alamat dengan prefix dengan menggunakan perintah sed 's/[/]/ /' $TMPS/ip
> $TMPS/ipku, setelah itu dibuatkan file ipku yang berisi “ff3:200::20 64”. Dari file
ipku akan dibuat variabel ip dan pfx dengan memanfaatkan perintah ipS=`awk '{print
$1}' $TMPS/ipku` dan pfx=awk '{print $2}' $TMPS/ipku`. Untuk variabel $isi3 akan
berisikan nama server, contoh: “learning.edu”
Isi dari variabel ip, pfx dan isi3 akan dimasukkan ke dalam file yang
dinamakan sama dengan isi dari $isi3 yang dilokasikan pada direktori /tmp/var,
dengan perintah echo "$isi3 $ip $pfx" > $TMPVar/"$isi3". Selanjutnya program akan
mengaktifkan module BIND dengan menggantikan isi file bindv6only yang
berstatus “0” menjadi “1”, dengan perintah echo "1" > /proc/sys/net/ipv6/bindv6only.
Proses selanjutnya adalah pemanggilan program cekIP.pl yang dibuat
dengan bahasa pemrograman Perl. Proses program cekIP.pl akan disertai input dari
variabel $ip $pfx $isi3 untuk pengecekan format alamat IPv6 dan prefix, dengan
perintah ./cekIP.pl $ip $pfx $isi3. Fungsi program digunakan untuk melakukan
pengecekan input format alamat IPv6, batasan prefix, membuat file-file sementara
100
jika pengecekan terpenuhi dan menghapus file-file sementara jika terjadi
kesalahan.
4.4.1.1. Proses Program cekIP.pl
Berikut adalah potongan program cekIP.pl untuk menerima baris masukan
standar input dari program named6 yang berasal dari fungsi tambah(), seperti
berikut:
#!/usr/bin/perl $ip = $ARGV[0]; $prfx = $ARGV[1]; $nama = $ARGV[2]; $zona = $ARGV[3]; $DIRS ="/var/tmp/SERVER"; $DIRH ="/var/tmp/HOST"; sub hapusS { system("rm $DIRS/namaS"); system("rm $DIRS/ipS"); system("rm $DIRS/pfxS"); } sub hapusH { system("rm $DIRH/namaH"); system("rm $DIRH/ipH"); system("rm $DIRH/pfxH"); system("rm $DIRH/zonaH"); } @prefix = (16, 32, 48, 64, 80, 96, 112);
Potongan program di atas menjelaskan proses untuk menerima input dari
program named6 akan dilakukan oleh variabel $ARGV[0] yang di inisialisasi
dengan $ip untuk alamat IPv6, $ARGV[1] yang di inisialisasi dengan $prfx untuk
prefix, variabel $ARGV[2] diinisialisasi dengan $nama untuk nama server atau
host, dan variable $ARGV[3] atau $zona akan dimanfaatkan untuk membedakan
input untuk penambahan sebuah server atau host. Inisialisasi direktori server dan
host akan dibedakan pada variabel $DIRS dan $DIRH untuk menangani file-file
sementara. Untuk fungsi sub hapusS dan sub hapusH bertugas untuk menghapus
file-file sementara saat terjadi kesalahan input oleh format alamat IPv6 dan prefix,
101
baik untuk server maupun host. Untuk batasan pengunaan prefix akan di
inisialisasi variabel @prefix dengan tipe data array.
if ($ip !~ /[G-Z]|[g-z]/ && $ip !~ /^(?>(.*?){1}):/ && $ip !~ /(?>(.*?){1}):::/ && $ip !~ /(?>(\.*?\.){1})/)
Potongan kode program diatas adalah beberapa kondisi pengecekan
kesalahan pertama kali pada program cekIP.pl dengan menggunakan regular
expression untuk pengecekan bentuk format alamat IPv6 dari input variabel $ip.
Untuk kondisi pertama akan mengecek isi dari $ip memiliki huruf antara G-Z atau
g-z. Kondisi kedua mengecek isi $ip di awali dengan “:”. Kondisi ketiga akan
mengecek dalam isi $ip memiliki bentuk “:::”. Kondisi keempat akan mengecek
dalam isi $ip memiliki bentuk “.”.
Apabila kondisi-kondisi tersebut ada dalam isi $ip, maka program akan
langsung memproses ke perintah else yang berisikan pesan kesalahan “Message 1
==> Format INPUT alamat IPv6 SALAH!!!” dan memanggil fungsi hapusS() untuk
menghapus file-file pada direktori $DIRS. Untuk menghapus file-file sementara
pada direktori $DIRS diperlukan pengkondisian, yaitu dengan mengecek status file
zonaH, bila status file tidak pada direktori $DIRH ada maka proses file sementara
dilakukan untuk membuat atau menambah server. Proses pegecekan dilakukan
dengan perintah: if(open(test,"$DIRH/zonaH")){ hapusH(); } dan else { hapusS(); }.
Bila kondisi-kondisi tersebut tidak terpenuhi maka program akan
melanjutkan ke proses kondisi selanjutnya, yaitu:
if ($ipS eq "::1") { print "\nMessage 4 ==> Anda memasukkan Alamat Loopback !!!\n\n";
102
if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } }
Potongan program diatas memiliki arti, jika isi $ip sama dengan “::” maka
program akan menampilkan pesan kesalahan “Message 4 ==> Anda memasukkan
Alamat Loopback !!!” dan memanggil fungsi hapusS() untuk menghapus file-file
sementara untuk server. Namun bila kondisi tesebut tidak terpenuhi, maka
program akan melanjutkan ke kondisi else.
else { $kar= length($ip); for($z=0;$z<$kar;$z++) { $awal=substr($ip,$z,1); #baca awal karakter ke z sebanyak 1 karakter if($awal eq ":") {$ok=1;} if($ok ne 1 ) {$hitungx=$hitungx+$awal; } } if($hitungx eq 0) {$error=1;} for($i=0;$i<$kar;$i++) { $karak = substr($ip,$i,1); #baca awal karakter ke i sebanyak 1 karakter $karak2 = substr($ip,$i+1,1); #baca karakter setelah karakter i $ending= substr($ip,$kar-1,1); # baca akhir karakter ":" $jadi="$karak$karak2"; #gabungan karakter i dan i+1 if ($karak eq ":" && $karak2 ne ":") {$count=$count+1; $x=0;} if ($ending eq ":") {$error=1;} if ($jadi eq "::") {$cap=$cap+1; } if ($karak ne ":") { $x=$x+1; if($x>4) {$error=1;} } }
Pada kondisi else diatas akan digunakan untuk pengecekan kesalahan
untuk karakter “:” pada isi $ip (format alamat IPv6) dengan membaca panjang isi
$ip, jumlah “:”, jumlah bentuk “::”, dan posisi “:”. Setelah membaca, menghitung
dan mencari posisi “:”, maka akan dilakukan pengesetan variabel-variabel untuk
dijadikan kondisi kesalahan. Dapat dilihat dari potongan program di bawah ini:
If ($cap<"1" && $count < 7 || $cap ==1 && $count > 6 )
103
{ print "\nMessage 2 ==> Format Input alamat IPv6 SALAH!!! \n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } } elsif($cap=="2" || $error=="1" || $count > "7" ) { print "\nMessage 3 ==> Format INPUT alamat IPv6 SALAH!!!\n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } }
Potongan program diatas akan memanfaatkan variabel-variabel yang telah
terbentuk. Pada kondisi if ($cap<”1” && $count < 7 || $cap ==1 && $count > 6)
menjelaskan apabila jumlah “::” ($cap) lebih kecil dari 1 (tidak ada) dan jumlah
“:” ($count) kurang dari 7 atau jumlah “::” sama dengan 1 (ada 1) dan jumlah “:”
lebih dari 6, maka ”Message 2 ==> Format Input alamat IPv6 SALAH!!!” dan
memanggil fungsi hapusS() untuk menghapus file-file pada direktori $DIRS.
Untuk kondisi elsif ($cap=="2" || $error=="1" || $count > "7" ) akan
menjelaskan apabila jumlah “:” ($cap) sama dengan 2 (ada 2) atau pada akhir
input “:” ($error) == “1” (ada 1) atau jumlah “:” lebih dari 7, maka ”Message 3 ==>
Format Input alamat IPv6 SALAH!!!” dan memanggil fungsi hapusS() untuk
menghapus file-file sementara pada direktori $DIRS.
Bila isi $ip memiliki format alamat IPv6 yang benar maka program akan
langsung berjalan ke proses kondisi else untuk membandingkan batasan nilai
prefix pada variabel @prefix dengan isi $prfx. Berikut bentuk potongan program
yang ada:
else {
104
$tes=@prefix; for ($x=0; $x<$tes;$x++) #checking prefix { if($prfx == $prefix[$x]) { $pass = "1";} } if ($pass eq "1") { if(open(test,"$DIRH/zonaH")) { system("echo $nama $ip $prfx >> /var/tmp/$zona"); system("./ffwdHST.sh"); } else { system("echo $nama $ip $prfx > /var/tmp/$nama"); system("./ffwdSRV.sh"); } } else { print "Perhatikan Format Prefix !!!\n"; print "Gunakan Prefix : 16, 32, 48, 64, 80, 96, 112\n"; hapus(); }
Apabila prefix tidak sesuai batasan @prefix yang ada, maka program akan
memanggil fungsi hapus untuk menghapus file-file pada direktori $DIRS. Namun
bila alamat IPv6 dan prefix dapat memenuhi semua kondisi yang ada, maka
program akan membuat file $nama yang berisikan nama server, IPv6 server dan
prefix server pada direktori /var/tmp. Kemudian dilanjutkan memproses program
ffwdSRV.sh.
4.4.1.2. Proses Program ffwdSRV.sh
Fungsi dari program ffwdSRV.sh ini adalah untuk membuat atau
menambahkan file-file forward, named.root6, named6.local, dan localhost6.zone
server ke dalam direktori /var/named. Untuk tiap pembuatan atau penambahan file
forward server akan diberikan nama dengan format “f-namaServer”. Program
105
ffwdSRV.sh ini menggunakan bahasa pemrograman bash. Untuk variabel input
nama server, alamat dan prefix, akan menggunakan perintah awk karena perintah
awk dapat membaca dari isi file-file sementara yang terletak pada direktori
$TMPS. Berikut variabel-variabel yang akan dimanfaatkan untuk input maupun
inisialisasi direktori dari potongan program ffwdSRV.sh yang ada:
#!/bin/bash TMPS=/var/tmp/SERVER; Var=/var/named; Etc=/etc namaS=`awk '{print $1}' $TMPS/namaS`; ipS=`awk '{print $1}' $TMPS/ipS` pfxS=`awk '{print $1}' $TMPS/pfxS` revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." ptrlocal="1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR localhost." if [[ -s $Etc/resolv.conf ]] … >> $Var/named.root6 ... > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS else … > $Var/named6.local ... > $Var/localhost6.zone ... > $Var/named.root6 ... > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS exit 0 fi
Pada program ffwdSRV.sh diberikan kondisi if [[ -s $Etc/resolv.conf ]] untuk
mengecek ukuran file resolv.conf pada direktori /etc, bila file berukuran 0 bytes
(kosong) maka akan program akan memproses pembuatan file forward,
named.root6, named6.local, dan localhost6.zone untuk yang pertama kali.
Apabila file resolv.conf berukuran lebih besar dari 0 bytes, maka program
akan langsung membuat file forward dan menambahkan isi file named.root6.
Bila program telah selesai membuat atau menambahkan isi file-file yang ada,
program akan menjalankan program dengan input alamat dan prefix ./reSRV.pl
$ipS $pfxS.
106
4.4.1.3. Proses Program reSRV.pl
Fungsi dari program reSRV.pl ini adalah proses lanjutan untuk alamat IPv6
dan prefix yang diterima dari baris masukan standar input. Proses yang akan
dikerjakan dalam program ini adalah menseting alamat IPv6 untuk diurut secara
terbalik berdasarkan nilai input prefix dan membuat file sementara depanS dan
belakangS.
Sebagai contoh, bentuk format alamat FEC0::2AA:FF:FE3F:2A1C/64,
maka bentuk penulisan alamat dengan pemotongan prefix = 64 di dalam file
reverse menjadi:
- Untuk bagian depan 0.0.0.0.0.0.0.0.0.0.0.0.0.C.E.F
- Untuk bagian belakang C.A.1.A.2.F.3.E.F.F.F.0.0.A.A.2.0
Sehingga dapat digunakan untuk membuat file reverse dan menambahkan isi zona
pada file named.conf. Berikut potongan kode program dari reSRV.pl untuk
memproses baris masukan standar input alamat Ipv6 dan prefix :
$ipS = $ARGV[0]; $prfxS = $ARGV[1]; #################################PENDEFINISIAN nilai prfx; if ($prfxS == "16") { $nilai=0; $nilai2=1 } if ($prfxS == "32") { $nilai=1; $nilai2=2;} if ($prfxS == "48") { $nilai=2; $nilai2=3;} if ($prfxS == "64") { $nilai=3; $nilai2=4;} if ($prfxS == "80") { $nilai=4; $nilai2=5;} if ($prfxS == "96") { $nilai=5; $nilai2=6;} if ($prfxS == "112") { $nilai=6; $nilai2=7;}
Dari potongan program diatas proses pertama kali yang akan dilakukan
adalah pengesetan nilai prefix pada variabel $nilai dan $nilai2 yang akan digunakan
untuk pemotongan alamat IPv6 berdasarkan prefix.
107
#cari "::" kemudian count kolom yg kurang $cari= length($ipS); for($i=0;$i<$cari;$i++) { $kar = substr($ipS,$i,1); $kar2 = substr($ipS,$i+1,1); $kar3 = substr($ipS,$i+2,1); if ($kar eq ":" && $kar2 ne ":") { $count=$count+1; } elsif($kar eq ":" && $kar2 eq ":") { $tempat=$tempat+1; if($kar3 ne "") { $count=$count+1; } } } if($tempat eq "1") { $hitung = 8 - ($count) ; } if($hitung >= 0) { for($i=0;$i<$cari;$i++) { $kar=substr($ipS,$i,1); $kar2=substr($ipS,$i+1,1); if($kar ne ":") { $karakter="$karakter$kar" } elsif($kar eq ":" && $kar2 ne ":") { $karakter="$karakter:"; } elsif($kar eq ":" && $kar2 eq ":") { for($x=1;$x<=$hitung;$x++) { $enol="0000"; $karakter="$karakter:$enol"; } } } my $str2 = $karakter; @daftar= split(/:/,$str2); $count=$#daftar; for($i=0;$i<=$count;$i++) { if(length($daftar[$i]) == 4) {} if(length($daftar[$i]) == 3 && $i != 0) { $daftar[$i]= "0$daftar[$i]"; } …..lanjutan di halaman berikutnya if(length($daftar[$i]) == 2 && $i != 0) { $daftar[$i]= "00$daftar[$i]";} if(length($daftar[$i]) == 1 && $i != 0) { $daftar[$i]= "000$daftar[$i]";} }
108
Untuk potongan program reSRV.pl diatas akan berfungsi untuk
merentangkan alamat IPv6 ke ekspresi penuh dengan menghitung banyaknya “:”
dan mencari letak “::”. Sebagai contoh untuk model penulisan alamat
FEC0::2AA::FF:FE3F:2A1C, jika dipresentasikan dalam ekspresi penuh, bentuk
alamat akan menjadi:
FEC0:0000:0000:0000:02AA:00FF:FE3F:2A1C.
Maka pada proses alamat IPv6, program akan menghitung panjang nilai
alamat dengan perintah $cari = length($ipS) dan for($i=0;$i<$cari;$i++) perintah yang
dilanjutkan dengan inisialisasi variabel $kar untuk mencari karakter pertama yang
berisi “:”, $kar2 untuk mecari karakter kedua berisi “:” dan $kar3 untuk mencari
karakter ketiga yang berisi karakter selain “:”. Variabel $kar, $kar2 dan $kar3 akan
digunakan dalam beberapa kondisi.
Pada perulangan perintah for untuk kondisi if ($kar eq ":" && $kar2 ne ":")
akan mengeset variabel $count untuk menghitung jumlah “:” pada isi variabel
$ipS. Untuk kondisi elsif($kar eq ":" && $kar2 eq ":") akan mengisi nilai variabel
$tempat jika $kar dan $kar2 memiliki isi “:”. Kemudian dilakukan pengecekan
kembali dengan kondisi if($kar3 ne "") yang berarti bila kondisi terpenuhi akan
mengeset nilai untuk variabel $count.
Setelah pengesetan nilai variabel $count, maka proses kondisi if($tempat eq
"1") adalah untuk menghitung jumlah karakter “:” dengan mengeset nilai variabel
$hitung = 8-($count). Kemudian dilanjutkan pada kondisi if($hitung >= 0) yang akan
memproses kondisi perulangan for yang didalamnya akan berisi kondisi if($kar ne
":") jika terpenuhi akan mengisikan nilai variabel $karakter=$karakter$kar,
109
kondisi elsif($kar eq ":" && $kar2 ne ":") jika terpenhi akan mengisikan nilai variabel
$karakter="$karakter:" dan kondisi elsif($kar eq ":" && $kar2 eq ":") jika terpenuhi
akan mengisikan variabel $karakter=”$karakter:$enol”, dimana variabel $enol berisi
”0000”.
Kemudian proses berikutnya adalah mengisi tiap-tiap kolom yang diapit
“:” sebanyak 4 digit, agar format alamat dapat menjadi seperti berikut
AAAA:BBBB:CCCC:DDDD:EEEE:FFFF:GGGG:HHHH. Proses tersebut akan
dilakukan dengan pemecahan isi $karakter yang di batasi oleh tanda “:” dengan
perintah @daftar= split(/:/,$str2) dan menghitung variabel $daftar dengan perintah
$count=$#daftar.
Untuk perintah perulangan for akan dilakukan pengecekan panjang digit
yang ada tiap-tiap elemen dalam variabel @daftar, jika pada sebuah isi elemen
$daftar[$i] digit yang dimiliki kurang dari 4 maka program akan ditambahkan
karakter “0” sebanyak digit yang dibutuhkan.
Proses selanjutnya adalah proses pemotongan, penyisipan “.” dan
membalik format alamat dengan batasan prefix yang telah ditentukan pada
variabel @prefix. Berikut potongan program untuk memotong alamat:
$itung=$nilai; for($j=0;$j<=$itung;$j++) { $awal="$awal$daftar[$j]"; } $panjang = length($awal); …..lanjutan di halaman berikutnya for($i=$panjang; $i>=0;$i--) { $temp=substr($awal,$i,1); if($i==$panjang-1) { $depan="$temp"; } else { $depan="$depan.$temp"; }
110
} system("echo $depan > /var/tmp/SERVER/depanS");
Pada potongan program diatas menjelaskan bahwa dengan menggunakan
variabel $itung yang berisikan variabel $nilai yang telah ditetapkan pendefinisian
nilai prefix, maka proses pemotongan akan dilakukan bagian depan elemen,
menyisipkan “.” dan membalikkan isi elemen-elemen dari variabel @daftar.
Apabila proses pemotongan dan membalik isi variabel telah selesai akan
dilanjutkan dengan membuat file depanS pada direktori /var/tmpServer yang
berisikan isi variabel $depan.
$itung2=7; for($j2=$nilai2;$j2<=$itung2;$j2++) { $blkg="$blkg$daftar[$j2]"; } $panjang2 = length($blkg); for ($i2=$panjang2-1; $i2>=0;$i2--) { $temp2=substr($blkg,$i2,1); if($i2==$panjang2-1) { $akhir="$temp2"; } else { $akhir="$akhir.$temp2"; } } system("echo $akhir > /var/tmp/SERVER/belakangS"); system("./reSRV.sh"); }
Pada potongan program diatas hampir sama dengan proses kerja
pemotongan untuk bagian depan alamat, perbedaan dari pemotongan bagian
belakang adalah untuk nilai variabel $itung2=7 yang telah ditetapkan untuk
memulai pembacaan elemen variabel @daftar dari elemen terbelakang. Pada
pendefinisian nilai prefix, maka akan dilakukan proses pemotongan yang
dimulai dari bagian belakang elemen, menyisipkan “.” dan membalikkan isi
111
elemen-elemen dari variabel @daftar. Apabila proses pemotongan dan
membalik isi variabel telah selesai akan dilanjutkan dengan membuat file
belakangS pada direktori /var/tmp/Server yang berisikan isi variabel $akhir.
Proses terakhir dari program reSRV.pl adalah pemanggilan program reSRV.sh
yang akan membuat seluruh file-file reverse yang dibutuhkan server.
4.4.1.4. Proses Program reSRV.sh
Fungsi dari program reSRV.sh digunakan untuk membuat menambahkan
file-file reverse server ke dalam direktori /var/named dengan memanfaatkan file-
file yang berada pada direktori sementara yang terletak di /var/tmp/Server untuk
dijadikan variabel-variabel input. Berikut potongan program reSRV.sh:
TMPS=/var/tmp/SERVER Var=/var/named namaS=`awk '{print $1}' $TMPS/namaS` dpnS=`awk '{print $1}' $TMPS/depanS` blkgS=`awk '{print $1}' $TMPS/belakangS` echo "\$ORIGIN $dpnS.ip6.arpa. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( ... IN NS ns.$namaS." > $Var/rev."$namaS".arpa echo "\$ORIGIN $dpnS.ip6.int. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( ... IN NS ns.$namaS. DNAME $dpnS.ip6.arpa." > $Var/rev."$namaS".int ./named-resolv.sh
Dari potongan program di atas akan menjelaskan untuk baris paling atas
program akan dilakukan inisialisasi untuk variabel-variabel input dan letak
direktori-direktori. Untuk baris-baris berikutnya akan dilanjutkan dengan
112
pembuatan-pembuatan file-file yang ada dengan perintah echo”(…bentuk format
penulisan…)” > $Var/rev."$namaS".arpa. Setelah proses pembuatan file selesai
maka proses akhir program adalah memanggil program named-resolv.sh.
4.4.1.5. Proses Program named-resolv.sh
Pada baris pertama program akan digunakan sebagai inisialisasi direktori
dan variabel-varibel input. Proses program named-resolv.sh akan dilakukan proses
pembuatan atau penambahan pada file named.conf dan resolv.conf. Namun untuk
proses pembuatan dan penambahan data pada file akan dibedakan dengan
menggunakan perintah kondisi if dan else. Proses tersebut dibedakan karena pada
kondisi if [[ -f $Etc/named.conf ]] berfungsi mencari file named.conf pada direktori
/etc, dimana pada saat penggunaan program named6 pertama kali untuk membuat
file forward dan reverse server, program named6 memanggil fungsi tambah untuk
pertama kalinya akan mengubah nama file named.conf yang asli menjadi
named.conf~. Berikut bentuk potongan kode program named-resolv.sh:
TMPS=/var/tmp/SERVER; Etc=/etc; TMP=/var/tmp namaS=`awk '{print $1}' $TMPS/namaS` ipS=`awk '{print $1}' $TMPS/ipS` dpnS=`awk '{print $1}' $TMPS/depanS` revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" inet="127.0.0.1 allow { localhost; } keys { rndckey; };" inet6="::1 allow { localhost; } keys { rndckeys; };" if [[ -f $Etc/named.conf ]] ... ... …..lanjutan di halaman berikutnya itung=`awk '/include/{print NR}' $Etc/named.conf` let x=$itung sed "$x"d $Etc/named.conf > $TMP/named.conf #============================================= ... include \"/etc/rndc.key\";" >> $TMP/named.conf ...
113
... >> $Etc/resolv.conf rm $TMPS/namaS; rm $TMPS/ipS; rm $TMPS/pfxS rm $TMPS/depanS; rm $TMPS/belakangS else ... include \"/etc/rndc.key\";" > $Etc/named.conf ... ... > $Etc/resolv.conf rm $TMPS/namaS; rm $TMPS/ipS; rm $TMPS/pfxS rm $TMPS/depanS; rm $TMPS/belakangS exit 0 fi
Sehingga pada waktu pengecekan kondisi if [[ -f $Etc/named.conf ]], file
tersebut tidak ditemukan, maka program akan melanjutkan proses kondisi else
yang berfungsi untuk membuat file named.conf dan resolv.conf dengan bentuk
format yang telah di dukung oleh IPv6. Maka saat ditemukan proses penambahan
nama server lagi program akan selalu memproses kondisi if untuk melakukan
penambahan data. Untuk penambahan data pada file named.conf akan
memanfaatkan perintah awk dan sed yang berfungsi untuk menghitung baris
dengan regular expression “include” dan menghapus ekspresi regular tersebut,
sehingga zona nama dan reverse server dapat disisipkan pada file named.conf.
Bentuk perintah yang digunakan untuk menghitung dan menghapus baris adalah
sebagai berikut: “itung=`awk '/include/{print NR}' $Etc/named.conf`; let x=$itung” dan
”sed "$x"d $Etc/named.conf > $TMP/named.conf” Untuk proses terakhir akan
dilakukan pembuangan file-file sementara pada direktori /var/tmp/SERVER dan
proses untuk pembuatan atau penambahan file server telah selesai.
4.4.2. Proses Tambah Host
114
Proses tambah host ini memiliki proses yang sama dengan proses
penambahan server dari program named6 pada fungsi tambah, perbedaan yang
ada dapat dilihat dari kondisi pengecekan dan penambahan pada file-file server
yang dituju. Program-program yang akan dilalui untuk proses menambah host
juga berbeda, proses program-program yang akan dilalui adalah program named6,
cekIP.pl, ffwdHST.sh, reHST.pl, dan reHST.sh
Sintak kondisi input yang diberikan elif [[ $isi2 == -H && $isi3 != "" && $isi4
== -ip6/prefix && $isi5 != "" && $isi6 = -Z && $isi7 != "" ]]. Jika kondisi terpenuhi, maka
kondisi pengecekan pertama adalah kondisi if [[ -d $TMPH ]] untuk mengecek
direktori TMPH pada direktori /var/tmp sudah ada atau tidak. Bila direktori tidak
ada, program akan memproses kondisi elif [[ -f $Var/f-"$isi7" ]] untuk mengecek file
server dengan nama “f-$isi7” pada direktori $Var sudah ada atau tidak. Jika file
server ada, maka program akan membuat direktori TMPH ke dalam direktori
/var/tmp yang berfungsi untuk menempatkan file-file sementara yang nantinya
akan digunakan sebagai variabel input untuk proses program-program lanjutan.
Jika file server tidak ada maka program akan menjalankan pesan "Zona DNS6: $isi7
Tidak Ditemukan !!!" dari kondisi else.
Apabila kondisi dapat terpenuhi, selanjutnya program akan membuat file-
file sementara pada direktori TMPH. File tersebut akan berisikan file namaH, ipH,
pfxH, dan zonaH yang kemudian akan di proses program cekIP.pl. Berikut
potongan kode program untuk menuliskan atau menambahkan nama host pada file
server dari fungsi tambah adalah sebagai berikut:
elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" && $isi6 = -Z && $isi7 != "" ]]
then
115
if [[ -d $TMPH && -f $Var/f-"$isi7" ]] then #------------Tambah Nama Host if cek=`grep $isi3 $TMPVar/$isi7` then echo; echo "Nama Host: $isi3 Sudah Ada Dalam Zona: $isi7"; echo exit 0 else echo "$isi5" > $TMPH/ip; sed 's/[/]/ /' $TMPH/ip > $TMPH/ipku ip=`awk '{print $1}' $TMPH/ipku`; pfx=`awk '{print $2}' $TMPH/ipku`; echo "$isi3" > $TMPH/namaH; echo "$ip" > $TMPH/ipH echo "$pfx" > $TMPH/pfxH; echo "$isi7" > $TMPH/zonaH rm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7 exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then mkdir $TMPH; echo "$isi5" > $TMPH/ip; sed 's/[/]/ /' $TMPH/ip > $TMPH/ipku ip=`awk '{print $1}' $TMPH/ipku`; pfx=`awk '{print $2}' $TMPH/ipku`; echo "$isi3" > $TMPH/namaH; echo "$ip" > $TMPH/ipH echo "$pfx" > $TMPH/pfxH; echo "$isi7" > $TMPH/zonaH rm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7 exit 0 else echo; echo "Zona DNS6: $isi7 Tidak Ditemukan !!!"; echo exit 0 fi else echo; echo "Perhatikan Format Penulisan !!!"; echo; $helpS; $helpH exit 0 fi }
Dapat di lihat dari potongan program di atas untuk menambahkan nama
klien host dan alamat IPv6 ke dalam file-file server, perintah yang digunakan
sedikit berbeda dengan pembuatan atau penambahan file-file server. Pada
penambahan sebuah host memiliki perintah tambahan yaitu -Z yang artinya zona
atau wilayah domain server. Perintah -Z ini akan diikuti dengan $isi7 yang berisi
nama domain, sehingga memiliki arti nama host dengan alamat IPv6 akan
ditambahkan pada sebuah zona file server. Bila proses kondisi untuk menambah
host telah terpenuhi maka program akan memanggil program cekIP.pl yang diikuti
dengan variabel $ipH $pfxH $isi3 $isi7 sebagai masukan program tersebut.
116
4.4.2.1. Proses Program cekIP.pl
Fungsi progam cekIP.pl digunakan oleh server dan host untuk mengecek
bentuk format alamat IPv6 dan batasan prefix. Proses ini memiliki proses kerja
yang sama pada saat menambahkan nama, alamat IPv6 dan prefix untuk server
yang telah dijelaskan terlebih di atas. Perbedaan yang dimiliki adalah pada
pemanfaatan variabel input untuk $zona = $ARGV[3] dan pengecekan status
keberadaan file sementara zonaH pada direktori $DIRH. Apabila format alamat
IPv6 dan prefix telah memenuhi kondisi dan status file zonaH ada, maka program
akan menambahkan isi file dengan nama sesuai isi variabel $zona pada direktori
/var/tmp dan melanjutkan memanggil program ffwdHST.sh.
4.4.2.2. Proses Program ffwdHST.sh
Fungsi program ffwdHST.sh adalah untuk menambahkan nama dan alamat
IPv6 host pada file server atau file pada direktori /var/named dengan nama file “f-
“$zoneH””. Untuk isi variabel input diambil dari pembacaan file-file yang sudah
terbuat pada direktori /var/tmp/TMPH dengan menggunakan perintah awk dengan
pemberian nama variabel zonaH, namaH, ipH, dan pfxH. Setelah penambahan
nama dan alamat host telah terbuat, maka program akan meneruskan proses
dengan memanggil program yang memiliki sintak perintah reHST.pl $ipH $pfxH.
4.4.2.3. Proses Program reHST.pl
Fungsi program reHST.pl memiliki proses kerja yang sama dengan
program reSRV.pl untuk membuat file sementara berisikan alamat IPv6 yang
117
diurut secara terbalik berdasarkan nilai input prefix sehingga dapat digunakan
untuk proses program selanjutnya.
Perbedaan yang dimiliki program reHST.pl dengan program reSRV.pl,
yaitu pada saat pemotongan alamat IPv6 berdasarkan prefix terjadi, hasil
pemotongan yang digunakan hanya hasil pemotongan alamat bagian belakang
saja. Hal ini dilakukan agar dapat sesuai dengan bentuk format file-file yang telah
dijelaskan pada bab III sebelumnya. Jika proses pembuatan file-file sementara
telah selesai, maka langkah selanjutnya adalah memanggil program reHST.sh.
4.4.2.4. Proses Program reHST.sh
Proses program reHST.sh ini digunakan untuk menambahkan nama dan
alamat IPv6 host dengan bentuk terbalik pada file reverse server yang dituju atau
file pada direktori /var/named dengan format nama file rev.”$zoneH”.arpa.
Sedangkan variabel-variabel input diambil dari pembacaan file-file yang sudah
terbuat pada direktori /var/tmp/TMPH dengan menggunakan perintah awk. Variabel
input yang akan digunakan untuk menambah nama dan alamat IPv6 host adalah
$zoneH, $namaH, dan $blkgH. Perintah penambahan pada file reverse server
tersebut akan seperti berikut : echo "$blkgH IN PTR $namaH.$zoneH." >>
$Var/rev."$zoneH".arpa. Untuk proses terakhir dari program reHST.sh adalah
menghapus isi file-file sementara yang berada pada direktori /var/tmp/TMPH.
4.4.3. Proses Ubah Server dan Host
Proses ubah server dan host ini adalah fasilitas tambahan yang diberikan
pada program named6 dan bertugas untuk mengubah nama ataupun alamat IPv6
118
untuk server maupun host. Adapun perintah untuk mengubah nama dan alamat
IPv6 akan dibedakan bentuk perintahnya, baik untuk server ataupun klien host.
4.4.3.1. Proses Ubah Nama Server dan Host
Berikut potongan program untuk mengubah nama server dan host dalam
fungsi ubah :
ubah() { if [[ $isi2 == help || $isi2 == "" ]] then $helpE elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -NN && $isi5 != "" ]] then #------- EDIT NAMA SERVER if [[ -f $Var/f-"$isi3" && -d $TMPE ]] then echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh exit 0 elif [[ -f $Var/f-"$isi3" ]] then mkdir $TMPE echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh exit 0 else echo; echo "Nama Domain Sever: $isi3 Tidak Ditemukan !!!"; echo . $helpED exit 0 fi elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -NN && $isi5 != "" && $isi6 == -Z && $isi7 != "" ]] then #------- EDIT NAMA HOST if [[ -f $Var/f-"$isi7" && -d $TMPE ]] then if cek=`grep $isi7 $TMPVar/$isi7` then echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru echo "$isi7" > $TMPE/ZONA ./EditNama6.sh exit 0 …..lanjutan di halaman berikutnya else echo; echo "Nama Host: $isi3, Tidak Ada Dalam Zona: $isi7"; echo exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then if cek=`grep $isi7 $TMPVar/$isi7`
119
then mkdir $TMPE echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru echo "$isi7" > $TMPE/ZONA ./EditNama6.sh exit 0 else echo; echo "Nama Host: $isi3, Tidak Ada Dalam Zona: $isi7"; echo exit 0 fi else echo; echo "File DNS Tidak Ditemukan !!!"; echo $helpEH exit 0 fi
Dari potongan kode program named6 untuk fungsi ubah diatas dapat
dilihat bentuk format perintah untuk mengubah nama server dari kondisi “elif [[
$isi2 == -DNS && $isi3 != "" && $isi4 == -NN && $isi5 != "" ]]”. Jika kondisi perintah
tidak terpenuhi maka program akan memproses pesan "Perhatikan Format Penulisan
!!!" dan $helpE.
Sedangkan perintah untuk mengubah nama host akan sedikit berbeda
karena pada perintah untuk menngubah nama host akan ditambahkan dengan
perintah “-Z” yang akan digunakan untuk mengarahkan perubahan nama host
akan dilakukan pada file-file server yang mewakili nama-nama host. Berikut
bentuk perintah untuk menambahkan host : “elif [[ $isi2 == -H && $isi3 != "" && $isi4
== -NN && $isi5 != "" && $isi6 == -Z && $isi7 != "" ]]”, jika kondisi perintah tidak
terpenuhi maka program akan memproses pesan "Perhatikan Format Penulisan !!!"
dan $helpE.
Saat pertama kali fungsi ubah dijalankan dan kondisi perintah yang
diberikan memenuhi kondisi-kondisi untuk melakukan pengubahan nama server
dan nama file server, maka program akan menjalankan kondisi elif [[ -f $Var/f-"$isi7"
120
]] dan tidak menjalankan kondisi if [[ -f $Var/f-"$isi7" && -d $TMPE ]]. Karena pada
kondisi if, kondisi yang tidak terpenuhi adalah “-d $TMPE” yang berarti direktori
TMPE tidak ada pada direktori /var/tmp walaupun status file bernama “f-"$isi7””
ditemukan.
Demikian juga, bila proses yang di lakukan pertama kali adalah perubahan
nama host terlebih dahulu, maka kondisi yang akan dilakukan hampir sama
dengan kondisi pada ubah nama server, yaitu mengecek file server yang dituju dan
direktori TMPE sudah ada atau tidak. Jika file server dan direktori TMPE tidak
ada, program akan langsung menuju ke kondisi else dengan pesan “File DNS Tidak
Ditemukan !!!”. Tetapi , jika file server ada dan direktori tidak ada maka program
akan melanjutkan ke kondisi “elif [[ -f $Var/f-"$isi7" ]]” dan membuatkan direktori
TMPE.
Proses fungsi ubah akan dilanjutkan dengan pembuatan file sementara.
Bila yang akan di ubah adalah nama server maka file sementara yang akan di buat
adalah namaBaru dan namaLama yang akan digunakan sebagai variabel input
saat proses program selanjutnya. Tetapi jika yang akan di ubah adalah nama host
maka file sementara yang akan di buat untuk variabel input adalah namaBaru,
namaLama, dan ZONA.
Bila pembuatan file sementara sudah terbuat maka prosesselanjutnya
adalah pemanggilan program EditNama6.sh yang sebenarnya proses untuk
pengubahan nama server atau host akan dikakukan dalam program ini.
4.4.3.1.1. Program EditNama6.sh untuk Ubah Nama Server
121
Berikut potongan kode program untuk mengubah nama server lama
dengan nama server baru :
Var=/var/named; Etc=/etc TMPE=/var/tmp/EDIT; TMPVar=/var/tmp if [[ -f $TMPE/ZONA ]] then ... … else namaL=`awk '{print $1}' $TMPE/namaLama` namaB=`awk '{print $1}' $TMPE/namaBaru` if [[ "$namaB" != "$namaL" ]] then sed "s/$namaL/$namaB/g" $Var/named.root6 > $TMPE/named.root6 mv $TMPE/named.root6 $Var sed "s/$namaL/$namaB/g" $Var/f-"$namaL" > $TMPE/f-"$namaB" mv $TMPE/f-"$namaB" $Var; rm $Var/f-"$namaL" ... ... sed "s/$namaL/$namaB/g" $TMPVar/"$namaL" > $TMPE/"$namaB" mv $TMPE/"$namaB" $TMPVar rm $TMPVar/"$namaL"; rm $TMPE/namaLama; rm $TMPE/namaBaru exit 0 else echo; echo "\"Nama Server Baru\" Sama Dengan \"Nama Server Lama\" !!!"; echo fi fi
Dari potongan program EditNama6.sh dapat diketahui cara kerja untuk
proses mengubah nama server dan variabel-variabel input yang digunakan. Saat
program EditNama6.sh dijalakan pertama yang di proses program adalah variabel-
variabel input dan inisialisasi direktori yang terletak pada baris paling atas
program.
Selanjutnya program akan melakukan cek kondisi dengan perintah if [[ -f
$TMPE/ZONA ]] yang akan mengecek status pada direktori TMPE memiliki file
bernama ZONA atau tidak, kondisi ini diberikan untuk membedakan proses antara
pengubahan nama server dan host. Jika status file ZONA tidak ada, proses akan
122
dilanjutkan ke kondisi else yang akan memproses pembacaan isi file namaLama
dan namaBaru untuk variabel input.
Sebelum memproses pengubahan nama server akan diberikan kondisi if [[
"$namaB" != "$namaL" ]], yang akan mengecek isi dari variabel $namaB sama
dengan $namaL atau tidak. Jika isi kedua variabel sama, program akan memproses
kondisi else untuk menampilkan pesan "Nama Domain Baru” Sama Dengan “Nama
Domain Lama” !!! dan menghapus file sementara namaLama dan namaBaru pada
direktori TMPE.
Namun, jika isi variabel $namaB dan $namaL tidak sama, proses
pengubahan nama server akan di proses. Proses pengubahan nama dari program
akan memanfaatkan perintah “sed” untuk seleksi teks dan perintah “mv” untuk
memindahkan file. Untuk proses mengubah nama pada file server dan nama file
server, perlu mengetahui file-file yang berisikan nama server dan nama file yang
perlu diubah.
File-file yang berisikan nama server dan file yang menggunakan nama
server adalah : named.root6, f-“namaserver”, rev.”namaserver”.arpa,
named.conf, resolv.conf dan file sementara server berada direktori /var/tmp.
Dengan mengetahui file-file yang yang bernamakan dengan nama server dan
berisikan nama server, maka proses perubahan nama server dapat dilakukan
dengan menggunakan perintah “sed”. Sedangkan untuk merubah nama file server
yang menggunakan nama server akan dilakukan dengan perintah “mv”
Berikut adalah salah satu cara untuk merubah nama dalam satu file dengan
perintah sed dari potongan program diatas, sebagai berikut :
123
sed "s/$namaL/$namaB/g" $Var/named.root6 > $TMPE/named.root6 mv $TMPE/named.root6 $Var
Dengan pilihan penggunaan bentuk perintah “sed "s/string1/string/g"
nama_file > file_baru” adalah perintah standar untuk menggantikan ekspresi regular
string1 dengan string2 dengan menambahkan flag “g” atau global yang berarti
secara keseluruhan pola yang cocok dalam file akan diganti. Untuk bentuk
perintah “> file_baru” adalah perintah untuk membuat file baru yang telah
terubah isinya dengan nama file yang sama. Sedangkan untuk perintah “mv” akan
berfungsi memindahkan file baru ke tempat file lama, sehingga file baru tersebut
akan menimpa file lama.
Berikut adalah salah satu cara untuk merubah nama server dalam sebuah
file dan nama file server lama dengan nama file server baru dengan perintah sed
dari potongan program diatas, sebagai berikut :
sed "s/$namaL/$namaB/g" $Var/f-"$namaL" > $Var/f-"$namaB" rm $Var/f-"$namaL"
Dari potongan kode program diatas, perintah yang digunakan untuk
mengubah nama server dalam file tetap menggunakan perintah “sed”. Proses
pembuatan file dengan nama baru akan langsung ditujukan ke direktori file
dengan nama lama berada. Kemudian dilanjutkan menghapus file dengan nama
lama, menggunakan perintah “rm”.
Setelah semua nama server dan file-file dengan nama server baru
terbentuk, proses terakhir adalah menghapus semua file-file lama dan proses
untuk mengubah nama server telah selesai.
124
4.4.3.1.2. Program EditNama6.sh untuk Ubah Nama Host
Berikut potongan kode program untuk ubah nama host lama dengan nama host
baru pada program EditNama6.sh:
if [[ -f $TMPE/ZONA ]] then zona=`awk '{print $1}' $TMPE/ZONA` namaL=`awk '{print $1}' $TMPE/namaLama` namaB=`awk '{print $1}' $TMPE/namaBaru` if [[ $namaB != $namaL ]] then sed "s/$namaL/$namaB/g" $Var/f-"$zona" > $TMPE/f-"$zona" mv $TMPE/f-"$zona" $Var sed "s/$namaL/$namaB/g" $Var/rev."$zona".arpa > $TMPE/rev."$zona".arpa mv $TMPE/rev."$zona".arpa $Var sed "s/$namaL/$namaB/g" $TMPVar/"$zona" > $TMPE/"$zona" mv $TMPE/"$zona" $TMPVar rm $TMPE/ZONA; rm $TMPE/namaLama; rm $TMPE/namaBaru; exit 0 else echo; echo "\"Nama Host Baru\" Sama Dengan \"Nama Host Lama\" !!!"; echo fi else ... ... fi
Proses ubah nama host dari potongan program diatas memiliki proses kerja
yang sama dengan proses ubah nama server yang telah dijelaskan sebelumnya.
Hanya pada proses ubah nama host ini file-file yang di proses lebih sedikit, bila
dibandingkan dengan proses ubah nama server.
Hal ini disebabkan, proses untuk mengganti nama host tidak perlu
melakukan perubahan untuk nama file-file server yang akan di proses. Proses
ubah nama host ini akan menggunakan perintah “sed” yang akan memproses
pencocokan pola pada isi file-file server yang telah ditentukan Kemudian akan
125
dilanjutkan dengan pembuatan file pada direktori TMPE dan dipindahkan dengan
perintah “mv” ke direktori tujuan untuk menimpa file lama. Proses terakhir setelah
mengganti nama host adalah menghapus file-file sementara-nya.
4.4.3.2. Proses Ubah Alamat Server dan Host
Proses ini ubah alamat ini dibedakan menjadi dua model, yaitu proses
ubah alamat/prefix server dan host. Proses ubah alamat ini memiliki proses yang
lebih panjang jika dibandingkan proses untuk ubah nama, karena pada proses
ubah alamat perlu dilakukan pengecekan bentuk format alamat/prefix IPv6 dan
membentuk alamat terbalik (reverse) untuk alamat/prefix baru ataupun
alamat/prefix lama.
Maka untuk pengecekan dan membentuk alamat/prefix terbalik diperlukan
bantuan proses program-program lainnya. Sesuai dengan urutan proses program
maka urutan proses program yang akan dijalankan agar dapat mengubah
alamat/prefix server atau host adalah sebagai berikut: cekIPB.pl berfungsi untuk
mengecek format bentuk alamat/prefix baru, reIPL.pl berfungsi untuk membentuk
alamat lama dengan format terbalik, reIPB.pl berfungsi untuk membentuk alamat
baru dengan format terbalik dan EditIP6.sh berfungsi untuk mengantikan
alamat/prefix lama dengan alamat/prefix baru.
Berikut potongan program untuk mengubah alamat IPv6 server atau host
dalam fungsi ubah pada program named6 :
elif [[ $isi2 == -ip6 && $isi3 != "" && $isi4 == -Nip6 && $isi5 != "" && $isi6 == -DNS && $isi7 != "" ]]
then #-------------- EDIT IP SERVER if [[ -f $Var/f-"$isi7" && -d $TMPE ]] then
126
echo "$isi3" > $TMPE/ipL; sed 's/[/]/ /' $TMPE/ipL > $TMPE/ipLku ipLama=`awk '{print $1}' $TMPE/ipLku`; pfxLama=`awk '{print $2}' $TMPE/ipLku` echo "$isi5" > $TMPE/ipB; sed 's/[/]/ /' $TMPE/ipB > $TMPE/ipBku ipBaru=`awk '{print $1}' $TMPE/ipBku`; pfxBaru=`awk '{print $2}' $TMPE/ipBku` echo "$isi7" > $TMPE/DNS; nama=`awk '{print $1}' $TMPE/DNS` ipL=`awk '/'$nama'/{print $2}' $TMPVar/$nama` pfxL=`awk '/'$nama'/{print $3}' $TMPVar/$nama` if [[ $ipL == $ipLama && $pfxL == $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku;rm $TMPE/ipB; rm $TMPE/ipBku; rm $TMPE/DNS exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then mkdir $TMPE ... ==========sama dengan atas========= ... if [[ $ipL == $ipLama && $pfxL == $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama exit 0 else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku;
rm $TMPE/DNS exit 0 fi else echo; echo "Nama Domain : $isi7 Tidak Ada !!!"; echo fi …..lanjutan program di halaman berikutnya elif [[ $isi2 == -ip6 && $isi3 != "" && $isi4 == -Nip6 && $isi5 != "" && $isi6 == -H && $isi7 != "" && $isi8 == -Z && $isi9 != "" ]] then #==========EDIT IP HOST=============# if [[ -f $Var/f-"$isi9" && -d $TMPE ]] then ... ==========sama dengan atas========= ... echo "$isi7" > $TMPE/HOST; namaH=`awk '{print $1}' $TMPE/HOST` echo "$isi9" > $TMPE/ZONA; namaD=`awk '{print $1}' $TMPE/ZONA` cekH=`awk '/'$namaH'/{print $1}' $TMPVar/$namaD` ipL=`awk '/'$namaH'/{print $2}' $TMPVar/$namaD`; pfxL=`awk '/'$namaH'/{print $3}' $TMPVar/$namaD` if [[ $namaH == $cekH && $ipLama == $ipL && $pfxLama == $pfxL ]]
127
then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku rm $TMPE/HOST; rm $TMPE/ZONA exit 0 fi elif [[ -f $Var/f-"$isi9" ]] then mkdir $TMPE ... ==========sama dengan atas========= ... if [[ $namaH == $cekH && $ipLama == $ipL && $pfxLama == $pfxL ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku rm $TMPE/HOST; rm $TMPE/ZONA exit 0 fi else echo; echo "Nama Domain6 : $isi9 Tidak Ada !!!"; $helpEH; echo fi else echo; echo "Perhatikan Format Penulisan !!!" $helpE echo "Gunakan command:= named6 view untuk cek list Nama & IP"; echo fi }
Dari potongan program diatas dapat dilihat bentuk perintah untuk
mengubah alamat/prefix server dari kondisi “elif [[ $isi2 == -ip6 && $isi3 != "" && $isi4
== -Nip6 && $isi5 != "" && $isi6 == -DNS && $isi7 != "" ]]”. Proses input untuk
mengedit alamat/prefix server dari fungsi ubah ini memiliki proses kerja yang
hampir sama dengan proses pada fungsi tambah. Proses setelah memenuhi kondisi
tersebut, maka program akan mengecek nama file server ada atau tidak.
Jika file server ada, maka program akan memproses bagian pembuatan
file-file sementara untuk digunakan sebagai inputan dan proses pengecekan
128
kondisi. Untuk variabel-variabel input yang akan digunakan adalah variabel-
variabel $ipLama, $pfxLama, $ipBaru, $pfxBaru dan file DNS yang berisikan nama
server dari variabel $isi7.
Kondisi selanjutnya adalah pencocokan alamat dan prefix lama, jika
alamat atau prefix yang dimasukkan tidak cocok maka program akan
menampilkan pesan kesalahan. Tetapi bila inputan cocok, program akan
memanggil program cekIPB.pl yang diikuti dengan variabel input $ipBaru,
$pfxBaru, $ipLama,dan $pfxLama.
Sedangkan perintah untuk mengubah alamat/prefix host akan
menggunakan kondisi “elif [[ $isi2 == -ip6 && $isi3 != "" && $isi4 == -Nip6 && $isi5 != ""
&& $isi6 == -H && $isi7 != "" && $isi8 == -Z && $isi9 != "" ]]”. Proses serta program
yang akan digunakan sama dengan program yang dilakukan untuk mengubah
alamat/prefix server.
Pada proses mengubah alamat/prefix untuk host, akan memerlukan
pembuatan file bernama HOST dengan isi dari variabel “isi7” dan file ZONA
dengan isi dari variabel “$isi9”, dimana kedua file tersebut nantinya akan
digunakan untuk membedakan input alamat/prefix untuk host atau server dan
proses di dalam program EditIP6.sh saat akan melakukan proses perubahan
alamat.
4.4.3.2.1. Program cekIPB.pl untuk Ubah Alamat/Prefix Server dan Host
Proses kerja program cekIPB.pl berfungsi untuk mengecek format alamat
IPv6 dan nilai prefix yang dibatasi. Apabila saat pengecekan format alamat atau
129
prefix terdapat kesalahan, maka program akan memanggil fungsi hapusD() atau
hapusZ() yang berfungsi untuk menghapus file-file sementara yang telah
terbentuk. Untuk membedakan masukan alamat/prefix baru untuk server atau host,
dengan memberikan perintah kondisi “if(open(test,"$DIR/DNS"))” yang akan
melakukan pengecekan status file dengan nama DNS ada atau tidak. Jika file DNS
ada, maka input alamat/prefix baru adalah masukan untuk server.
Selanjutnya, jika format alamat/prefix tidak ada kesalahan program akan
memproses pembuatan file ipLama, pfxLama, ipBaru, dan pfxBaru dengan bentuk
perintah seperti berikut:
system("echo '$ipL' > $DIR/ipLama"); system("echo '$prfxL' > $DIR/pfxLama"); system("echo '$ipB' > $DIR/ipBaru"); system("echo '$prfxB' > $DIR/pfxBaru");
Setelah proses pembuatan selesai, program akan melanjutkan proses
dengan memanggil program ReIPL.pl dengan bentuk perintah, sebagai berikut :
system("./ReIPL.pl $ipL $prfxL $ipB $prfxB");
4.4.3.2.2. Program ReIPL.pl untuk Ubah Alamat/Prefix Server dan Host
Fungsi dari program ini adalah untuk membentuk alamat IPv6 lama
dengan format terbalik (reverse) dan memotong alamat dengan menggunakan
batasan nilai prefix baru baik untuk server maupun host. Setelah proses
pembalikan dan pemotongan selesai program ini akan membuatkan file dengan
nama depanLama dan belakangLama. Proses kerja program sama dengan proses
kerja dari program reSRV.pl
4.4.3.2.3. Program ReIPB.pl untuk Ubah Alamat/Prefix Server dan Host
130
Fungsi dari program ini adalah untuk membentuk alamat IPv6 baru dengan
format terbalik (reverse) dan memotong alamat dengan menggunakan batasan
nilai prefix baru baik untuk server maupun host. Setelah proses pembalikan dan
pemotongan selesai program ini akan membuatkan file dengan nama depanBaru
dan belakangBaru. Proses kerja program sama dengan proses kerja dari program
reSRV.pl.
4.4.3.2.4. Program EditIP6.sh untuk Ubah Alamat/Prefix Server dan Host
Fungsi dari program ini adalah proses menggantikan alamat/prefix lama
dengan alamat/prefix baru, baik untuk server ataupun host. Proses untuk ubah
alamat/prefix lama dan baru ini, hampir menyerupai proses pada program
EditNama6.sh untuk mengubah nama.
Perbedaan dari program EditIP6.sh dengan EditNama6.sh adalah
penambahan perintah “awk” yang akan membantu pencarian pola dengan perintah
“sed”. Karena pada file-file tertentu, sebuah nama server ataupun host memiliki
dua buah model penulisan alamat.
Berikut adalah potongan program untuk menggantikan alamat IPv6 pada
beberapa file server:
TMPE=/var/tmp/EDIT; TMPVar=/var/tmp Var=/var/named; Etc=/etc; If [[ -f $TMPE/HOST ]] then ipL=`awk '{print $1}' $TMPE/ipLama`; blkgL=`awk '{print $1}' $TMPE/belakangLama` ipB=`awk '{print $1}' $TMPE/ipBaru`; ... ... blk=`awk '/'$host'/{print NR}' $TMPE/rev.$namaZ.arpa` let buntut=$blk sed $buntut"s/$blkgL/$blkgB/" $Var/rev."$namaZ".arpa
131
> $TMPE/rev."$namaZ".arpa mv $TMPE/rev."$namaZ".arpa $Var ... ... else ipL=`awk '{print $1}' $TMPE/ipLama`; dpnL=`awk '{print $1}' $TMPE/depanLama` ipB=`awk '{print $1}' $TMPE/ipBaru`; dpnB=`awk '{print $1}' $TMPE/depanBaru` pfxL=`awk '{print $1}' $TMPE/pfxLama`; pfxB=`awk '{print $1}' $TMPE/pfxBaru` ... ... cariD=`awk '/NS/{print NR}' $Var/f-$namaD` let a=$cariD+1; let b=$cariD+2 sed $a,$b"s/$ipL/$ipB/" $Var/f-"$namaD" > $TMPE/f-"$namaD" mv $TMPE/f-"$namaD" $Var ... ... rm $TMPE/belakangBaru; rm $TMPE/pfxBaru; rm $TMPE/"$namaD" exit 0 fi
Dari potongan program diatas dapat dijelaskan untuk proses kerja untuk
mengubah alamat lama server dengan alamat baru akan dilakukan pada file f-
forward server.
Pada awal program adalah inisialisasi direktori, kemudian program akan
memproses kondisi “if [[ -f $TMPE/HOST ]]” yang mempunyaii arti jika pada
direktori TMPE terdapat file HOST maka program akan memproses bagian
tersebut. Namun, jika kondisi tidak terpenuhi maka program akan memproses
kondisi else yang berarti akan melakukan perubahan alamat lama dengan alamat
baru untuk server.
Proses pertama kali yang dilakukan pada kondisi else adalah membaca isi
file-file sementara yang berada pada direktori TMPE dengan perintah “awk”
karena proses tersebut berfungsi untuk membuat variabel-variabel, seperti variabel
132
$ipL, $pfxL, $ipB, pfxB dan variabel lainnya yang dibutuhkan untuk mengubah
alamat server.
Setelah variabel-variabel telah terbentuk maka proses selanjutnya adalah
memanfaatkan variabel cariD untuk mencari posisi baris dan pencocokan pola
karakter “NS” pada file “f-$namaD” dapat dilakukan dengan menggunakan
perintah “`awk '/NS/{print NR}' $Var/f-$namaD`”. Pada proses pencocokan
pola yang dipilih adalah karakter “NS” karena karakter tersebut hanya tedapat satu
(unik) di tiap-tiap file forward, serta berhubungan dengan nama server dan dua
baris dibawahnya diikuti dengan alamat. Berikut bentuk contoh potongan file
forward untuk mencari regular expression yang telah ditentukan:
… … 1W ; expiry 1D ) ; minimum IN NS ns.yahoo.com. IN AAAA 2002:444::abcd:10a IN A6 0 2002:444::abcd:10a www IN AAAA 2002::abcd:10a IN A6 0 2002::abcd:10a … …
Setelah posisi baris diketahui maka nilai posisi akan dimasukkan pada
variabel $a dan $b dengan menggunakan perintah “let a=$cariD+1; let b=$cariD+2”,
karena server memiliki dua model alamat pada satu baris dibawah pola “NS” dan
baris berikutnya. Maka nilai dari $cariD ditambahkan satu untuk variabel $a dan
untuk variabel $b akan ditambahkan dua. Setelah nilai $a dan $b telah sesuai
dengan kedua posisi alamat server, maka program melanjutkan dengan melakukan
perintah sed $a,$b"s/$ipL/$ipB/" $Var/f-"$namaD" > $TMPE/f-"$namaD" untuk
133
mengubah alamat pada baris yang telah ditentukan dan dilanjutkan dengan
pembuatan file dengan nama yang sama pada direktori TMPE.
Karena hasil pengubahan masih berada di direktori TMPE, maka perintah
berikutnya adalah memindahkan file tersebut ke direktori $Var untuk menimpa file
yang lama. Proses terakhir dari program adalah menghapus file-file yang ada di
direktori TMPE.
Untuk proses mengubah alamat/prefix host juga mempunyai proses kerja
yang sama dengan proses mengubah alamat/prefix untuk server. Hanya isi file-file
yang perlu diubah tidak sebanyak file-file server.
4.4.4. Proses Hapus Server dan Host
Proses hapus server dan host merupakan fasilitas dari program named6
memiliki fungsi untuk menghapus sebuah server DNS atau klien host DNS. Untuk
penghapusan klien atau server ini akan dilakukan berdasar pada nama klien host
atau server DNS yang ingin dihapus. Fungsi ini akan dibedakan bentuk perintah
atau sintak untuk menghapus klien host atau server DNS. Hal ini dilakukan karena
klien DNS akan berada didalam sebuah file server DNS, sehingga memerlukan
beberapa perlakuan pada file server DNS tersebut. Sedangkan untuk menghapus
server DNS dapat langsung menghapus file-file server tapa mengecek isi klien-
klien host yang terdapat didalamnya. Berikut bentuk kode program yang dimiliki
dari fungsi hapus pada program named6:
hapus() { if [[ $isi2 == "" || $isi2 == "help" ]] then
134
. $helpD elif [[ $isi2 == -DNS && $isi3 != "" ]] then if [[ -d $TMPE ]] then if [[ -f $Var/f-"$isi3" ]] then echo "$isi3" > $TMPVar/DNS ./delete6.sh exit 0 else echo; echo "Nama Domain: $isi3 Tidak Ada !!!"; echo exit 0 fi elif [[ -f $Var/f-"$isi3" ]] then mkdir $TMPE; echo "$isi3" > $TMPVar/DNS ./delete6.sh exit 0 else echo; echo "Nama Domain: $isi3 Tidak Ada !!!"; echo exit 0 fi elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -Z && $isi5 != "" ]] then cekH=`awk '/'$isi3'/{print $1}' $TMPVar/$isi5` if [[ -d $TMPE && -f $Var/f-"$isi5" && "$isi3" == "$cekH" ]] then echo "$isi3" > $TMPVar/host; echo "$isi5" > $TMPVar/zona ./delete6.sh exit 0 elif [[ -f $Var/f-"$isi5" ]] then cekH=`awk '/'$isi3'/{print $1}' $TMPVar/$isi5` if [[ "$isi3" == "$cekH" ]] then mkdir $TMPE; echo "$isi3" > $TMPVar/host; echo "$isi5" >> $TMPVar/zona ./delete6.sh …..lanjutan program di halaman berikutnya exit 0 else echo; echo "Nama Host: $isi3 Tidak Ada !!!"; echo fi else echo; echo "Nama Host: $isi3 atau Nama Domain: $isi5 Tidak Ditemukan !!!";
echo fi else echo; echo "File Server belum di buat !!!"; echo . $helpD fi }
135
Dari potongan program diatas dapat dilihat bentuk perintah yang dapat
digunakan untuk menghapus server atau host klien DNS. Untuk menghapus server
dapat digunakan perintah yang telah dibatasi dengan kondisi “elif [[ $isi2 == -DNS
&& $isi3 != "" ]]”, sedangkan perintah untuk menghapus host klien dapat digunakan
perintah “elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -Z && $isi5 != "" ]]”. Setelah
kondisi terpenuhi, maka program akan melakukan pengecekan direktori $TMPE
yang digunakan untuk melakukan proses-proses penghapusan file ataupun isi dari
file.
Apabila direktori $TMPE telah ada, program akan menyeleksi kondisi
perintah penghapusan selanjutnya akan dilakukan untuk server atau host klien.
Karena proses penghapusan untuk server dan host klien akan dibedakan dalam
pemanfaatan file saat proses terjadi pada program delete6.sh. Untuk menghapus
server akan memanfaatkan file bernamakan DNS dengan isi nama server yang
akan dihapus. Sedangkan untuk host klien akan memanfaatkan file bernamakan
host dengan isi nama host klien yang akan dihapus.
4.4.4.1. Program delete6.sh untuk Hapus Server dan Host
Program delete6.sh berfungsi untuk menghapus server mempunyai proses
kerja yang sama dengan program EditIP6.sh yang telah dijelaskan sebelumnya.
Perbedaan pada fungsi hapus ini adalah saat menghapus sebuah server, maka file-
file yang berkaitan dengan nama server tersebut akan dihapus dari direktori $Var
dan untuk file-file sistem seperti named.root6, named.conf dan resolv.conf, hanya
136
akan menghapus sesuai nama server yang diinginkan dengan memanfaatkan
perintah “awk” dan “sed”. Berikut potongan program delete6.sh untuk menghapus
server :
if [[ -f $TMPVar/DNS ]] then domain=`awk '{print $1}' $TMPVar/DNS` delN=`awk '/'$domain'/{print NR}' $Etc/named.conf`; let N1=$delN; let N2=$N1+17 sed "$N1,$N2"d $Etc/named.conf > $TMPE/named.conf; mv $TMPE/named.conf $Etc
... ...
rm $Var/f-"$domain"; rm $Var/rev."$domain".arpa; rm $Var/rev."$domain".int rm $TMPVar/"$domain"; rm $TMPVar/DNS exit 0 else
... ...
Sedangkan untuk menghapus host klien hanya memanfaatkan file-file
server yang ada pada direktori $Var. Proses untuk menghapus host klien sama
dengan proses menghapus server.
4.4.5. Proses Tampil
Proses tampil adalah fasilitas yang diberikan dari program named6 pada
fungsi tampil() untuk menampilkan nama server beserta klien-klien yang dimiliki
oleh sebuah server DNS. Proses fungsi tampil() akan bermanfaat saat seorang
administrator akan melakukan perubahan (edit) atau penghapusan server maupun
host. Proses tampil dapat dilakukan dengan tiga model perintah atau sintak. Untuk
perintah named6 view Zone akan menampilkan isi file named.conf pada direktori
/etc. Perintah named6 view –List6 disertai dengan nama domain, akan
menampilkan isi daftar nama dan alamat IPv6 untuk klien dan server dari file
137
sementara pada direktori /var/named. Perintah named6 view –File6 (nama
domain) Forward atau Reverse, akan menampilkan file forward atau reverse yang
dimiliki sebuah zona domain. Berikut bentuk kode program yang dimiliki kode
program fungsi tampil pada program named6:
tampil() { if [[ $isi2 == "" || $isi2 == "help" ]] then . $helpV elif [[ $isi2 == Zone && $isi3 == "" ]] then cek=`awk '$1 != 0 {print NR}' $Etc/named.conf` awk 'NR == 13, NR == $cek {print}' $Etc/named.conf |more exit 0 elif [[ $isi2 = -File6 && $isi3 != "" && $isi4 != "" ]] then if [[ $isi4 = Forward ]] then if [[ -f $Var/f-"$isi3" ]] then tail -n 1000 $Var/f-"$isi3" | more exit 0 else echo; echo "File Zona Forward DNS Tidak Ditemukan !!!"; echo exit 0 fi elif [[ $isi4 = Reverse ]] then if [[ -f $Var/rev."$isi3".arpa ]] then tail -n 1000 $Var/rev."$isi3".arpa | more exit 0 else echo; echo "File Zona Reverse DNS Tidak Ditemukan !!!"; echo fi fi elif [[ $isi2 = -List6 && $isi3 != "" ]] then if [[ -f $TMPVar/"$isi3" ]] then echo; echo " ==================================================" echo " || Server/Host || IPv6 / Prefix ||" echo " =================================================="; echo echo awk '/'$isi3'/{print "\t "$1,"\t\t" $2"/"$3}' $TMPVar/$isi3 cek=`awk '$1 != 0 {print NR}' $TMPVar/$isi3` if [[ $cek > "1" ]]
138
then echo " |" echo awk 'NR == 2, NR == $cek {print "\t | --> "$1,"\t"$2"/"$3"\n\t " echo fi else echo; echo "File Domain: $isi3 Tidak Ada !!!"; echo fi exit 0 else . $helpV fi }
Dari potongan progam diatas, fungsi tampil memiliki tiga buah model
untuk menampilkan file-file yang berhubungan dengan sistem dan file server.
Fungsi tampil ini akan membantu administrator saat akan mengubah (edit) atau
menghapus (delete) sebuah file server atau host klien.
Untuk perintah -Zona akan menampilkan zona-zona yang berada di dalam
file named.conf yang menggunakan perintah “awk” dan “more”, sebagai berikut :
cek=`awk '$1 != 0 {print NR}' $Etc/named.conf` awk 'NR == 13, NR == $cek {print}' $Etc/named.conf |more
Untuk perintah –File6 [nama domain] Forward akan menampilkan isi dari
file forward sebuah server dengan menggunakan perintah “tail” dan “more”,
sebagai berikut:
tail -n 1000 $Var/rev."$isi3".arpa | more
Untuk perintah –List6 [nama domain] akan menampilkan isi dari file
sementara sebuah server dengan menggunakan perintah “awk” yang dimanfaatkan
untuk menghiutng baris, sehingga dapat menampilkan ke bentuk yang ada,
sebagai berikut:
139
awk '/'$isi3'/{print "\t "$1,"\t\t" $2"/"$3}' $TMPVar/$isi3 cek=`awk '$1 != 0 {print NR}' $TMPVar/$isi3` if [[ $cek > "1" ]] then echo " |" echo awk 'NR == 2, NR == $cek {print "\t | --> "\t"$2"/"$3"\n\t " echo fi
BAB VI
KESIMPULAN DAN SARAN
Pada bab ini adalah akhir dari penulisan skripsi ini dicantumkan beberapa
kesimpulan dan saran-saran dari beberapa hal yang terkait dengan komponen
jaringan IPv6 dan pengembangan tools untuk layanan named dari program BIND
pada server DNS berbasis alamat IPv6, berdasarkan komposisinya dari bab-bab
sebelumnya.
6.1. Kesimpulan
Dari implementasi sever DNS berbasis IPv6 dan pembuatan tools aplikasi
untuk protokol IPv6 dapat disimpulkan:
1. Sebuah komputer yang difungsikan sebagai server DNS dengan sistem
operasi Linux dan penggunaan servis named dari BIND versi 9.2.3 yang
menggunakan protokol IPv6 telah dapat diimplementasikan dalam sebuah
jaringan lokal berbasis IPv6 (tanpa protokol IPv4). Namun dalam
penerapannya, sebuah model konversi untuk pencarian dari alamat ke
nama (reverse) dengan format bitstring masih belum dapat
implementasikan sehingga untuk model konversi dengan format nibble
(bentuk lama) yang masih digunakan.
2. Pemberian nama untuk komputer server dank lien yang berada dalam
jaringan lokal telah dapat dilakukan. Namun, agar tiap klien dapat
mengenali server yang mewakilinya perlu dibuatkan file named.root6 pada
146
147
server DNS sebagai pengganti file cache (file untuk koneksi ke Root atau
backbone6).
3. Beberapa perintah yang telah mendukung, seperti perintah dig, host, ping6
dengan nama dan layanan server Web dengan penggunaan browser untuk
pemanggilan halaman dengan nama (http://[nama server Web]) atau
alamat IPv6 (http://[alamat IPv6]), secara keseluruhan telah dapat
dilakukan dari komputer klien dengan sistem operasi Linux.
4. Pada komputer klien dengan sistem operasi Windows hanya dapat
melakukan pencarian dengan penggunaan perintah ping6 dengan alamat
IPv6, karena perintah dig dan host hanya terdapat pada sistem operasi
Linux. Untuk layanan server Web dengan penggunaan browser untuk
pemanggilan halaman dengan nama atau alamat IPv6, tidak dapat
dilakukan dari browser bawaan Windows atau Internet Explorer 6. Tetapi
jika memiliki browser tambahan seperti Opera atau Mozilla, maka masih
dapat dilakukan dengan pemanggilan alamat IPv6 (http://[alamat IPv6]).
Hal ini disebabkan resolver yang dijalankan pada komputer dengan sistem
operasi Windows belum mendukung pencarian dengan menggunakan
alamat IPv6.
148
6.2. Saran
Saran yang dapat diberikan penulis dalam pengembangan tools aplikasi
yang telah mendukung IPv6 lebih lanjut:
1. Dalam tools aplikasi untuk server DNS ini telah terbentuk dengan baik,
namun untuk kode pemrograman masih terasa terlalu panjang karena
penggunaan dua model bahasa pemrograman, sehingga pemakaian untuk
tiap bahasa pemrograman yang ada dipisah. Maka penulis menyarankan
untuk pengembangan berikutnya digunakan dengan satu model bahasa
pemrograman saja.
2. Tools aplikasi ini hanya akan berjalan pada sistem operasi Linux yang
memanfaatkan aplikasi dari BIND versi 9.2.3 dengan servis named, maka
penulis menyarankan untuk mengembangkan tools yang telah ada dan
memanfaatkan aplikasi yang sama, karena sewaktu-waktu protokol IPv6
telah digunakan secara global, maka tools named6 untuk alamat IPv6 ini
suatu saat akan memerlukan pengembangan juga.
3. Saat ini telah terdapat varian-varian terbaru dari sistem operasi Linux dan
Windows, maka penulis berharap dilakukan kemabali perbandingan yang
lebih luas dalam penggunaan protokol IPv6 dan servis-servis lainnya yang
telah mendukungnya dengan varian sistem operasi yang terbaru dari Linux
dan Windows atau lainnya.
4. Karena tools named6 ini dibuat berbasis text-mode, diharapkan
pengembangan dari program berikutnya dapat berbasis GUI (Graphical
User Interface) atau berbasis web.
DAFTAR PUSTAKA
Stallings, William, “Komunikasi Data dan Komputer Jaringan Komputer”,
Salemba Teknika, 2002.
Susanto, Budi, “Unix & Pemrograman Script”, J&J Learning. Yogyakarta 2001.
Yuliardi, Rofiq, “Bash Sripting untuk Adminsitrasi Sistem Linux”, Elex Media
Komputindo, Jakarta 2003.
Haryanto, Steven, “REGEX Kumpulan Resep Pemrograman”, PCMedia Buku
Mini, 2004, Penerbit Dian Rakyat.
Taufan, Riza, “Teori dan Implementasi IPv6 - Protokol Internet Masa Depan”,
Elex Media Komputindo, Jakarta 2002.
Rahmat Rafiudin, “IPv6 Addresing”, Elex Media Komputindo, Jakarta 2005
Rudianto, Dudy, “Perl untuk Pemula”, Elex Media Komputindo, Jakarta 2003
http://www.bind9.net/Bv9ARM.ch09.html
http://h71000.www7.hp.com/doc/732final/6645/6645pro_005.html
http://mirrors.bieringer.de/Linux+IPv6-HOWTO
http://www.ilmukomputer.com/umum/wahidi/wahidi-ipv6.zip
LAMPIRAN
Program named6 #!/bin/bash #Program bantu setting DOMAIN NAME SYSTEM berbasis protokol IPv6 # dalam mesin Linux berbasis Text-Mode # # oleh # Fito Nathius Tatontos # ([email protected]) || ([email protected]) Etc=/etc; Var=/var/named TMPS=/var/tmp/SERVER; TMPH=/var/tmp/HOST; TMPE=/var/tmp/EDIT TMPVar=/var/tmp help=/etc/dns6/help/hlp_bantu6; helpA=/etc/dns6/help/hlp_add helpS=/etc/dns6/help/hlp_addS; helpH=/etc/dns6/help/hlp_addH helpE=/etc/dns6/help/hlp_edit; helpED=/etc/dns6/help/hlp_editD; helpEH=/etc/dns6/help/hlp_editH; helpD=/etc/dns6/help/hlp_del helpV=/etc/dns6/help/hlp_view isi1=$1; isi2=$2; isi3=$3; isi4=$4; isi5=$5 isi6=$6; isi7=$7; isi8=$8; isi9=$9 bantu() { if [[ $isi1 == help || $isi1 == "" ]] then . $help else echo "Perhatikan format penulisan !!!" fi } tambah() { if [[ $isi2 == help || $isi2 == "" ]] then $helpA elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" ]] then if [[ -d $TMPS ]] #=======TAMBAH NAMA SERVER then if [[ -f $Var/f-"$isi3" ]] then echo; echo "Nama Domain $isi3 Sudah Ada !!!"; echo else echo "$isi5" > $TMPS/ip; sed 's/[/]/ /' $TMPS/ip > $TMPS/ipku ip=`awk '{print $1}' $TMPS/ipku`; pfx=`awk '{print $2}' $TMPS/ipku`; echo "$isi3" > $TMPS/namaS; echo "$ip" > $TMPS/ipS; echo "$pfx" > $TMPS/pfxS if [[ $ip != "" && $pfx != "" ]] then echo "$isi3 $ip $pfx" > $TMPVar/"$isi3"; echo "1" > /proc/sys/net/ipv6/bindv6only
rm $TMPS/ip; rm $TMPS/ipku ./cekIP.pl $ip $pfx $isi3 exit 0 fi exit 0 fi else [[ -s $Etc/resolv.conf ]] mkdir $TMPS; mv $Etc/named.conf $Etc/named.conf~ echo "$isi5" > $TMPS/ip; sed 's/[/]/ /' $TMPS/ip > $TMPS/ipku ip=`awk '{print $1}' $TMPS/ipku`; pfx=`awk '{print $2}' $TMPS/ipku`; echo "$isi3" > $TMPS/namaS; echo "$ip" > $TMPS/ipS; echo "$pfx" > $TMPS/pfxS echo "1" > /proc/sys/net/ipv6/bindv6only; rm $TMPS/ip; rm $TMPS/ipku ./cekIP.pl $ip $pfx $isi3 exit 0 fi elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -ip6/prefix && $isi5 != "" && $isi6 = -Z && $isi7 != "" ]] then if [[ -d $TMPH && -f $Var/f-"$isi7" ]] #======TAMBAH NAMA KLIEN HOST then if cek=`grep $isi3 $TMPVar/$isi7` then echo; echo "Nama Host: $isi3 Sudah Ada Dalam Zona: $isi7";echo exit 0 else echo "$isi5" > $TMPH/ip; sed 's/[/]/ /' $TMPH/ip > $TMPH/ipku ip=`awk '{print $1}' $TMPH/ipku`; pfx=`awk '{print $2}' $TMPH/ipku`; echo "$isi3" > $TMPH/namaH; echo "$ip" > $TMPH/ipH echo "$pfx" > $TMPH/pfxH; echo "$isi7" > $TMPH/zonaH rm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7 exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then mkdir $TMPH; echo "$isi5" > $TMPH/ip; sed 's/[/]/ /' $TMPH/ip > $TMPH/ipku ip=`awk '{print $1}' $TMPH/ipku`; pfx=`awk '{print $2}' $TMPH/ipku`; echo "$isi3" > $TMPH/namaH; echo "$ip" > $TMPH/ipH echo "$pfx" > $TMPH/pfxH; echo "$isi7" > $TMPH/zonaH rm $TMPH/ip; rm $TMPH/ipku ./cekIP.pl $ip $pfx $isi3 $isi7 exit 0 else echo; echo "Zona DNS6: $isi7 Tidak Ditemukan !!!"; echo exit 0 fi else echo; echo "Perhatikan Format Penulisan !!!"; echo; $helpS; $helpH exit 0 fi } ubah() { if [[ $isi2 == help || $isi2 == "" ]]
then $helpE elif [[ $isi2 == -DNS && $isi3 != "" && $isi4 == -NN && $isi5 != "" ]] then #======== EDIT NAMA SERVER if [[ -f $Var/f-"$isi3" && -d $TMPE ]] then echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh exit 0 elif [[ -f $Var/f-"$isi3" ]] then mkdir $TMPE echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru ./EditNama6.sh exit 0 else echo; echo "Nama Domain Sever: $isi3, Tidak Ditemukan !!!"; . $helpED exit 0 fi elif [[ $isi2 == -H && $isi3 != "" && $isi4 == -NN && $isi5 != "" && $isi6 == -Z && $isi7 != "" ]] then #======== EDIT NAMA HOST if [[ -f $Var/f-"$isi7" && -d $TMPE ]] then if cek=`grep $isi7 $TMPVar/$isi7` then echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru echo "$isi7" > $TMPE/ZONA ./EditNama6.sh exit 0 else echo; echo "Nama Host: $isi3, Tidak Ada Dalam Zona: $isi7"; echo exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then if cek=`grep $isi7 $TMPVar/$isi7` then mkdir $TMPE echo "$isi3" > $TMPE/namaLama; echo "$isi5" > $TMPE/namaBaru echo "$isi7" > $TMPE/ZONA ./EditNama6.sh exit 0 else echo; echo "Nama Host: $isi3, Tidak Ada Dalam Zona: $isi7"; echo exit 0 fi else echo; echo "File DNS Tidak Ditemukan !!!"; $helpEH exit 0 fi elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix && $isi5 != "" && $isi6 == -DNS && $isi7 != "" ]] then #======= EDIT IP SERVER=============# if [[ -f $Var/f-"$isi7" && -d $TMPE ]]
then echo "$isi3" > $TMPE/ipL; sed 's/[/]/ /' $TMPE/ipL > $TMPE/ipLku ipLama=`awk '{print $1}' $TMPE/ipLku`; pfxLama=`awk '{print $2}' $TMPE/ipLku` echo "$isi5" > $TMPE/ipB; sed 's/[/]/ /' $TMPE/ipB > $TMPE/ipBku ipBaru=`awk '{print $1}' $TMPE/ipBku`; pfxBaru=`awk '{print $2}' $TMPE/ipBku` echo "$isi7" > $TMPE/DNS; nama=`awk '{print $1}' $TMPE/DNS` ipL=`awk '/'$nama'/{print $2}' $TMPVar/$nama` pfxL=`awk '/'$nama'/{print $3}' $TMPVar/$nama` if [[ $ipL == $ipLama && $pfxL == $pfxLama && $pfxBaru != $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo echo "Alamat IPv6 atau Prefix Baru == IPv6 atau Prefix Lama !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; rm $TMPE/DNS exit 0 fi elif [[ -f $Var/f-"$isi7" ]] then mkdir $TMPE echo "$isi3" > $TMPE/ipL; sed 's/[/]/ /' $TMPE/ipL > $TMPE/ipLku ipLama=`awk '{print $1}' $TMPE/ipLku`; pfxLama=`awk '{print $2}' $TMPE/ipLku`; echo "$isi5" > $TMPE/ipB; sed 's/[/]/ /' $TMPE/ipB > $TMPE/ipBku ipBaru=`awk '{print $1}' $TMPE/ipBku`; pfxBaru=`awk '{print $2}' $TMPE/ipBku`; echo "$isi7" > $TMPE/DNS; nama=`awk '{print $1}' $TMPE/DNS` ipL=`awk '/'$nama'/{print $2}' $TMPVar/$nama` pfxL=`awk '/'$nama'/{print $3}' $TMPVar/$nama` if [[ $ipL == $ipLama && $pfxL == $pfxLama && $pfxBaru != $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama exit 0 else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo echo "Alamat IPv6 atau Prefix Baru == IPv6 atau Prefix Lama !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku; rm $TMPE/DNS exit 0 fi else echo; echo "Nama Domain : $isi7 Tidak Ditemukan !!!"; echo fi elif [[ $isi2 == -ip6/prefix && $isi3 != "" && $isi4 == -Nip6/prefix && $isi5 != "" && $isi6 == -H && $isi7 != "" && $isi8 == -Z && $isi9 != "" ]] then #=================EDIT IP HOST=============# if [[ -f $Var/f-"$isi9" && -d $TMPE ]] then echo "$isi3" > $TMPE/ipL; echo "$isi5" > $TMPE/ipB; sed 's/[/]/ /' $TMPE/ipL > $TMPE/ipLku; sed 's/[/]/ /' $TMPE/ipB > $TMPE/ipBku ipLama=`awk '{print $1}' $TMPE/ipLku`; pfxLama=`awk '{print $2}' $TMPE/ipLku` ipBaru=`awk '{print $1}' $TMPE/ipBku`; pfxBaru=`awk '{print $2}' $TMPE/ipBku` echo "$isi7" > $TMPE/HOST; namaH=`awk '{print $1}' $TMPE/HOST` echo "$isi9" > $TMPE/ZONA; namaD=`awk '{print $1}' $TMPE/ZONA` cekH=`awk '/'$namaH'/{print $1}' $TMPVar/$namaD`
ipL=`awk '/'$namaH'/{print $2}' $TMPVar/$namaD`; pfxL=`awk '/'$namaH'/{print $3}' $TMPVar/$namaD` if [[ $namaH == $cekH && $ipLama == $ipL && $pfxLama == $pfxL && $pfxBaru != $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo echo "Alamat IPv6 atau Prefix Baru == IPv6 atau Prefix Lama !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku rm $TMPE/HOST; rm $TMPE/ZONA exit 0 fi elif [[ -f $Var/f-"$isi9" ]] then mkdir $TMPE echo "$isi3" > $TMPE/ipL; sed 's/[/]/ /' $TMPE/ipL > $TMPE/ipLku ipLama=`awk '{print $1}' $TMPE/ipLku`; pfxLama=`awk '{print $2}' $TMPE/ipLku`; echo "$isi5" > $TMPE/ipB; sed 's/[/]/ /' $TMPE/ipB > $TMPE/ipBku ipBaru=`awk '{print $1}' $TMPE/ipBku`; pfxBaru=`awk '{print $2}' $TMPE/ipBku`; echo "$isi7" > $TMPE/HOST; namaH=`awk '{print $1}' $TMPE/HOST` echo "$isi9" > $TMPE/ZONA; namaD=`awk '{print $1}' $TMPE/ZONA` cekH=`awk '/'$namaH'/{print $1}' $TMPVar/$namaD` ipL=`awk '/'$namaH'/{print $2}' $TMPVar/$namaD` pfxL=`awk '/'$namaH'/{print $3}' $TMPVar/$namaD` if [[ $namaH == $cekH && $ipLama == $ipL && $pfxLama == $pfxL && $pfxBaru != $pfxLama ]] then rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku ./cekIPB.pl $ipBaru $pfxBaru $ipLama $pfxLama else echo; echo "Alamat IPv6 atau Prefix Lama Tidak Sesuai !!!"; echo echo "Alamat IPv6 atau Prefix Baru == IPv6 atau Prefix Lama !!!"; echo rm $TMPE/ipL; rm $TMPE/ipLku; rm $TMPE/ipB; rm $TMPE/ipBku rm $TMPE/HOST; rm $TMPE/ZONA exit 0 fi else echo; echo "Nama Domain6 : $isi9 Tidak Ditemukan !!!"; $helpEH; echo fi else echo; echo "Perhatikan Format Penulisan !!!" $helpE echo "Gunakan command:= named6 view untuk cek list Nama & IP"; echo fi } hapus() { if [[ $isi2 == "" || $isi2 == "help" ]] then . $helpD elif [[ $isi2 == "-DNS" && $isi3 != "" ]] #===========HAPUS NAMA SERVER then if [[ -d $TMPE ]]
then if [[ -f $Var/f-"$isi3" ]] then echo "$isi3" > $TMPVar/DNS ./delete6.sh exit 0 else echo; echo "Nama Domain Server: $isi3 Tidak Ditemukan !!!"; echo exit 0 fi elif [[ -f $Var/f-"$isi3" ]] then mkdir $TMPE; echo "$isi3" > $TMPVar/DNS ./delete6.sh exit 0 else echo; echo "Nama Domain Server: $isi3 Tidak Ditemukan !!!"; echo exit 0 fi elif [[ $isi2 == "-H" && $isi3 != "" && $isi4 == -Z && $isi5 != "" ]] then #===========HAPUS NAMA HOST cekH=`awk '/'$isi3'/{print $1}' $TMPVar/$isi5` if [[ -d $TMPE && -f $Var/f-"$isi5" && "$isi3" == "$cekH" ]] then echo "$isi3" > $TMPVar/host; echo "$isi5" > $TMPVar/zona ./delete6.sh exit 0 elif [[ -f $Var/f-"$isi5" && "$isi3" == "$cekH" ]] then mkdir $TMPE; echo "$isi3" > $TMPVar/host; echo "$isi5" > $TMPVar/zona ./delete6.sh exit 0 else echo; echo "Nama Host: $isi3 atau Nama Domain: $isi5 Tidak Ditemukan !!!"; echo fi else echo; echo "File Server belum di buat !!!"; echo . $helpD fi } tampil() { if [[ $isi2 == "" || $isi2 == "help" ]] then . $helpV elif [[ $isi2 == Zone && $isi3 == "" ]] then #============TAMPIL FILE NAMED.CONF echo cek=`awk '$1 != 0 {print NR}' $Etc/named.conf` awk 'NR == 13, NR == $cek {print}' $Etc/named.conf |more exit 0 elif [[ $isi2 = -File6 && $isi3 != "" && $isi4 != "" ]] then #============TAMPIL FILE FORWARD SERVER if [[ $isi4 = Forward ]]
then if [[ -f $Var/f-"$isi3" ]] then tail -n 1000 $Var/f-"$isi3" | more #tampilkan baris dari bawah exit 0 else echo; echo "File Zona Forward DNS Tidak Ditemukan !!!"; echo exit 0 fi elif [[ $isi4 = Reverse ]] then #============TAMPIL FILE REVERSE SERVER if [[ -f $Var/rev."$isi3".arpa ]] then tail -n 1000 $Var/rev."$isi3".arpa | more #tampilkan baris dari bawah exit 0 else echo; echo "File Zona Reverse DNS Tidak Ditemukan !!!"; echo fi fi elif [[ $isi2 = -List6 && $isi3 != "" ]] then #============TAMPIL FILE TEMPORARY SERVER if [[ -f $TMPVar/"$isi3" ]] then echo; echo " ========================================================" echo " || Server/Host || IPv6 / Prefix |" echo " ========================================================"; echo awk '/'$isi3'/{print "\t "$1,"\t\t" $2"/"$3}' $TMPVar/$isi3 cek=`awk '$1 != 0 {print NR}' $TMPVar/$isi3` if [[ $cek > "1" ]] then echo " |" echo awk 'NR == 2, NR == $cek {print "\t | --> "$1,"\t"$2"/"$3"\n\t " }' $TMPVar/$isi3 echo fi else echo; echo "File Domain: $isi3 Tidak Ditemukan !!!"; echo fi exit 0 else . $helpV fi } mulai() { . /sbin/service named start } ulang() { . /sbin/service named restart }
berhenti() { . /sbin/service named stop } stat() { . /sbin/service named status } case $isi1 in add) tambah;; edit) ubah;; delete) hapus;; "view") tampil;; help) bantu;; "") bantu;; start) mulai;; restart) ulang;; stop) berhenti;; status) stat;; esac exit 0 Program cekIP.pl #!/usr/bin/perl $ip = $ARGV[0]; $prfx = $ARGV[1]; $nama = $ARGV[2]; $zona = $ARGV[3]; $DIRS ="/var/tmp/SERVER"; $DIRH ="/var/tmp/HOST"; sub hapusS { system("rm $DIRS/namaS"); system("rm $DIRS/ipS"); system("rm $DIRS/pfxS"); } sub hapusH { system("rm $DIRH/namaH"); system("rm $DIRH/ipH"); system("rm $DIRH/pfxH"); system("rm $DIRH/zonaH"); } @prefix = (16, 32, 48, 64, 80, 96, 112); if($ip !~ /[G-Z]|[g-z]/ && $ip !~ /^(?>(.*?){1}):/ && $ip !~ /(?>(.*?){1}):::/ && $ip !~ /(?>(.*?){1})[;]/ && $ip !~ /(?>(\.*?\.){1})/) { if ($ip eq "::1") { print "\nMessage 4 ==> Anda memasukkan Alamat Loopback !!!\n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } } else { $kar= length($ip); #print "$kar\n\n"; for($z=0;$z<$kar;$z++) {
$awal=substr($ip,$z,1); if($awal eq ":"){$ok=1;} if($ok ne 1 ){$hitungx=$hitungx+$awal; } } if($hitungx eq 0) {$error=1;} for($i=0;$i<$kar;$i++) { $karak = substr($ip,$i,1); #untuk baca karakter ke i sebanyak 1 karakter $karak2 = substr($ip,$i+1,1); # untuk baca karakter stelah karakter i $ending= substr($ip,$kar-1,1);# untuk baca akhir karakter ":" $jadi="$karak$karak2"; # gabungan karakter i dan i+1 if($karak eq ":" && $karak2 ne ":"){$count=$count+1;$x=0;} if($ending eq ":") {$error=1;} if($jadi eq "::") {$cap=$cap+1; } if($karak ne ":") { $x=$x+1; if($x>4){$error=1;} } } if($cap<"1" && $count < 7 || $cap ==1 && $count > 6 ) { print "\nMessage 2 ==> Format Input alamat IPv6 SALAH!!! \n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } } elsif($cap=="2" || $error=="1" || $count > "7" ) { print "\nMessage 3 ==> Format INPUT alamat IPv6 SALAH!!!\n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } } else { $tes=@prefix; for ($x=0; $x<$tes;$x++) #########checking prefix { if($prfx == $prefix[$x]) { $pass = "1";} } if ($pass eq "1") { if(open(test,"$DIRH/zonaH")) { system("echo $nama $ip $prfx >> /var/tmp/$zona"); system("./ffwdHST.sh"); } else { system("echo $nama $ip $prfx > /var/tmp/$nama"); system("./ffwdSRV.sh"); } } else { print "Perhatikan Format Prefix !!!\n"; print "Gunakan Prefix : 16, 32, 48, 64, 80, 96, 112\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); }
else { hapusS(); } } } } } else { print "\nMessage 1 ==> Format INPUT alamat IPv6 SALAH!!!\n\n"; if(open(test,"$DIRH/zonaH")){ hapusH(); } else { hapusS(); } } Program ffwdSRV.sh #!/bin/bash TMPS=/var/tmp/SERVER; Var=/var/named; Etc=/etc namaS=`awk '{print $1}' $TMPS/namaS`; ipS=`awk '{print $1}' $TMPS/ipS` pfxS=`awk '{print $1}' $TMPS/pfxS` revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." ptrlocal="1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR localhost." cek=`awk '/'$namaS'/{print $2}' $Etc/resolv.conf` if [[ -s $Etc/resolv.conf ]] then #================Tambah file named.root================== echo ". 3600000 IN NS $namaS. $namaS. 3600000 IN AAAA $ipS $namaS. 3600000 IN A6 0 $ipS " >> $Var/named.root6 #=================Tambah file MASTER6===================== echo "\$ORIGIN $namaS. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.$namaS. IN AAAA $ipS IN A6 0 $ipS " > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS exit 0 else #================Buat file named.local==================== echo "\$ORIGIN $revlocal \$TTL 86400 @ IN SOA localhost. root.localhost. ( 2005402170; serial 3H ; refresh
15M ; retry 1W ; expiry 1D ) ; minimum IN NS localhost. $ptrlocal" > $Var/named6.local #==============Buat file localhost6.zone============== echo "\$ORIGIN localhost. \$TTL 86400 @ IN SOA localhost. root.localhost. ( 2005402170; serial 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS localhost. IN AAAA ::1 IN A6 0 ::1" > $Var/localhost6.zone #==================Buat file named.root================== echo ". 3600000 IN NS $namaS. $namaS. 3600000 IN AAAA $ipS $namaS. 3600000 IN A6 0 $ipS " > $Var/named.root6 #===================Buat file MASTER6==================== echo "\$ORIGIN $namaS. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns.$namaS. IN AAAA $ipS IN A6 0 $ipS " > $Var/f-"$namaS" ./reSRV.pl $ipS $pfxS exit 0 fi Program ffwdHST.sh #!/bin/bash TMPH=/var/tmp/HOST; TMPVar=/var/tmp Var=/var/named zoneH=`awk '{print $1}' $TMPH/zonaH` namaH=`awk '{print $1}' $TMPH/namaH` ipH=`awk '{print $1}' $TMPH/ipH` pfxH=`awk '{print $1}' $TMPH/pfxH`
#============Tambah Host========================== echo "$namaH IN AAAA $ipH IN A6 0 $ipH " >> $Var/f-"$zoneH" ./reHST.pl $ipH $pfxH exit 0 Program reSRV.pl #!/usr/bin/perl $ipS = $ARGV[0]; $prfxS = $ARGV[1]; #####################PENDEFINISIAN nilai prfx; if ($prfxS == "16") { $nilai=0; $nilai2=1 } if ($prfxS == "32") { $nilai=1; $nilai2=2;} if ($prfxS == "48") { $nilai=2; $nilai2=3;} if ($prfxS == "64") { $nilai=3; $nilai2=4;} if ($prfxS == "80") { $nilai=4; $nilai2=5;} if ($prfxS == "96") { $nilai=5; $nilai2=6;} if ($prfxS == "112") { $nilai=6; $nilai2=7;} #cari "::" kemudian count kolom yg kurang $cari= length($ipS); for($i=0;$i<$cari;$i++) { $kar = substr($ipS,$i,1); $kar2 = substr($ipS,$i+1,1); $kar3 = substr($ipS,$i+2,1); if ($kar eq ":" && $kar2 ne ":") { $count=$count+1; } elsif($kar eq ":" && $kar2 eq ":") { $tempat=$tempat+1; if($kar3 ne "") { $count=$count+1; } } } if($tempat eq "1") { $hitung = 8 - ($count) ; # print "$hitung \n "; } if($hitung >= 0) { for($i=0;$i<$cari;$i++) { $kar=substr($ipS,$i,1); $kar2=substr($ipS,$i+1,1); if($kar ne ":")
{ $karakter="$karakter$kar" } elsif($kar eq ":" && $kar2 ne ":") { $karakter="$karakter:"; } elsif($kar eq ":" && $kar2 eq ":") { for($x=1;$x<=$hitung;$x++) { $enol="0000"; $karakter="$karakter:$enol"; } } } my $str2 = $karakter; @daftar= split(/:/,$str2); $count=$#daftar; for($i=0;$i<=$count;$i++) { if(length($daftar[$i]) == 4) {} #print "$daftar[$i]"; } if(length($daftar[$i]) == 3 && $i != 0) { $daftar[$i]= "0$daftar[$i]"; } #print "$daftar[$i]"; } if(length($daftar[$i]) == 2 && $i != 0) { $daftar[$i]= "00$daftar[$i]";} #print "$daftar[$i]"; } if(length($daftar[$i]) == 1 && $i != 0) { $daftar[$i]= "000$daftar[$i]";} #print "$daftar[$i]";} } # print "\n"; ##########################PENGESETAN nilai pemotongan IPv6 bagian depan $itung=$nilai; for($j=0;$j<=$itung;$j++) { $awal="$awal$daftar[$j]"; } $panjang = length($awal); for($i=$panjang; $i>=0;$i--) { $temp=substr($awal,$i,1); if($i==$panjang-1) { $depan="$temp"; } else { $depan="$depan.$temp"; } } system("echo $depan > /var/tmp/SERVER/depanS"); #######################PENGESETAN nilai pemotongan IPv6 bagian belakang $itung2=7; for($j2=$nilai2;$j2<=$itung2;$j2++) ######set NILAI2 di dalam For { $blkg="$blkg$daftar[$j2]"; } $panjang2 = length($blkg); for ($i2=$panjang2-1; $i2>=0;$i2--) { $temp2=substr($blkg,$i2,1);
if($i2==$panjang2-1) { $akhir="$temp2"; } else { $akhir="$akhir.$temp2"; } } system("echo $akhir > /var/tmp/SERVER/belakangS"); system("./reSRV.sh"); } Program reHST.pl #!/usr/bin/perl $ipH = $ARGV[0]; $prfxH = $ARGV[1]; #####################PENDEFINISIAN nilai prfx; if ($prfxH == "16") { $nilai=0; $nilai2=1 } if ($prfxH == "32") { $nilai=1; $nilai2=2;} if ($prfxH == "48") { $nilai=2; $nilai2=3;} if ($prfxH == "64") { $nilai=3; $nilai2=4;} if ($prfxH == "80") { $nilai=4; $nilai2=5;} if ($prfxH == "96") { $nilai=5; $nilai2=6;} if ($prfxH == "112") { $nilai=6; $nilai2=7;} #cari "::" kemudian count kolom yg kurang $cari= length($ipH); for($i=0;$i<$cari;$i++) { $kar = substr($ipH,$i,1); $kar2 = substr($ipH,$i+1,1); $kar3 = substr($ipH,$i+2,1); if ($kar eq ":" && $kar2 ne ":") { $count=$count+1; } elsif($kar eq ":" && $kar2 eq ":") { $tempat=$tempat+1; if($kar3 ne "") { $count=$count+1; } } } if($tempat eq "1") { $hitung = 8 - ($count) ; } if($hitung >= 0) { for($i=0;$i<$cari;$i++) { $kar=substr($ipH,$i,1); $kar2=substr($ipH,$i+1,1); if($kar ne ":") { $karakter="$karakter$kar" }
elsif($kar eq ":" && $kar2 ne ":") { $karakter="$karakter:"; } elsif($kar eq ":" && $kar2 eq ":") { for($x=1;$x<=$hitung;$x++) { $enol="0000"; $karakter="$karakter:$enol" ; } } } # print"$karakter\n"; my $str2 = $karakter; @daftar= split(/:/,$str2); $count=$#daftar; for($i=0;$i<=$count;$i++) { if(length($daftar[$i]) == 4) {} # print "$daftar[$i]"; if(length($daftar[$i]) == 3 && $i != 0) { $daftar[$i]= "0$daftar[$i]"; } # print "$daftar[$i]"; if(length($daftar[$i]) == 2 && $i != 0) { $daftar[$i]= "00$daftar[$i]"; } # print "$daftar[$i]"; if(length($daftar[$i]) == 1 && $i != 0) { $daftar[$i]= "000$daftar[$i]"; } # print "$daftar[$i]"; } ###################PENGESETAN nilai pemotongan IPv6 bagian belakang $itung2=7; for($j2=$nilai2;$j2<=$itung2;$j2++) ######set NILAI2 di dalam For { $blkg="$blkg$daftar[$j2]"; } $panjang2 = length($blkg); for ($i2=$panjang2-1; $i2>=0;$i2--) { $temp2=substr($blkg,$i2,1); if($i2==$panjang2-1) { $akhir="$temp2"; } else { $akhir="$akhir.$temp2"; } } system("echo '$akhir' > /var/tmp/HOST/belakangH"); system("./reHST.sh"); }
Program reSRV.sh #!/bin/bash TMPS=/var/tmp/SERVER Var=/var/named namaS=`awk '{print $1}' $TMPS/namaS` dpnS=`awk '{print $1}' $TMPS/depanS` blkgS=`awk '{print $1}' $TMPS/belakangS` #==========membuat file rev.ip6.arpa==================== echo "\$ORIGIN $dpnS.ip6.arpa. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( 42 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum IN NS ns.$namaS. $blkgS IN PTR ns.$namaS." > $Var/rev."$namaS".arpa #==========membuat file rev.ip6.int===================== echo "\$ORIGIN $dpnS.ip6.int. \$TTL 86400 @ IN SOA $namaS. root.$namaS. ( 42 ; Serial 3H ; Refresh 15M ; Retry 1W ; Expire 1D ) ; Minimum IN NS ns.$namaS. DNAME $dpnS.ip6.arpa." > $Var/rev."$namaS".int ./named-resolv.sh exit 0 Program reHST.sh #!/bin/bash Var=/var/named TMPH=/var/tmp/HOST zoneH=`awk '{print $1}' $TMPH/zonaH` namaH=`awk '{print $1}' $TMPH/namaH` #baca nama host blkgH=`awk '{print $1}' $TMPH/belakangH` #baca ip potong belakang echo "$blkgH IN PTR $namaH.$zoneH." >> $Var/rev."$zoneH".arpa rm $TMPH/namaH; rm $TMPH/ipH; rm $TMPH/pfxH rm $TMPH/belakangH; rm $TMPH/zonaH exit 0
Program named-resolv.sh #!/bin/bash TMPS=/var/tmp/SERVER; Etc=/etc; TMP=/var/tmp namaS=`awk '{print $1}' $TMPS/namaS` ipS=`awk '{print $1}' $TMPS/ipS` dpnS=`awk '{print $1}' $TMPS/depanS` revlocal="0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" inet="127.0.0.1 allow { localhost; } keys { rndckey; };" inet6="::1 allow { localhost; } keys { rndckeys; };" if [[ -f $Etc/named.conf ]] then if cek=`grep $namaS $Etc/named.conf` then echo echo "Nama Domain Sudah Ada" echo exit 0 else itung=`awk '/include/{print NR}' $Etc/named.conf` let x=$itung sed "$x"d $Etc/named.conf > $TMP/named.conf #=================Tambah file Zone=============== echo "zone \"$namaS\" IN { type master; file \"f-$namaS\"; allow-update { none;}; }; zone \"$dpnS.ip6.int\" IN { type master; file \"rev.$namaS.int\"; allow-update { none;}; }; zone \"$dpnS.ip6.arpa\" IN { type master; file \"rev.$namaS.arpa\"; allow-update { none;}; }; include \"/etc/rndc.key\";" >> $TMP/named.conf mv $TMP/named.conf $Etc/named.conf #===========Tambah File Resolver========== echo " nameserver $namaS search $ipS" >> $Etc/resolv.conf #========================================== rm $TMPS/namaS; rm $TMPS/ipS; rm $TMPS/pfxS rm $TMPS/depanS; rm $TMPS/belakangS exit 0 fi else
#=============Buat File Zone=============== echo "// generated by named-bootconf.pl options { directory \"/var/named\"; listen-on-v6 { any; }; }; controls { inet $inet inet $inet6 }; zone \".\" IN { type hint; file \"named.root6\"; }; zone \"localhost\" IN { type master; file \"localhost6.zone\"; allow-update { none; }; }; zone \"$revlocal\" IN { type master; file \"named6.local\"; allow-update { none;}; }; zone \"$namaS\" IN { type master; file \"f-$namaS\"; allow-update { none;}; }; zone \"$dpnS.ip6.int\" IN { type master; file \"rev.$namaS.int\"; allow-update { none;}; }; zone \"$dpnS.ip6.arpa\" IN { type master; file \"rev.$namaS.arpa\"; allow-update { none;}; }; include \"/etc/rndc.key\";" > $Etc/named.conf #===============buat File Resolver=============== echo "nameserver $namaS search $ipS" > $Etc/resolv.conf rm $TMPS/namaS; rm $TMPS/ipS; rm $TMPS/pfxS
rm $TMPS/depanS; rm $TMPS/belakangS; exit 0 fi Program EDITNama6.sh #!/bin/bash Var=/var/named; Etc=/etc TMPE=/var/tmp/EDIT; TMPVar=/var/tmp if [[ -f $TMPE/ZONA ]] then ########################-EDIT NAMA HOST-######################### zona=`awk '{print $1}' $TMPE/ZONA` namaL=`awk '{print $1}' $TMPE/namaLama` namaB=`awk '{print $1}' $TMPE/namaBaru` if [[ $namaB != $namaL ]] then sed "s/$namaL/$namaB/g" $Var/f-"$zona" > $TMPE/f-"$zona" mv $TMPE/f-"$zona" $Var sed "s/$namaL/$namaB/g" $Var/rev."$zona".arpa > $TMPE/rev."$zona".arpa mv $TMPE/rev."$zona".arpa $Var sed "s/$namaL/$namaB/g" $TMPVar/"$zona" > $TMPE/"$zona" mv $TMPE/"$zona" $TMPVar rm $TMPE/ZONA; rm $TMPE/namaLama; rm $TMPE/namaBaru; exit 0 else echo; echo "\"Nama Host Baru\" Sama Dengan \"Nama Host Lama\" !!!"; echo fi else ########################-EDIT NAMA DOMAIN-######################## namaL=`awk '{print $1}' $TMPE/namaLama` namaB=`awk '{print $1}' $TMPE/namaBaru` if [[ "$namaB" != "$namaL" ]] then sed "s/$namaL/$namaB/g" $Var/named.root6 > $TMPE/named.root6 mv $TMPE/named.root6 $Var sed "s/$namaL/$namaB/g" $Var/f-"$namaL" > $Var/f-"$namaB" rm $Var/f-"$namaL" sed "s/$namaL/$namaB/g" $Var/rev."$namaL".arpa > $Var/rev."$namaB".arpa rm $Var/rev."$namaL".arpa sed "s/$namaL/$namaB/g" $Var/rev."$namaL".int > $Var/rev."$namaB".int rm $Var/rev."$namaL".int sed "s/$namaL/$namaB/g" $Etc/resolv.conf > $TMPE/resolv.conf mv $TMPE/resolv.conf $Etc
sed "s/$namaL/$namaB/g" $Etc/named.conf > $TMPE/named.conf mv $TMPE/named.conf $Etc sed "s/$namaL/$namaB/g" $TMPVar/"$namaL" > $TMPVar/"$namaB" rm $TMPVar/"$namaL"; rm $TMPE/namaLama; rm $TMPE/namaBaru exit 0 else echo; echo "\"Nama Domain Baru\" Sama Dengan \"Nama Domain Lama\" !!!"; echo fi fi Program EditIP6.sh #!/bin/bash TMPE=/var/tmp/EDIT; TMPVar=/var/tmp Var=/var/named; Etc=/etc; if [[ -f $TMPE/HOST ]] then ipL=`awk '{print $1}' $TMPE/ipLama`; blkgL=`awk '{print $1}' $TMPE/belakangLama` ipB=`awk '{print $1}' $TMPE/ipBaru`; blkgB=`awk '{print $1}' $TMPE/belakangBaru` pfxL=`awk '{print $1}' $TMPE/pfxLama`; pfxB=`awk '{print $1}' $TMPE/pfxBaru` host=`awk '{print $1}' $TMPE/HOST`; namaZ=`awk '{print $1}' $TMPE/ZONA` cariH=`awk '/'$host'/{print NR}' $Var/f-$namaZ` lok=$cariH; sed $lok"s/$ipL/$ipB/" $Var/f-"$namaZ" > $TMPE/f-"$namaZ" cariH2=`awk '/'$host'/{print NR}' $TMPE/f-$namaZ` loka=$cariH2; let lokasi=$loka+1 sed $lokasi"s/$ipL/$ipB/" $TMPE/f-"$namaZ" > $Var/f-"$namaZ" blk=`awk '/'$host'/{print NR}' $Var/rev.$namaZ.arpa` let buntut=$blk sed $buntut"s/$blkgL/$blkgB/" $Var/rev."$namaZ".arpa > $TMPE/rev."$namaZ".arpa mv $TMPE/rev."$namaZ".arpa $Var backH=`awk '/'$host'/{print NR}' $TMPVar/$namaZ` let baris=$backH sed $baris"s/$ipL/$ipB/" $TMPVar/"$namaZ" > $TMPE/"$namaZ" sed $baris"s/$pfxL/$pfxB/" $TMPE/"$namaZ" > $TMPVar/"$namaZ" rm $TMPE/f-"$namaZ"; rm $TMPE/HOST; rm $TMPE/ZONA; rm $TMPE/ipLama rm $TMPE/depanLama; rm $TMPE/belakangLama; rm $TMPE/pfxLama; rm $TMPE/ipBaru rm $TMPE/depanBaru; rm $TMPE/belakangBaru; rm $TMPE/pfxBaru; rm $TMPE/"$namaZ" exit 0 else ipL=`awk '{print $1}' $TMPE/ipLama`; dpnL=`awk '{print $1}' $TMPE/depanLama` ipB=`awk '{print $1}' $TMPE/ipBaru`; dpnB=`awk '{print $1}' $TMPE/depanBaru`
pfxL=`awk '{print $1}' $TMPE/pfxLama`; pfxB=`awk '{print $1}' $TMPE/pfxBaru` blkgL=`awk '{print $1}' $TMPE/belakangLama` blkgB=`awk '{print $1}' $TMPE/belakangBaru` ##############cari letak baris ip6 dengan acuan "NS" #=> variable namaD u\ baca nama Domain dlm file DNS #=> variable cariD u\ cari posisi baris dlm f-$namaD dgn fasilitas "print NR" #=> perintah "sed" u\ mengubah variable yg akan ditukar #================EDIT IP PADA FILE NAMED.ROOT6======================== namaD=`awk '{print $1}' $TMPE/DNS`; root=`awk '/NS/{print NR}' $Var/named.root6` let x=$root+1 sed $x"s/$ipL/$ipB/" $Var/named.root6 > $TMPE/named.root6 root6=`awk '/NS/{print NR}' $TMPE/named.root6` let y=$root6+2 sed $y"s/$ipL/$ipB/" $TMPE/named.root6 > $Var/named.root6; rm $TMPE/named.root6 #==================== EDIT IP PADA FILE FORWARD======================= cariD=`awk '/NS/{print NR}' $Var/f-$namaD` let a=$cariD+1; let b=$cariD+2 sed $a,$b"s/$ipL/$ipB/" $Var/f-"$namaD" > $TMPE/f-"$namaD" mv $TMPE/f-"$namaD" $Var #================== EDIT IP PADA FILE REVERSE.ARPA & INT=============== sed "s/$dpnL/$dpnB/" $Var/rev."$namaD".int > $TMPE/rev."$namaD".int mv $TMPE/rev."$namaD".int $Var sed "s/$dpnL/$dpnB/" $Var/rev."$namaD".arpa > $TMPE/rev."$namaD".arpa mv $TMPE/rev."$namaD".arpa $Var sed "s/$blkgL/$blkgB/" $Var/rev."$namaD".arpa > $TMPE/rev."$namaD".arpa mv $TMPE/rev."$namaD".arpa $Var #================ EDIT IP PADA FILE NAMED.CONF & RESOLVER============ #cari letak baris pot. depan ip6 dgn acuan nama Zona "rev.$namaD.int & arpa" int=`awk '/rev.'$namaD'.int/{print NR}' $Etc/named.conf` let c=$int-2 sed $c"s/$dpnL/$dpnB/" $Etc/named.conf > $TMPE/named.conf arpa=`awk '/rev.'$namaD'.arpa/{print NR}' $TMPE/named.conf` let d=$arpa-2 sed $d"s/$dpnL/$dpnB/" $TMPE/named.conf > $Etc/named.conf rm $TMPE/named.conf search=`awk '/'$namaD'/{print NR}' $Etc/resolv.conf` let e=$search+1 sed $e"s/$ipL/$ipB/" $Etc/resolv.conf > $TMPE/resolv.conf mv $TMPE/resolv.conf $Etc #=================== EDIT IP PADA FILE BackUP========================== back=`awk '/'$namaD'/{print NR}' $TMPVar/$namaD` let f=$back sed $f"s/$ipL/$ipB/" $TMPVar/"$namaD" > $TMPE/"$namaD" sed $f"s/$pfxL/$pfxB/" $TMPE/"$namaD" > $TMPVar/"$namaD" #======================HAPUS FILE TEMP==============================
rm $TMPE/DNS; rm $TMPE/ipLama; rm $TMPE/depanLama; rm $TMPE/belakangLama rm $TMPE/pfxLama; rm $TMPE/ipBaru; rm $TMPE/depanBaru; rm $TMPE/belakangBaru; rm $TMPE/pfxBaru; rm $TMPE/"$namaD" exit 0 fi Program delete6.sh #!/bin/bash Var=/var/named; Etc=/etc TMPE=/var/tmp/EDIT; TMPVar=/var/tmp if [[ -f $TMPVar/DNS ]] ###############HAPUS FILE-FILE SERVER############# then domain=`awk '{print $1}' $TMPVar/DNS` delN=`awk '/'$domain'/{print NR}' $Etc/named.conf`; let N1=$delN; let N2=$N1+17 sed "$N1,$N2"d $Etc/named.conf > $TMPE/named.conf; mv $TMPE/named.conf $Etc delR=`awk '/'$domain'/{print NR}' $Etc/resolv.conf`; let R1=$delR; let R2=$R1+2 sed "$R1,$R2"d $Etc/resolv.conf > $TMPE/resolv.conf; mv $TMPE/resolv.conf $Etc delRoot=`awk '/'$domain'/{print NR}' $Var/named.root6`; let root1=$delRoot; let root2=$root1+3 sed "$root1,$root2"d $Var/named.root6 > $TMPE/named.root6; mv $TMPE/named.root6 $Var rm $Var/f-"$domain"; rm $Var/rev."$domain".arpa; rm $Var/rev."$domain".int rm $TMPVar/"$domain"; rm $TMPVar/DNS exit 0 else ###############HAPUS NAMA KLIEN PADA FILE SERVER############# host=`awk '{print $1}' $TMPVar/host`; zona=`awk '{print $1}' $TMPVar/zona` delH=`awk '/'$host'/{print NR}' $Var/f-$zona`; let H1=$delH; let H2=$H1+2 sed "$H1,$H2"d $Var/f-"$zona" > $TMPE/f-"$zona"; mv $TMPE/f-"$zona" $Var delZ=`awk '/'$host'/{print NR}' $Var/rev.$zona.arpa`; let Z1=$delZ; sed "$Z1"d $Var/rev."$zona".arpa > $TMPE/rev."$zona".arpa; mv $TMPE/rev."$zona".arpa $Var delB=`awk '/'$host'/{print NR}' $TMPVar/$zona`; let B=$delB sed "$B"d $TMPVar/"$zona" > $TMPE/"$zona"; mv $TMPE/"$zona" $TMPVar rm $TMPVar/host; rm $TMPVar/zona exit 0 fi