Skip to content
Kembali ke Blog
Tutorial

Cara Menghitung Subnet Mask: Tabel CIDR /8 sampai /32

Sebuah /26 memberi 62 alamat terpakai, bukan 64, dan aturan minus dua gagal di /31. Baca prefiks CIDR, hitung mask-nya, lalu cek gratis secara online.

15 menit membaca

Notasi CIDR dan Subnet Mask: Cara Membaca /8 sampai /32

Angka setelah garis miring pada 192.168.1.0/24 menghitung bit, bukan alamat. Angka itu menyatakan berapa dari 32 bit alamat IPv4 yang menjadi milik jaringan; sisanya menjadi milik host. Satu kalimat itu sudah mencakup hampir seluruh isi notasi CIDR.

Sisanya tinggal mengikuti. Prefiks /24 menyisakan 8 bit host, jadi bloknya memuat 2⁸ = 256 alamat. Prefiks /26 menyisakan 6, jadi isinya 64. Setiap bit yang Anda kembalikan ke sisi host melipatduakan ukuran blok; setiap bit yang Anda ambil melipatduakan jumlah blok. Jumlah yang benar-benar bisa Anda pasang ke perangkat biasanya dua lebih sedikit dari total, karena alamat pertama menamai jaringan dan alamat terakhir adalah broadcast. Artinya /26 memberi Anda 62 host terpakai, bukan 64.

Ada dua prefiks yang sengaja melanggar aturan minus dua itu. Dan wildcard mask bukan subnet mask, walaupun keduanya rutin saling tertukar tempat. Cara membaca prefiks dan menghitung mask-nya di atas kertas ada di bawah, berikut titik-titik ketika aritmetikanya berhenti terasa jelas. Kalau Anda cuma butuh jawaban untuk satu blok, kalkulator subnet langsung mencetaknya; artikel ini soal cara sampai ke sana tanpa alat bantu.

Apa yang sebenarnya dinyatakan notasi CIDR

Subnet mask sendiri adalah bilangan 32 bit, ditulis persis seperti alamat biasa. Bitnya berupa deretan angka 1 yang diikuti deretan angka 0. Angka 1 menandai bit jaringan, angka 0 menandai bit host. Tulis /26 selengkapnya dan hasilnya:

11111111.11111111.11111111.11000000
    255  .   255  .   255  .   192

Kembalikan tiap oktet ke desimal dan Anda dapat 255.255.255.192. Notasi CIDR menghitung angka 1 di depan, bukan menuliskan ketiga puluh dua bitnya satu per satu. 192.168.1.0/26 dan 192.168.1.0 255.255.255.192 adalah pernyataan yang sama dalam dua sintaks, dan bentuk mana yang diminta perangkat sepenuhnya tergantung perintah yang sedang Anda ketik.

Hitungan itulah seluruh triknya. /8, /16, dan /24 jatuh tepat di batas oktet, itulah sebabnya bentuk desimalnya terlihat rapi: 255.0.0.0, 255.255.0.0, 255.255.255.0. Tidak ada satu pun aturan notasi yang mengharuskan begitu. /22 dan /27 sama sahnya. Keduanya memotong di tengah oktet dan menghasilkan mask seperti 255.255.252.0 yang tampak asal-asalan, sampai Anda menuliskannya dalam biner.

Kenapa kelas alamat ditinggalkan. Sebelum 1993, bit-bit terdepan sebuah alamat menentukan ukurannya: kelas A dapat /8, kelas B dapat /16, kelas C dapat /24, dan tidak ada apa pun di antaranya. Organisasi dengan 300 host harus mengklaim satu kelas B lalu membuang lebih dari 65000 alamat, atau mengambil dua blok kelas C lalu menanggung dua rute. CIDR (RFC 1519, kemudian direvisi menjadi RFC 4632) memutus keterikatan itu. Prefiks ikut menempel pada alamat, sehingga satu blok bisa berukuran pangkat dua berapa pun. Kelas alamat masih muncul di ujian sertifikasi dan di dokumentasi lama, tetapi routing classful sudah usang sejak CIDR hadir pada 1993. Yang menentukan di mana jaringan berakhir adalah mask-nya, bukan oktet pertama.

Cheat sheet subnet mask, /8 sampai /32

Kolom terakhir pada tabel konversi di bawah sengaja ada di situ: kolom itu menunjukkan hasil rumus umum 2ⁿ − 2, yang cocok dengan jumlah host terpakai sebenarnya di semua baris kecuali dua baris paling bawah.

