Difference between revisions of "IPv6: Cek IPv6-ready test/debug program"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(5 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
==IPv6 ping== | ==IPv6 ping== | ||
+ | |||
+ | '''CATATAN:''' ping saat ini bisa digunakan untuk IPv6, tidak harus ping6. | ||
Program ini biasanya termasuk dalam paket iputils. Ini dirancang untuk melakukan test tranport sederhana dengan mengirimkan paket ICMPv6 echo-request dan menunggu paket ICMPv6 echo-reply. | Program ini biasanya termasuk dalam paket iputils. Ini dirancang untuk melakukan test tranport sederhana dengan mengirimkan paket ICMPv6 echo-request dan menunggu paket ICMPv6 echo-reply. | ||
Line 22: | Line 24: | ||
− | Contoh ping6 melalui interface br-lan mencoba | + | Contoh ping6 melalui interface br-lan mencoba menghubungi sebuah IPv6 Global |
ping6 -I br-lan 2001:470:36:ab6:fdaa:10b7:8fb1:7588 | ping6 -I br-lan 2001:470:36:ab6:fdaa:10b7:8fb1:7588 | ||
Line 42: | Line 44: | ||
* ping6 tidak bisa di execute dengan baik, biasanya kekurangan ijin root. Kita perlu menambahkan perintah | * ping6 tidak bisa di execute dengan baik, biasanya kekurangan ijin root. Kita perlu menambahkan perintah | ||
− | chmod u+s /usr/sbin/ping6 | + | chmod u+s /usr/sbin/ping6 |
==Menggunakan interface untuk IPv6 ping== | ==Menggunakan interface untuk IPv6 ping== | ||
Line 70: | Line 72: | ||
==Ping6 ke multicast address== | ==Ping6 ke multicast address== | ||
+ | |||
Cara yang menarik untuk mendeteksi mesin IPv6 yang aktif adalah dengan ping6 ke link-local all-node multicast address: | Cara yang menarik untuk mendeteksi mesin IPv6 yang aktif adalah dengan ping6 ke link-local all-node multicast address: | ||
# ping6 -I eth0 ff02::1 | # ping6 -I eth0 ff02::1 | ||
+ | # ping6 -I enp3s0 ff02::1 | ||
Akan keluar kira-kira: | Akan keluar kira-kira: | ||
Line 88: | Line 92: | ||
... dst ... | ... dst ... | ||
− | Tidak seperti IPv4, dimana ping ke broadcast address dapat di disable, saat ini di IPv6 perilaku ini tidak bisa di disable kecuali menggunakan firewall IPv6 lokal. | + | Tidak seperti IPv4, dimana ping ke broadcast address dapat di disable, saat ini di IPv6 perilaku ini tidak bisa di disable kecuali menggunakan firewall IPv6 lokal. |
==IPv6 traceroute6== | ==IPv6 traceroute6== | ||
Line 98: | Line 102: | ||
Hasilnya kira-kira: | Hasilnya kira-kira: | ||
− | traceroute to | + | traceroute to (2404:6800:4003:804::200e) from 2001:0:53aa:64c:4fc:f5ab:98b1:9fc1, 30 hops max, 24 byte packets |
− | 1 | + | 1 6to4.sin1.he.net (2001:470:0:17b::2) 615,959 ms 14,661 ms 14,909 ms |
− | + | 2 10ge1-5.core1.sin1.he.net (2001:470:0:17b::1) 191,477 ms 14,988 ms 14,983 ms | |
− | + | 3 * * * | |
− | + | 4 2001:4860:0:f90::1 (2001:4860:0:f90::1) 260,882 ms 16,251 ms 16,243 ms | |
− | + | 5 2001:4860:0:1::45b (2001:4860:0:1::45b) 261,676 ms 16,491 ms 16,533 ms | |
− | + | 6 sin11s12-in-x0e.1e100.net (2404:6800:4003:804::200e) 15,916 ms 21,871 ms 22,854 ms | |
− | + | ||
− | + | '''Catatan:''' tidak seperti versi baru dari IPv4 traceroute, yang dapat menggunakan paket ICMPv4 echo-request maupun paket UDP (default), IPv6-traceroute saat ini hanya dapat mengirim paket UDP. Seperti kita ketahui, paket ICMP echo-request lebih bisa di terima oleh firewall atau ACL di router di bandingkan dengan paket UDP. | |
− | |||
− | |||
− | + | ==IPv6 tracepath== | |
− | + | Program ini biasanya termasuk di paket iputils. Program ini seperti traceroute6 akan mentrace jalur menuju tujuan tertentu dan menemukan MTU yang digunakan sepanjang jalur tersebut. DI bawah ini kita bisa melihat contoh: | |
− | + | # tracepath ipv6.google.com | |
− | # | ||
Hasilnya kira-kira: | Hasilnya kira-kira: | ||
− | 1?: [LOCALHOST] 0. | + | 1?: [LOCALHOST] 0.016ms pmtu 1280 |
− | 1: | + | 1: 6to4.sin1.he.net 610.815ms |
− | 1: | + | 1: 6to4.sin1.he.net 15.974ms |
− | + | 2: 10ge1-5.core1.sin1.he.net 192.215ms | |
− | + | 3: no reply | |
− | + | 4: no reply | |
− | |||
==IPv6 tcpdump== | ==IPv6 tcpdump== |
Latest revision as of 13:18, 7 March 2019
Setelah kita menyiapkan system yang kita gunakan untuk IPv6, kita ingin menggunakan IPv6 untuk komunikasi di jaringan. Pertama-tama, sebaiknya kita belajar menganalisa paket IPv6 menggunakan program sniffer. Ini sangat di rekomendasikan untuk debugging / troubleshooting karena sangat menolong untuk melakukan diagnosa secara cepat.
IPv6 ping
CATATAN: ping saat ini bisa digunakan untuk IPv6, tidak harus ping6.
Program ini biasanya termasuk dalam paket iputils. Ini dirancang untuk melakukan test tranport sederhana dengan mengirimkan paket ICMPv6 echo-request dan menunggu paket ICMPv6 echo-reply.
Contoh cara penggunaan
# ping6 <hostdenganipv6address> # ping6 <ipv6address> # ping6 [-I <device>] <link-local-ipv6address>
Contoh ping6 ke localhost (::1)
# ping6 -c 1 ::1 PING ::1(::1) 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.033 ms --- ::1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.033/0.033/0.033/0.000 ms
Contoh ping6 melalui interface br-lan mencoba menghubungi sebuah IPv6 Global
ping6 -I br-lan 2001:470:36:ab6:fdaa:10b7:8fb1:7588
Hasilnya kira-kira:
PING 2001:470:36:ab6:fdaa:10b7:8fb1:7588 (2001:470:36:ab6:fdaa:10b7:8fb1:7588): 56 data bytes 64 bytes from 2001:470:36:ab6:fdaa:10b7:8fb1:7588: seq=0 ttl=64 time=0.961 ms 64 bytes from 2001:470:36:ab6:fdaa:10b7:8fb1:7588: seq=1 ttl=64 time=0.609 ms 64 bytes from 2001:470:36:ab6:fdaa:10b7:8fb1:7588: seq=2 ttl=64 time=0.486 ms ^C --- 2001:470:36:ab6:fdaa:10b7:8fb1:7588 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.486/0.685/0.961 ms
Catatan: ping6 butuh akses raw ke soket dan oleh karenanya ijin sebagai root. Untuk pengguna non-root yang tidak dapat menggunakan ping6 ada dua (2) kemungkinan masalah:
- ping6 tidak berada dalam path user. Biasanya ping6 di simpan dalam /usr/sbin oleh karenanya menambahkan ke user path biasanya tidak di rekomendasikan.
- ping6 tidak bisa di execute dengan baik, biasanya kekurangan ijin root. Kita perlu menambahkan perintah
chmod u+s /usr/sbin/ping6
Menggunakan interface untuk IPv6 ping
Saat kita menggunakan address link-local untuk IPv6 ping, kernel tidak mengetahui device mana (physical / virtual) yang akan digunakan untuk mengirimkan paket - setiap device mempunyai address link-local. Contoh
ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:03:0d:e3:db:76 inet6 addr: fe80::203:dff:fee3:db76/64 Scope:Link
Coba melakukan ping menggunakan link-local addess akan memberikan error berikut:
# ping6 fe80::203:dff:fee3:db76 connect: Invalid argument
Yang benar, kita harus memberitahukan interface yang digunakan seperti dibawah ini:
# ping6 -I eth0 -c 1 fe80::203:dff:fee3:db76 PING fe80::203:dff:fee3:db76(fe80::203:dff:fee3:db76) from fe80::203:dff:fee3:db76 eth0: 56 data bytes 64 bytes from fe80::203:dff:fee3:db76: icmp_seq=1 ttl=64 time=0.050 ms
--- fe80::203:dff:fee3:db76 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.050/0.050/0.050/0.000 ms
Ping6 ke multicast address
Cara yang menarik untuk mendeteksi mesin IPv6 yang aktif adalah dengan ping6 ke link-local all-node multicast address:
# ping6 -I eth0 ff02::1 # ping6 -I enp3s0 ff02::1
Akan keluar kira-kira:
PING ff02::1(ff02::1) from fe80::203:dff:fee3:db76 eth0: 56 data bytes 64 bytes from fe80::203:dff:fee3:db76: icmp_seq=1 ttl=64 time=0.075 ms 64 bytes from fe80::62a4:4cff:fe75:a6a0: icmp_seq=1 ttl=64 time=0.368 ms (DUP!) 64 bytes from fe80::20d:feff:fe73:6172: icmp_seq=1 ttl=64 time=0.434 ms (DUP!) 64 bytes from fe80::225:9cff:fe49:e965: icmp_seq=1 ttl=64 time=0.470 ms (DUP!) 64 bytes from fe80::21e:8cff:fee2:2a16: icmp_seq=1 ttl=255 time=0.531 ms (DUP!) 64 bytes from fe80::c2c1:c0ff:fe89:66ad: icmp_seq=1 ttl=64 time=0.546 ms (DUP!) 64 bytes from fe80::290:a9ff:feb2:1a07: icmp_seq=1 ttl=64 time=2.04 ms (DUP!) 64 bytes from fe80::2eb:2dff:fea2:2ca1: icmp_seq=1 ttl=255 time=86.1 ms (DUP!) 64 bytes from fe80::d2df:c7ff:fe0e:bc22: icmp_seq=1 ttl=64 time=192 ms (DUP!) ... dst ...
Tidak seperti IPv4, dimana ping ke broadcast address dapat di disable, saat ini di IPv6 perilaku ini tidak bisa di disable kecuali menggunakan firewall IPv6 lokal.
IPv6 traceroute6
Program ini biasanya termasuk dalam iputils. Program ini mirip dengan IPv4 traceroute. Di bawah ini kita bisa melihat contoh-nya:
# traceroute6 ipv6.google.com
Hasilnya kira-kira:
traceroute to (2404:6800:4003:804::200e) from 2001:0:53aa:64c:4fc:f5ab:98b1:9fc1, 30 hops max, 24 byte packets 1 6to4.sin1.he.net (2001:470:0:17b::2) 615,959 ms 14,661 ms 14,909 ms 2 10ge1-5.core1.sin1.he.net (2001:470:0:17b::1) 191,477 ms 14,988 ms 14,983 ms 3 * * * 4 2001:4860:0:f90::1 (2001:4860:0:f90::1) 260,882 ms 16,251 ms 16,243 ms 5 2001:4860:0:1::45b (2001:4860:0:1::45b) 261,676 ms 16,491 ms 16,533 ms 6 sin11s12-in-x0e.1e100.net (2404:6800:4003:804::200e) 15,916 ms 21,871 ms 22,854 ms
Catatan: tidak seperti versi baru dari IPv4 traceroute, yang dapat menggunakan paket ICMPv4 echo-request maupun paket UDP (default), IPv6-traceroute saat ini hanya dapat mengirim paket UDP. Seperti kita ketahui, paket ICMP echo-request lebih bisa di terima oleh firewall atau ACL di router di bandingkan dengan paket UDP.
IPv6 tracepath
Program ini biasanya termasuk di paket iputils. Program ini seperti traceroute6 akan mentrace jalur menuju tujuan tertentu dan menemukan MTU yang digunakan sepanjang jalur tersebut. DI bawah ini kita bisa melihat contoh:
# tracepath ipv6.google.com
Hasilnya kira-kira:
1?: [LOCALHOST] 0.016ms pmtu 1280 1: 6to4.sin1.he.net 610.815ms 1: 6to4.sin1.he.net 15.974ms 2: 10ge1-5.core1.sin1.he.net 192.215ms 3: no reply 4: no reply
IPv6 tcpdump
Di Linux, tcpdump adalah salah satu tool untuk capture paket. Di bawah ini kita akan melihat beberapa contoh. Dukungan IPv6 sudah ada di release tcpdump sejak versi 3.6.
tcpdump menggunakan expresi untuk filter paket untuk meminimisasi sampah:
- icmp6: filter native ICMPv6 traffic
- ip6: filter native IPv6 traffic (termasuk ICMPv6)
- proto ipv6: filter tunneled IPv6-in-IPv4 traffic
Ada beberapa opsi command line yang sangat bermanfaat untuk menangkap & print informasi di sebuah paket, terutama untuk menggali informasi dari paket ICMPv6:
- “-s 512”: menaikan panjang snap saat menangkap paket 512 bytes
- “-vv”: output lebih verbose
- “-n”: jangan resolve address ke hostname. Ini terutama bermanfaat jika reverse DNS tidak berjalan baik.
Untuk melakukan capture packet, dapat di jalankan perintah
# tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6
not port ssh: untuk tidak menampilkan paket SSH packet jika menjalankan tcpdump menggunakan remote SSH Hasil yang akan di peroleh juga kita melakukan ping6 ke ipv6.google.com hasilnya kira-kira:
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 512 bytes
IP6 (hlim 64, next-header ICMPv6 (58) payload length: 64) 2001:470:19:b37:19d2:804c:32b5:4878 > 2404:6800:4003:805::1000: [icmp6 sum ok] ICMP6, echo request, seq 1 IP6 (hlim 57, next-header ICMPv6 (58) payload length: 64) 2404:6800:4003:805::1000 > 2001:470:19:b37:19d2:804c:32b5:4878: [icmp6 sum ok] ICMP6, echo reply, seq 1 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 64) 2001:470:19:b37:19d2:804c:32b5:4878 > 2404:6800:4003:805::1000: [icmp6 sum ok] ICMP6, echo request, seq 2 IP6 (hlim 57, next-header ICMPv6 (58) payload length: 64) 2404:6800:4003:805::1000 > 2001:470:19:b37:19d2:804c:32b5:4878: [icmp6 sum ok] ICMP6, echo reply, seq 2