Seseorang memberi Anda alamat pertama dan terakhir lalu meminta rute VPN. Langkah yang menggoda adalah memilih prefiks terpendek yang memuat kedua ujungnya, dan langkah itu diam-diam menambahkan tujuan yang tidak diminta siapa pun. Blok CIDR selalu berukuran pangkat dua dan alamat awalnya selaras dengan ukuran itu, jadi interval sembarang biasanya butuh lebih dari satu. Telusuri interval, bagi dengan tepat, lalu periksa alamat tepat di luarnya.

Mulailah dari interval, bukan prefiks

Tuliskan alamat pertama dan alamat terakhir sebelum Anda menulis hal lain. Pasangan itulah persyaratannya; prefiks hanyalah satu kemungkinan ungkapannya, dan kadang salah. Dua angka juga jauh lebih mudah diperiksa daripada mask.

Interval yang selaras menyusut menjadi satu blok. Yang tidak selaras terurai menjadi beberapa, dan penguraiannya tepat, bukan perkiraan. Yang tidak boleh Anda lakukan adalah membulatkan ke luar dan menyebutnya cukup dekat, karena alamat tambahan menerima kebijakan apa pun yang dibawa rute.

Kedua arah kesalahan itu penting. Untuk rute ke dalam terowongan, alamat tambahan ditarik ke VPN. Untuk pengecualian bypass, alamat tambahan melewatinya. Tidak satu pun hasilnya terlihat di tabel rute yang hanya menampilkan prefiks yang Anda pasang.

Kasus pertama: intervalnya kebetulan selaras

Ambil 198.51.100.64 sampai 198.51.100.127. Alamat pertamanya selaras pada batas 64 alamat dan intervalnya tepat 64 alamat, jadi satu /26 menggambarkannya tanpa sisa.

Itu kasus yang mudah dan layak dikenali, karena berarti persyaratannya kemungkinan ditulis oleh orang yang sudah berpikir dalam prefiks. Artinya juga pemeriksaannya singkat: pastikan ukurannya pangkat dua dan awalnya kelipatan ukuran itu.

Rentang dokumentasi menjadi contoh bagus justru karena tidak ada yang memilikinya. Jangan pasang alamat ini di terowongan sungguhan dan jangan menganggap rentang yang Anda terima adalah ruang dokumentasi hanya karena terlihat tidak biasa.

Kasus kedua: tidak selaras, jadi bagilah

Sekarang ambil 198.51.100.100 sampai 198.51.100.107. Itu delapan alamat, yang merupakan pangkat dua, tetapi 100 bukan kelipatan delapan. Satu blok sebesar itu tidak bisa dimulai di sana, jadi interval harus ditutup oleh lebih dari satu.

Cakupan tepatnya adalah dua blok /30: 198.51.100.100/30 mencakup 100 sampai 103, dan 198.51.100.104/30 mencakup 104 sampai 107. Delapan alamat seluruhnya, tidak ada yang di luar interval, dan penguraiannya unik untuk interval tertentu.

python3 -c "from ipaddress import ip_address, summarize_address_range as s; print(*s(ip_address('198.51.100.100'), ip_address('198.51.100.107')), sep='\n')"

Fungsi pustaka standar mengerjakan aritmetikanya untuk Anda, dan dokumentasi ipaddress menetapkan apa yang dikembalikannya. Yang tidak dilakukannya adalah memilih gateway, memutuskan siapa pemilik alamat, atau memberi akses ke layanan apa pun di belakangnya.

Ukur apa yang akan ditangkap prefiks yang lebih lebar

Sebelum menerima jalan pintas, hitung berapa biayanya. /28 yang dimulai di 198.51.100.96 mencakup 96 sampai 111, yaitu enam belas alamat alih-alih delapan. Delapan tambahannya adalah 96 sampai 99 dan 108 sampai 111, dan setiap satunya akan mewarisi rute.

python3 -c "from ipaddress import ip_network as n; w=set(n('198.51.100.96/28')); t=set(n('198.51.100.100/30'))|set(n('198.51.100.104/30')); print(len(w), len(t), sorted(w-t))"

Delapan tujuan tambahan adalah angka konkret yang bisa Anda masukkan ke permintaan perubahan. Itu juga angka yang menentukan apakah jalan pintas dapat diterima, dan itu pertanyaan kebijakan, bukan aritmetika.

Pisahkan aritmetika dan penemuan. Interval yang diberikan operator jaringan dikonversi dengan tepat. Satu jawaban DNS dari layanan yang berubah tidak menetapkan rentang lengkap atau permanen layanan itu, dan nama yang tidak terkait bisa berbagi satu alamat.

Pasang himpunan tepatnya dan verifikasi tepinya

Serahkan setiap prefiks yang dihasilkan kepada pemilik konfigurasi VPN dan biarkan mereka memasangnya lewat mekanisme yang didukung. Jika persyaratannya butuh dua entri, pertahankan dua entri alih-alih melebarkan satu agar formulir lebih pendek.

sudo ip route add 198.51.100.100/30 via 10.90.0.1 dev tun0
sudo ip route add 198.51.100.104/30 via 10.90.0.1 dev tun0
ip route get 198.51.100.101
ip route get 198.51.100.97

Dua perintah terakhir adalah yang orang lewati. Alamat dalam pertama seharusnya mengikuti rute baru, dan alamat tepat di luar interval tidak. Jika keduanya lewat jalan yang sama, interval telah dilebarkan di suatu titik antara persyaratan dan konfigurasi.

Catat alamat pertama, alamat terakhir, dan prefiks yang menyatakannya. Orang berikutnya yang meninjau aturan itu dapat memeriksa persyaratan terhadap konfigurasi tanpa mengulang aritmetika, dan selisih antara rute yang tepat dan rute yang nyaman tetap terlihat.

Artikel terkait