PrefiksSubnet maskWildcard maskTotal alamatHost terpakaiHasil naif 2ⁿ − 2
/8255.0.0.00.255.255.255167772161677721416777214
/9255.128.0.00.127.255.255838860883886068388606
/10255.192.0.00.63.255.255419430441943024194302
/11255.224.0.00.31.255.255209715220971502097150
/12255.240.0.00.15.255.255104857610485741048574
/13255.248.0.00.7.255.255524288524286524286
/14255.252.0.00.3.255.255262144262142262142
/15255.254.0.00.1.255.255131072131070131070
/16255.255.0.00.0.255.255655366553465534
/17255.255.128.00.0.127.255327683276632766
/18255.255.192.00.0.63.255163841638216382
/19255.255.224.00.0.31.255819281908190
/20255.255.240.00.0.15.255409640944094
/21255.255.248.00.0.7.255204820462046
/22255.255.252.00.0.3.255102410221022
/23255.255.254.00.0.1.255512510510
/24255.255.255.00.0.0.255256254254
/25255.255.255.1280.0.0.127128126126
/26255.255.255.1920.0.0.63646262
/27255.255.255.2240.0.0.31323030
/28255.255.255.2400.0.0.15161414
/29255.255.255.2480.0.0.7866
/30255.255.255.2520.0.0.3422
/31255.255.255.2540.0.0.1220
/32255.255.255.2550.0.0.011−1

Bacalah tabel ini sebagai kumpulan hubungan, bukan sebagai daftar jawaban. Turun satu baris berarti blok terbelah dua: /24 memuat 256 alamat, /25 memuat 128, /26 memuat 64. Kolom wildcard mask adalah subnet mask dengan setiap bit dibalik, itu sebabnya 255.255.255.192 dan 0.0.0.63 selalu muncul di baris yang sama. Dan dua baris tebal itu adalah tempat rumus standar berhenti menggambarkan kenyataan, bahasan tersendiri di bagian berikutnya.

Yang perlu dihafal cuma nilai oktet terakhir di kolom mask, karena polanya berulang: 128, 192, 224, 240, 248, 252, 254, 255. Hanya delapan nilai byte non-trivial itu yang boleh menutup mask yang sah. Untuk membuktikannya sendiri lewat konversi, konverter basis bilangan menampilkan bentuk biner dari nilai mana pun di antaranya.

Membaca tabel dari arah sebaliknya: dari subnet mask ke CIDR

Kalau yang Anda pegang sudah berupa mask dalam desimal bertitik, hitung bit 1-nya. Setiap 255 menyumbang 8, dan oktet batas menyumbang sisanya:

Oktet terakhir mask128192224240248252254255
Bit yang disumbang12345678

Jadi 255.255.255.192 adalah 8 + 8 + 8 + 2 = /26. Dan 255.255.252.0 adalah 8 + 8 + 6 + 0 = /22, karena 252 dalam biner adalah 11111100.

Dua hal langsung mengikuti. Oktet mana pun yang bukan 255 dan bukan 0 adalah oktet batas, dan mask yang sah hanya boleh punya satu oktet semacam itu. Lalu nilai oktet tersebut langsung memberi Anda ukuran blok.

Cara menghitung subnet mask dan alamat jaringan secara manual

Metode mekanisnya terdiri dari tiga langkah dan berlaku untuk prefiks apa pun. Contoh di bawah memakai 192.168.1.130/26, tetapi prosedurnya berlaku untuk alamat mana pun.

Langkah 1 — cari ukuran blok

Ukuran blok adalah 256 − oktet batas pada mask.

Untuk /26, mask-nya 255.255.255.192, jadi ukuran bloknya 256 − 192 = 64. Subnet seukuran itu duduk di kelipatan 64 pada oktet keempat: 0, 64, 128, 192. Tidak ada titik awal lain yang mungkin.

Ukuran blok dan jumlah alamat adalah angka yang sama, hanya didekati dari sisi mask alih-alih dari sisi hitungan bit.

Langkah 2 — cari blok tempat alamat itu jatuh

Bagi oktet batas pada alamat dengan ukuran blok, lalu bulatkan ke bawah.

Alamatnya 192.168.1.130, ukuran bloknya 64, jadi 130 ÷ 64 = 2.03…, yang dibulatkan ke bawah menjadi 2. Kalikan balik: 2 × 64 = 128. Alamat itu berada di blok yang dimulai pada 128.

Di sinilah mayoritas kesalahan terjadi, dan selalu ke arah yang sama: orang menganggap alamat yang mereka terima sebagai awal bloknya sendiri, padahal biasanya bukan. 192.168.1.130 adalah alamat host yang tinggal di /26 ketiga dalam /24 tersebut.

