BAB VI KESIMPULAN DAN SARAN
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
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
Program named6
#!/bin/bash
#Program bantu setting DOMAIN NAME SYSTEM berbasis protokol IPv6 # dalam mesin Linux berbasis Text-Mode
#
# oleh # Fito Nathius Tatontos
# (ceng2_po@yahoo.com) || (gg_kretek@yahoo.com) 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
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 [[ -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 ]]
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`
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
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 ]]
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 }
. /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++)
}
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 {
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
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`
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 ":")
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--) {
{ $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" }
{ 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");
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
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
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
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