1. Rizal Paresmana
Eepis-its
rizal_p_it04@yahoo.com
Implementasi IPv6 pada FreeBSD
Pendahuluan
Alasan utama untuk mulai beralih ke IPv6 adalah terbatasnya ruang pengalamatan.
Pada masa sekarang ini bukan komputer saja yang terhubung ke internet namun
peralatan sehari-hari seperti telepon seluler, PDA, home appliances, dan sebagainya
juga terhubungkan ke internet, dapatkan anda bayangkan seberapa banyak alamat IP
yang dibutuhkan untuk menghubungkan semua itu ke internet.
Arsitektur IPv6
Header IPv6 didesain mempunyai lebih sedikit field dibandingkan dengan IPv4,
panjang header yang selalu tetap, dan fragmentasi yang terbatas pada paket IPv6 yang
terbatas akan membuat router menjadi lebih cepat dalam memproses paket IPv6.
Gambar 1. Header IPv6
2. Gambar 2. Header IPv4
Header IPv6 mempunyai panjang yang tetap sebesar 40 bytes. Fields dalam header
IPv6 dijelaskan sebagai berikut:
Field Version digunakan untuk menandai versi dari IP yang digunakan. Dalam
IPv6 field ini berisi angka 6. Panjang field ini 4 bit.
Field Traffic Class untuk menandai kelas atau prioritas dari paket IPv6. Ukuran
field ini 8 bit.
Field Flow Label untuk menandai bahwa paket tersebut dimiliki oleh urutan
spesifik tertentu dari paket IPv6 antara asal dan tujuan. Field ini digunakan
untuk aplikasi tertentu seperti aplikasi data real-time.
Field Payload Length untuk menandai panjang dari payload.
Field Next Header menandai tambahan header pertama jika ada atau jenis
protokol pada lapisan atas PDU (Protokol Data Unit).
Field Externsion Header digunakan untuk tambahan fungsionalitas yang
dibutuhkan seperti security dan sebagainya.
Field Hop Limit untuk menandai maksimum hop yang dapat digunakan oleh
IPv6 dalam lalu lintas internet.
Field Source Address digunakan untuk menyimpan alamat IPv6 dari host asal.
Ukuran field ini 128 bit.
Field Destination Adddress digunakan untuk menyimpan alamat IPv6 dari host
tujuan. Ukuran field ini 128 bit.
Mekanisme Transisi
Ada beberapa mekanisme transisi dari IPv4 ke IPv6. Berdasarkan draft IETF draft-ietf-
v6ops-mech-v2-00.txt Mekanisme tersebut adalah:
Dual IP layer
Tunneling
Dual IP layer adalah sebuah cara dimana host dan router secara lengkap mendukung
protokol IPv4 dan IPv6.
Tunneling adalah sebuah cara melakukan koneksi point-to-point dimana paket IPv6
ditumpangkan dalam header paket IPv4 melalui infrastruktur routing IPv4.
Pada praktiknya kedua hal tersebut bisa dilakukan secara bersama atau masing-masing
tergantung situasi setempat. Contohnya adalah bisa sebuah universitas belum
3. mempunyai jaringan yang mendukung IPv6 ke internet maka universitas tersebut harus
melakukan tunneling dahulu ke penyedia jaringan IPv6, baru kemudian menjalankan
teknik Dual IP Layer.
Beberapa teknik yang biasa digunakan untuk tunneling adalah 6over4 dan 6to4.
Gambar 3. Dual IP layer
Gambar 4. Enkapsulasi IPv6 – IPv4
Implementasi pada FreeBSD
Sistem Operasi FreeBSD mendukung dual stack (IPv4 dan IPv6 sekaligus) sehingga
ini sangat menguntungkan pada masa-masa transisi. Secara default IPv6 stack telah
terinstall pada sistem operasi FreeBSD, baik FreeBSD-4.x maupun FreeBSD-5.x,
selain itu aplikasi dasar pada FreeBSD juga sudah mendukung IPv6 seperti: ftp/ftpd,
ssh/sshd, telnet/telnetd, sendmail. Sedangkan aplikasi tambahan lainnya juga sudah
mendukung IPv6 yang dapat diinstall melalui mekanisme ports, seperti httpd-2.0,
4. thttpd, exim, courirer-imap, dan lain lain. Lebih lengkapnya dapat dilihat pada
halaman web: http://www.freebsd.org/ports/ipv6.html
Kernel FreeBSD
Meskipun secara default installasi awal FreeBSD-4.x atau FreeBSD-5.x sudah
mendukung IPv6, namun ada baiknya pembaca mengetahui options yang digunakan
pada konfigurasi kernel FreeBSD. Options yang perlu diperhatikan pada kernel
FreeBSD adalah:
OPTIONS INET6 #IPv6 communications protocols
OPTIONS IPSEC #IP Security
device gif #IPv6 and IPv4 tunneling
device stf #6to4 tunneling
Bagian yang lain mungkin dibutuhkan adalah firewall menggunakanipfw (8) namun
bila tidak dibutuhkan sebaiknya options berikut ini tidak dimasukkan dalam
konfigurasi kernel :
OPTIONS IPV6FIREWALL
OPTIONS IPV6FIREWALL_VERBOSE
OPTIONS IPV6FIREWALL_DEFAULT_TO_ACCEP
Kami menambahkan konfigurasi berikut dalam konfigurasi kernel :
ident IPV6 # sesuikan dengan nama kernel
device gif # IPv6 and IPv4 tunneling
device stf # 6to4 tunneling
options INET6 # IPV6 communications protocol
options IPSEC # IP Security
# option FIREWALL IPv6
options IPV6FIREWALL
options IPV6FIREWALL_VERBOSE
options IPV6FIREWALL_DEFAULT_TO_ACCEPT
# option FIREWALL IPv4
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_DEFAULT_TO_ACCEPT
Setelah konfigurasi kernel, perlu untuk mengedit file /etc/rc.conf sebagai berikut:
ipv6_enable = “YES”
Tunneling pada FreeBSD
Bila menggunakan 6over4 tunneling pada FreeBSD maka FreeBSD telah menyediakan
pseudo-device gif untuk keperluan ini. 6over4 disebut juga sebagai configured
tunneling. Disebut configured tunneling karena harus mendefinisikan alamat IPv4 dari
sisi client dan sisi ISP, selain itu juga harus mendefinisikan alamat IPv6 dari sisi client
dan sisi ISP. Untuk keperluan 6over4 ini penyedia tunnel atau disebut juga tunnel
broker antara lain:
http://www.freenet6.net
5. http://ipv6tb.he.net
Bila menggunakan 6to4 tunneling pada FreeBSD maka FreeBSD telah menyediakan
pseudo-device stf untuk keperluan 6to4. 6to4 disebut juga automatic tunneling
karena
sisi client cukup mengkonfigurasi alamat IPv6 nya sendiri lalu mencari router 6to4
publik yang terdapat di internet sebagai gateway. Menurut RFC 3056 alamat IPv6
untuk keperluan 6to4 ini adalah 2002::/16 dan untuk keperluan 6to4 ini alanat IPv4
client disisipkan dalam prefix 2002::/16 tersebut, sehingga notasinya adalah
2002:V4Adress::/48. Sebagai contoh bila alamat IPv4 adalah 167.205.25.15 maka
alamat IPv6 untuk keperluan 6to4 adalah: 2002:A7CD:190F::1, ::1 pada bit terakh ir
digunakan untuk mempermudah pengalamatan saja pada interface-id. A7CD190F
sendiri didapat dari konversi 167.205.25.15 kedalamhexadesimal. Daftar 6to4 router
publik dapat dilihat pada halaman web: http://www.kfu.com/~nsayer/6to4/
kami hanya akan mengimplementasikan 6over4 tunneling, untuk itu kita harus
mendaftar terlebih dahulu ke penyedia tunnel / tunnelbroker. Kami telah mendaftar di
http://ipv6tb.he.net dan mendapat account sebagai berikut :
Account: rizal
Tunnel Information:
Server IPv4 address: 64.71.128.83
Server IPv6 address: 2001:470:1F01:FFFF::17FE/127
Client IPv4 address: 202.154.185.12
Client IPv6 address: 2001:470:1F01:FFFF::17FF/127
Assigned /64: 2001:470:1F01:3171::/64
ASN: None
Last Ping6: none
Last Inbound Packet: Tue, Aug 22 9:20 pm PDT
Registration Date: Mon, Aug 21, 2006
Edit /etc/rc.conf
#usbd_enable=quot;YESquot;
sshd_enable=quot;YESquot;
named_enable=quot;YESquot;
network_interfaces=quot;autoquot;
hostname=quot;iwan.fbm.netquot;
ifconfig_lnc0=quot;inet 202.154.185.12 netmask 255.255.255.248quot;
ifconfig_lnc1=quot;inet 192.168.0.254 netmask 255.255.255.0quot;
defaultrouter=quot;202.154.185.9quot;
gateway_inable=quot;YESquot;
#inetd_enable=quot;YESquot;
firewall_enable=quot;YESquot;
firewall_script=quot;/etc/rc.firewallquot;
##Options IPv6
ipv6_enable=quot;YESquot;
ipv6_nerwork_interfaces=quot;autoquot;
ipv6_defaultrouter=quot;2001:470:1F01:FFFF::17FEquot;
ipv6_router_enable=quot;YESquot;
ipv6_router=quot;/usr/sbin/route6dquot;
ipv6_gateway_enable=quot;YESquot;
rtadvd_enable=quot;YESquot;
rtadvd_interfaces=quot;lnc1quot;
9. Perbandingan Hasil traceroute menggunakanIpv6 dan Ipv4
HOP yang dilalui dengan traceroute6 hanya diperlukan 10 hop, tetapi apabila menggunakan traceroute
dari IPv4 memerlukan 17 hop.
Implementasi DNS menngunakan Ipv6.
Konfigurasi /etc/namedb/named.conf
options {
directory quot;/etc/namedbquot;;
pid-file quot;/var/run/named/pidquot;;
dump-file quot;/var/dump/named_dump.dbquot;;
statistics-file quot;/var/stats/named.statsquot;;
// listen-on-v6 { 2001:470:1f01:3171::1;};
listen-on-v6 { any;};
// listen-on { 127.0.0.1; };
/*
forwarders {
127.0.0.1;
};
*/
};
zone quot;.quot; {
type hint;
file quot;named.rootquot;;
};
zone quot;0.0.127.IN-ADDR.ARPAquot; {
type master;
file quot;master/localhost.revquot;;
};
// RFC 3152
10. zone
quot;1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6
.ARPAquot; {
type master;
file quot;master/localhost-v6.revquot;;
};
// RFC 1886 -- deprecated
zone
quot;1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6
.INTquot; {
type master;
file quot;master/localhost-v6.revquot;;
};
zone quot;168.192.in-addr.arpaquot; {
type master;
file quot;master/fbm.revquot;;
};
zone quot;ipv6.fbm.netquot; {
type master;
file quot;master/ipv6.fbm.zonequot;;
};
zone quot;1.7.1.3.1.0.f.1.0.7.4.0.1.0.0.2.ip6.intquot;{
type master;
file quot;master/ipv6.fbm.revquot;;
allow-transfer{
none;
};
};
key quot;rndc-keyquot; {
algorithm hmac-md5;
secret quot;a0shZOJU9sXbGK3pEr2+3Q==quot;;
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { quot;rndc-keyquot;; };
};
# End of named.conf
/etc/namedb/master/ipv6.fbm.zone
$TTL 3600
@ IN SOA ipv6.fbm.net. root.ipv6.fbm.net. (
0609161300 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ipv6.fbm.net.
IN MX 10 mail.ipv6.fbm.net.
$ORIGIN ipv6.fbm.net.
ns IN A 192.168.0.254
ns IN AAAA 2001:470:1F01:3171::1
mail IN CNAME ns
www IN CNAME ns
11. /etc/namedb/master/ipv6.fbm.rev
$TTL 3600
@ IN SOA ipv6.fbm.net. root.ipv6.fbm.net. (
0609161300 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ipv6.fbm.net.
$ORIGIN 1.7.1.3.1.0.F.1.0.7.4.0.1.0.0.2.ip6.int.
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR ns.
/etc/namedb/master/fbm.rev
$TTL 3600
@ IN SOA ipv6.fbm.net. root.ipv6.fbm.net. (
0609161300 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS ipv6.fbm.net.
254.0 IN PTR ns.
edit file resolve
/etc/resolv.conf
domain ipv6.fbm.net
nameserver 202.154.185.12
nameserver 2001:470:1f01:3171::1
Pengujian DNS server
# /etc/rc.d/named start
Starting named.
# nslookup
> set type=any
> ns
Server: 202.154.185.12
Address: 202.154.185.12#53
Name: ns.ipv6.fbm.net
Address: 192.168.0.254
ns.ipv6.fbm.net has AAAA address 2001:470:1f01:3171::1
>
Implementasi WEB Server Ipv6 menggunakan Apache2
Ipv6 sudah didukung pada apache2 (www.apache.org ).
Installasi
# ./configure --prefix=/www --enable-module=most
# make && make install
Pengujian