Langkah 3 — jaringan, broadcast, host pertama dan terakhir

Awal blok adalah alamat jaringan. Broadcast-nya adalah awal blok ditambah ukuran blok dikurangi satu. Semua yang berada persis di antara keduanya boleh dipasang ke perangkat:

Network    192.168.1.128
Broadcast  192.168.1.191
Usable     192.168.1.129 - 192.168.1.190
Usable     62 (of 64 total)
Netmask    255.255.255.192
Wildcard   0.0.0.63

Broadcast-nya 128 + 64 − 1 = 191. Host pertama adalah jaringan + 1, host terakhir adalah broadcast − 1, dan jumlah terpakainya 64 − 2 = 62, cocok dengan baris /26 di cheat sheet.

Diringkas jadi kalimat yang bisa Anda ucapkan sendiri: ukuran blok adalah 256 dikurangi oktet mask; bulatkan alamat ke bawah ke kelipatan angka itu; hasilnya jaringan Anda, dan awal blok berikutnya dikurangi satu adalah broadcast Anda.

Metode ini tidak khusus untuk oktet keempat. Untuk /22, mask-nya 255.255.252.0, jadi oktet batasnya adalah yang ketiga dan ukuran blok di situ 256 − 252 = 4. Jadi blok-bloknya mulai di 10.0.0.0, 10.0.4.0, 10.0.8.0, dan blok 10.0.0.0/22 membentang sampai broadcast 10.0.3.255 dengan alamat terpakai 10.0.0.1 hingga 10.0.3.254, yaitu empat /24 berurutan di dalam satu broadcast domain. Tiga langkah yang sama, oktet yang berbeda.

Kalau sisi biner-ke-desimalnya yang bikin Anda melambat, panduan konversi basis bilangan membahas konversinya lebih dalam daripada yang pantas dimuat artikel subnetting.

Untuk mengecek hasil kerja lewat skrip alih-alih di kepala, pustaka standar Python sudah tahu semua ini:

import ipaddress

net = ipaddress.ip_network("192.168.1.130/26", strict=False)

print(net)                     # 192.168.1.128/26
print(net.network_address)     # 192.168.1.128
print(net.broadcast_address)   # 192.168.1.191
print(net.netmask)             # 255.255.255.192
print(net.hostmask)            # 0.0.0.63
print(net.num_addresses)       # 64
print(len(list(net.hosts())))  # 62

strict=False itulah yang membuat Anda boleh memasukkan alamat host alih-alih alamat jaringan; dengan nilai bawaan strict=True, panggilan yang sama melempar ValueError.

Di mana aturan minus dua berhenti benar

Ada alasan di balik pengurangan itu. Pada subnet biasa, pola host serba-nol menamai jaringan itu sendiri dan pola host serba-satu adalah alamat directed broadcast. Keduanya tidak boleh dipasang pada interface mana pun, jadi blok berisi 2ⁿ alamat hanya menawarkan 2ⁿ − 2 untuk host. Itulah sebabnya /24 memberi 254 dan /26 memberi 62.

Alasan itu sekaligus batasnya. Ketika blok terlalu kecil untuk memuat dua alamat cadangan tersebut, mengurangkannya berhenti masuk akal.

Prefiks /31 punya dua alamat dan dua host terpakai. RFC 3021 mendefinisikan /31 untuk link point-to-point. Link semacam itu punya persis dua ujung dan tidak punya segmen bersama, jadi tidak ada pekerjaan tersisa untuk alamat broadcast dan tidak ada yang perlu diidentifikasi alamat jaringan. Kedua alamat jatuh ke dua ujung tadi. Menerapkan 2ⁿ − 2 di sini menghasilkan 0, karena rumus itu sedang dipakai pada topologi yang bukan wilayahnya. Ada syarat yang nyata di sini: /31 hanya sah pada interface yang benar-benar point-to-point. Segmen LAN multi-akses tetap butuh /30 atau lebih pendek, dan Windows menolak /31 pada NIC.

Prefiks /32 punya satu alamat dan satu host terpakai. Ini rute host tunggal: interface loopback, rute statis, alamat anycast, aturan firewall untuk satu alamat. Tidak ada alamat broadcast di sana, jadi bagian − 2 pada rumus akan menghasilkan −1.

Python sependapat untuk keduanya:

import ipaddress

p2p = ipaddress.ip_network("203.0.113.4/31")
print([str(h) for h in p2p.hosts()])  # ['203.0.113.4', '203.0.113.5']

host = ipaddress.ip_network("10.0.0.1/32")
print([str(h) for h in host.hosts()])  # ['10.0.0.1']

Lebih mudah mengingatnya sebagai satu aturan ketimbang dua pengecualian: pengurangan itu membuang dua alamat tertentu, jadi pastikan dulu keduanya ada sebelum Anda membuangnya. Pada /31 dan /32 tidak ada alamat broadcast sama sekali, jadi tidak ada yang dibuang.

Total, terpakai, dan jumlah subnet adalah tiga angka berbeda

Orang terus-menerus mencampur ketiganya, dan kebingungannya wajar karena ketiganya sama-sama pangkat dua dari prefiks yang sama.

  • Total alamat dalam sebuah /p adalah 2^(32 − p). Untuk /26: 64.
  • Host terpakai adalah angka tadi dikurangi 2, kecuali untuk /31 dan /32. Untuk /26: 62.
  • Jumlah subnet yang Anda peroleh dari memecah induk /p menjadi anak /q adalah 2^(q − p). Memecah /24 menjadi /26 meminjam dua bit, jadi 2² = 4 subnet.

Ketiganya menjawab pertanyaan yang berbeda, jadi kalimat seperti “sebuah /26 memberi Anda 4” hanya benar kalau pertanyaannya soal memecah /24. Memecah juga ada ongkosnya dalam alamat, karena tiap subnet anak mencadangkan pasangan jaringan dan broadcast-nya sendiri. Empat /26 yang dipahat dari satu /24 memuat 4 × 62 = 248 alamat terpakai berbanding 254 milik induknya. Enam alamat habis untuk pemecahannya sendiri.

Wildcard mask vs subnet mask: perintah mana meminta yang mana

Wildcard mask adalah kebalikan bitwise dari subnet mask. Di tempat subnet mask berisi 1, wildcard mask berisi 0. Ambil baris /26 dari cheat sheet: mask 255.255.255.192, wildcard mask 0.0.0.63. Balik setiap bit salah satunya dan Anda dapat yang lain, itulah sebabnya keduanya tidak pernah muncul terpisah.

Keduanya dipakai dalam pengertian yang berlawanan, dan justru bagian itu yang paling sering terlewat. Subnet mask diterapkan lewat operasi AND bitwise, jadi bit 1 berarti “bit ini bagian dari jaringan”. Wildcard mask adalah filter pencocokan, jadi bit 0 berarti “bit ini wajib cocok” dan bit 1 berarti “terserah”. Operasi dasarnya sama, polaritasnya terbalik. Kalau mekanika di level bit masih kabur, panduan operasi bitwise membahas AND, OR, dan NOT dalam kerangka yang lebih umum.

Mana yang diminta perangkat bukan soal selera. Untuk blok 192.168.1.128/26:

! wants the subnet mask
ip address 192.168.1.129 255.255.255.192

! wants the wildcard mask
access-list 10 permit 192.168.1.128 0.0.0.63
network 192.168.1.128 0.0.0.63 area 0
! Cisco ASA — wants the subnet mask, unlike IOS ACLs
access-list OUT permit ip 192.168.1.128 255.255.255.192 any
# Linux iproute2 — takes the prefix directly
ip addr add 192.168.1.129/26 dev eth0

ACL Cisco IOS dan statement network OSPF menerima wildcard mask; ASA justru menerima subnet mask. Itu satu vendor dengan dua konvensi di lini produk yang sama, dan itulah alasan kegagalan salin-tempel paling sering terjadi di area ini. Platform lain punya konvensinya sendiri, jadi sebelum menempelkan nilai ke field yang belum Anda kenal, pastikan dulu field itu meminta yang mana.

Bentuk kegagalannya itulah yang membuatnya berbahaya. Tempelkan 255.255.255.192 ke ACL IOS dan router membacanya sebagai wildcard mask: tiga oktet berisi 1 semua berarti “terserah”, sehingga tiga oktet pertama sama sekali berhenti dicocokkan dan aturannya menjangkau jauh di luar blok yang Anda maksud. Tidak ada error sintaks, tidak ada baris log, cuma satu statement permit dengan cakupan yang salah. Kesalahan arah sebaliknya setidaknya punya peluang tertangkap, karena 0.0.0.63 bukan subnet mask yang sah: tidak ada deretan 1 di depannya. Apakah platform Anda menolaknya atau menerimanya diam-diam, itu bukan hal yang sebaiknya Anda temukan di produksi.

Kenapa wildcard mask ACL boleh berlubang sedangkan subnet mask tidak

Subnet mask harus berupa satu deretan 1 yang menyambung diikuti 0. Itu bukan konvensi, melainkan syarat yang membuat operasi AND membelah alamat menjadi tepat dua bagian. Nilai seperti 255.0.255.0 berlubang di tengah, tidak menggambarkan batas yang koheren, dan perangkat menolaknya. Python juga:

import ipaddress
ipaddress.ip_network("10.0.0.0/255.0.255.0")
# ValueError: '10.0.0.0/255.0.255.0' does not appear to be an IPv4 or IPv6 network

Hanya ada 33 mask yang sah, /0 sampai /32. Selain itu, salah ketik.

Wildcard mask di ACL tidak terikat batasan itu, karena tugasnya bukan membelah alamat menjadi bagian jaringan dan bagian host. Perannya filter pencocokan per bit, jadi lubang di tengah sah dan sesekali berguna. Satu wildcard mask berlubang bisa mencocokkan, misalnya, setiap alamat bernomor ganjil dalam suatu rentang. Perbedaan daya ungkap inilah kenapa kedua nilai tidak boleh ditukar: keduanya bukan jenis objek yang sama, kebetulan saja bentuk desimal bertitiknya mirip.

Rentang privat, CGNAT, dan blok cadangan lainnya

Prefiks memberi tahu Anda seberapa besar blok tersebut. Blok mana yang Anda pegang menentukan apakah ia memang boleh Anda pakai.

BlokRentangDicadangkan oleh
10.0.0.0/810.0.0.0 – 10.255.255.255privat, RFC 1918
172.16.0.0/12172.16.0.0 – 172.31.255.255privat, RFC 1918
192.168.0.0/16192.168.0.0 – 192.168.255.255privat, RFC 1918
100.64.0.0/10100.64.0.0 – 100.127.255.255carrier-grade NAT, RFC 6598
169.254.0.0/16169.254.0.0 – 169.254.255.255link-local, RFC 3927
255.255.255.255/32alamat tunggallimited broadcast

Rentang RFC 1918 tidak pernah dirutekan di internet publik, dan itulah yang membuatnya aman dijadikan sumber alokasi. Tiga sisanya muncul karena alasan yang berbeda.

100.64.0.0/10 adalah ruang carrier-grade NAT. Kalau ISP Anda memberi alamat dari sana, Anda berada di balik NAT mereka dan tidak ada koneksi masuk yang bisa menjangkau Anda tanpa tunnel. Ini bukan ruang privat dalam pengertian RFC 1918, dan Anda sebaiknya tidak memakainya dalam rencana pengalamatan internal, karena penyedia layanan Anda mungkin sudah memakainya di sisi seberang router Anda.

169.254.0.0/16 adalah link-local. Host memberikan alamat semacam ini kepada dirinya sendiri ketika DHCP gagal, jadi melihat alamat 169.254 pada sebuah interface itu diagnosis, bukan konfigurasi: tidak ada yang menjawab permintaan DHCP tadi. Trafik ke alamat itu tidak pernah melewati router.

Untuk contoh di dokumentasi dan runbook, RFC 5737 mencadangkan 192.0.2.0/24, 198.51.100.0/24, dan 203.0.113.0/24 justru supaya contoh yang disalin-tempel tidak mungkin menunjuk ke host sungguhan.

172.16.0.0/12 adalah enam belas /16, bukan satu

Inilah rentang cadangan yang paling sering salah dibaca orang, dan penyebabnya ada di prefiks. Prefiks /12 meminjam empat bit dari oktet kedua, jadi bloknya membentang dari 172.16.0.0 sampai 172.31.255.255, yaitu enam belas /16 berurutan, bukan cuma 172.16.x.x.

Akibatnya berjalan ke dua arah. Alamat seperti 172.20.5.1 memang privat, duduk nyaman di dalam rentang itu, meskipun tidak diawali 172.16. Sebaliknya 172.15.x.x dan 172.32.x.x adalah alamat publik milik orang lain, sehingga aturan firewall atau pemeriksaan “percayai rentang internal” yang ditulis terhadap 172.0.0.0/8 diam-diam memercayai sepotong besar internet.

Kalau Anda perlu memastikan batas semacam ini, cheat sheet sudah menyediakan aritmetikanya: /12 punya 2^(32−12) alamat, oktet kedua bergerak dengan langkah 256 − 240 = 16, dan 16 + 16 = 32, jadi bloknya berakhir tepat sebelum 172.32.0.0.

VLSM: memecah satu blok menjadi subnet berukuran tidak sama

Subnet berukuran seragam itu gampang dan biasanya keliru. Kantor cabang yang dijatah satu 192.168.1.0/24 bisa saja butuh empat segmen yang ukurannya sama sekali tidak mirip: seratus workstation, lima puluh telepon, selusin server, dan segelintir interface manajemen. Pecah /24 itu menjadi empat /26 yang sama besar, dan segmen workstation meluap di angka 62 host, sementara segmen manajemen menduduki 62 alamat hanya untuk melayani sepuluh perangkat.

Variable Length Subnet Masking (VLSM) berarti memberi tiap segmen prefiks yang benar-benar dibutuhkannya. Berikut /24 yang sama, dipahat menjadi satu /25, satu /26, dan dua /28.

Alokasikan dari yang terbesar ke yang terkecil. Tiap blok harus mulai di kelipatan ukurannya sendiri, jadi blok terbesar memilih lebih dulu:

SegmenHost dibutuhkanPrefiksJaringanRentang terpakaiBroadcastSubnet mask
Workstation100/25192.168.1.0192.168.1.1 – 192.168.1.126192.168.1.127255.255.255.128
Telepon50/26192.168.1.128192.168.1.129 – 192.168.1.190192.168.1.191255.255.255.192
Server12/28192.168.1.192192.168.1.193 – 192.168.1.206192.168.1.207255.255.255.240
Manajemen10/28192.168.1.208192.168.1.209 – 192.168.1.222192.168.1.223255.255.255.240
belum dialokasikan/27192.168.1.224192.168.1.225 – 192.168.1.254192.168.1.255255.255.255.224

Menelusurinya dengan metode tiga langkah tadi:

  1. Ukuran blok /25 adalah 256 − 128 = 128, jadi ia mulai di 0 dan broadcast-nya 0 + 128 − 1 = 127. Terpakai 1 sampai 126, yaitu 126 alamat, cukup untuk 100 workstation dan masih bersisa. Baris /25 di cheat sheet sepakat: total 128, terpakai 126.
  2. Alamat bebas berikutnya adalah 128. Ukuran blok /26 adalah 64, dan 128 kelipatan 64, jadi pas: jaringan 192.168.1.128, broadcast 128 + 64 − 1 = 191, terpakai 129 sampai 190. Itu 62 alamat terpakai untuk 50 telepon. Baris /26 cheat sheet: total 64, terpakai 62.
  3. Bebas berikutnya 192. Ukuran blok /28 adalah 16, dan 192 = 16 × 12, jadi pas: jaringan 192.168.1.192, broadcast 207, terpakai 193 sampai 206, jadi 14 alamat untuk 12 server. Baris /28 cheat sheet: total 16, terpakai 14.
  4. Bebas berikutnya 208, dan 208 = 16 × 13, jadi /28 kedua mendarat di 192.168.1.208 dengan broadcast 223 dan alamat terpakai 209 sampai 222.

Semua itu menghabiskan 128 + 64 + 16 + 16 = 224 dari 256 alamat, menyisakan 192.168.1.224 sampai 192.168.1.255. Ke-32 alamat sisa itu kebetulan persis satu /27 yang selaras, dan dari sanalah nanti link point-to-point diambil: enam belas /31 muat di dalamnya, satu untuk tiap link antarrouter.

Kenapa yang besar dulu, dan apa ongkosnya kalau tidak. Misalkan Anda malah menaruh kedua /28 di bagian bawah: 192.168.1.0/28 dan 192.168.1.16/28. Alamat bebas berikutnya jadi 192.168.1.32, sedangkan /25 harus mulai di kelipatan 128, sehingga ia tidak bisa mulai di situ. Ia terpaksa melompat maju ke 192.168.1.128. Alamat 32 sampai 127 tidak hilang, tetapi hanya bisa dipakai sebagai potongan selaras yang lebih kecil (satu /27 di 192.168.1.32 dan satu /26 di 192.168.1.64), sehingga ruang sisanya tercecer alih-alih terkumpul dalam satu blok menyambung di ujung atas. Tambahkan satu segmen lagi ke permintaan dan manuver yang sama langsung tidak muat sama sekali.

Mengurutkan berdasarkan ukuran menghindarkan Anda dari situ. Setelah satu blok ditempatkan, alamat bebas berikutnya adalah kelipatan ukuran blok tadi, dan kelipatan pangkat dua yang lebih besar otomatis juga kelipatan setiap pangkat dua yang lebih kecil, jadi setiap blok berikutnya yang lebih kecil sudah selaras di mana pun blok sebelumnya berakhir. Anda tidak pernah perlu melompat. Sebelum menuangkan rencana seperti ini ke switch, melewatkannya lewat tabel pembagian di kalkulator subnet lebih cepat daripada memeriksa keselarasan tiap segmen satu per satu.

Lima kesalahan yang lolos sampai ke produksi

1. Menganggap alamat yang Anda ketik sebagai alamat jaringan

Gejala: aturan firewall tidak mencocokkan apa pun, atau satu rute menutupi separuh segmen yang keliru. Penyebab: 192.168.1.130/26 dibaca sebagai jaringan 192.168.1.0, broadcast 192.168.1.255, yaitu batas /24, karena batas itulah yang terlihat orang dalam bentuk desimal. Perbaikan: jalankan langkah 2. Ukuran blok 64, 130 ÷ 64 dibulatkan ke bawah jadi 2, sehingga jaringannya 2 × 64 = 128. Bloknya 192.168.1.128 sampai 192.168.1.191, dan 192.168.1.0 adalah subnet yang sama sekali lain. Setiap kali prefiksnya lebih panjang dari /24, anggap alamat yang Anda terima adalah alamat host sampai Anda selesai memasang mask padanya.

2. Menerapkan 2ⁿ − 2 pada /31

Gejala: tool IPAM atau spreadsheet melaporkan 0 host terpakai untuk link point-to-point yang jelas-jelas hidup dan meneruskan trafik. Penyebab: aturan minus dua mengandaikan ada alamat jaringan dan alamat broadcast untuk dikurangkan. Pada /31 keduanya tidak ada. Perbaikan: perlakukan /31 dan /32 sebagai kondisi batas rumus, bukan sebagai anomali. RFC 3021 membuat kedua alamat pada /31 bisa dipasang ke perangkat, dan /32 adalah rute host tunggal berisi satu alamat. Apa pun yang melaporkan 0 atau −1 sudah menerapkan rumus di luar wilayahnya. Cek dulu dukungan /31 pada interface yang bersangkutan, karena pengecualian ini hanya berlaku pada link yang benar-benar point-to-point.

3. Menganggap 172.16.0.0/12 sebatas 172.16.x.x saja

Gejala: layanan internal tidak terjangkau dari satu kantor, atau aturan “blokir semua rentang privat” bocor. Penyebab: /12 dibaca seolah-olah ia /16. Perbaikan: rentangnya 172.16.0.0 sampai 172.31.255.255. Tulis ACL dan allowlist terhadap prefiks 172.16.0.0/12, bukan terhadap pola oktet, dan ingat bahwa 172.15.x.x dan 172.32.x.x berada di luarnya, di internet publik. Kalau Anda mencocokkan secara manual, oktet kedua adalah oktet batas dan ia melangkah 16 demi 16.

4. Menempelkan wildcard mask ke field yang meminta subnet mask

Gejala: ACL mengizinkan jauh lebih banyak, atau jauh lebih sedikit, daripada yang dimaksud, dan tidak ada bagian konfigurasi yang tampak salah. Penyebab: ACL IOS dan statement network OSPF menerima wildcard mask sedangkan ASA menerima subnet mask, dan 0.0.0.63 dengan 255.255.255.192 sekilas terlihat sama saja. Perbaikan: periksa field-nya sebelum menempel, bukan sesudah. Satu penanda yang praktis: untuk prefiks /8 atau lebih panjang, subnet mask selalu diawali 255 dan wildcard mask selalu diawali 0. Kalau nilai yang duduk di ACL atau di statement network OSPF diawali 255, itu subnet mask yang nyasar ke field wildcard mask.

5. Menulis mask yang tidak menyambung, atau menghasilkannya tanpa sengaja

Gejala: perangkat menolak satu baris konfigurasi, atau skrip buatan sendiri menghasilkan mask yang tampak masuk akal padahal salah. Penyebab: nilai seperti 255.0.255.0 bukan subnet mask yang sah: ada lubang di dalamnya. Versi skripnya lebih halus: di JavaScript, operator shift mengambil operan kanannya modulo 32, sehingga prefiks di luar rentang diam-diam menghasilkan mask yang salah tetapi tampak masuk akal (33 menjadi /1, −1 menjadi /31) alih-alih melempar error. Perbaikan: validasi rentang prefiks sebelum melakukan shift, dan tolak mask apa pun yang bukan deretan 1 utuh diikuti 0. Pustaka yang melempar error saat menerima input buruk lebih berharga di sini daripada yang menebak-nebak, karena kedua bentuk kegagalan tadi sama-sama senyap.

FAQ

Apa bedanya subnet dan VLAN?

VLAN adalah broadcast domain di layer 2 yang dikonfigurasi pada switch; subnet adalah rentang alamat di layer 3. Keduanya biasanya dipetakan satu-satu, tetapi tidak ada aturan yang mewajibkannya. Anda bisa menaruh dua subnet di satu VLAN, atau nge-trunk satu VLAN lintas lokasi. Ganti penomoran subnet-nya dan ID VLAN tetap sama.

Berapa subnet yang saya dapat kalau /24 dipecah menjadi /26?

Empat. Jumlahnya adalah 2 dipangkatkan banyaknya bit yang dipinjam, dan /26 dua bit lebih panjang dari /24, jadi 2² = 4 subnet berisi 64 alamat masing-masing. Tiap anak mencadangkan alamat jaringan dan broadcast-nya sendiri, sehingga keempat /26 memuat 248 alamat terpakai berbanding 254 milik /24 induknya.

Apakah notasi CIDR bekerja dengan cara yang sama di IPv6?

Garis miringnya tetap menghitung bit jaringan di depan, jadi /64 berarti 64 bit jaringan dari 128. Yang tidak ikut terbawa adalah aturan minus dua: IPv6 tidak punya alamat broadcast, jadi tidak ada yang dikurangkan dari total. Cheat sheet di atas dan kalkulator di baliknya khusus IPv4.

Apa arti 0.0.0.0/0?

Nol bit jaringan, jadi ia mencocokkan setiap alamat IPv4. Di tabel routing ia adalah default route, yang dipakai ketika tidak ada prefiks lebih spesifik yang cocok. Sebagai alamat bind, artinya “semua interface”, dan itulah sebabnya layanan yang mendengarkan di 0.0.0.0 bisa dijangkau dari setiap jaringan yang terhubung ke mesin tersebut.

Apa yang terjadi kalau dua subnet di jaringan yang sama saling tumpang-tindih?

Router memilih rute yang lebih spesifik, karena forwarding selalu mengutamakan prefiks cocok terpanjang, sementara host di dalam wilayah tumpang-tindih itu berbeda pendapat soal tujuan mana yang lokal. Gejalanya setengah-setengah: sebagian tujuan jalan, sebagian tidak, dan yang mana berubah tergantung dari mana Anda menguji.

Kenapa alamat Kelas A, B, dan C digantikan CIDR?

Karena kelas-kelas itu cuma menawarkan tiga ukuran: /8, /16, dan /24. Organisasi yang butuh 300 alamat terpaksa mengambil satu kelas B dan membuang sebagian besar isinya, atau menjalankan dua rute kelas C. CIDR membuat prefiks boleh sepanjang apa pun, sehingga laju kehabisan alamat melambat dan penyedia layanan bisa meringkas banyak blok pelanggan menjadi satu rute.

Bolehkah saya men-subnet rentang privat seperti 192.168.0.0/16 sesuka hati?

Boleh. Ruang RFC 1918 memang boleh Anda bagi pada panjang prefiks berapa pun, dan tidak ada pihak di luar jaringan Anda yang melihatnya. Batasannya justru datang dari dalam: tumpang-tindih dengan jaringan mitra atau dengan VPC cloud yang belakangan Anda peering itu mahal untuk diurai, dan karena itu rencana pengalamatan cenderung menghindari blok yang sudah dipakai setiap router rumahan.

Yang perlu dibawa pulang. Prefiks menghitung bit jaringan, dan ukuran blok adalah 256 − oktet batas pada mask. Bulatkan alamat ke bawah ke kelipatan ukuran blok untuk mendapat jaringannya, lalu tambahkan ukuran blok dikurangi satu untuk mendapat broadcast-nya. Kurangi dua untuk sepasang alamat cadangan, tetapi hanya kalau /31 atau /32 belum lebih dulu menghapus alasan untuk mengurangi. Bedakan wildcard mask dari subnet mask lewat bentuknya. Alokasikan blok besar sebelum blok kecil.

Tidak satu pun dari itu butuh alat bantu begitu sudah menempel di tangan Anda, dan itulah gunanya menghitung sendiri di atas kertas. Untuk mengecek rencana sebelum ia sampai ke router, atau untuk membaca batas biner sebuah blok dalam sekali lihat, kalkulator subnet mengerjakan aritmetikanya secara lokal di browser Anda.

Tag: networking subnetting cidr ip-address cheat-sheet

Artikel Terkait

Lihat semua artikel