9.7. Jaringan privat dan NAT

IPv4 dirancang dengan empat miliar alamat, yang terdengar cukup pada saat itu. Ternyata tidak. Setiap rumah, kantor, dan pabrik yang terhubung ke internet membutuhkan blok alamatnya sendiri untuk perangkat internalnya, dan jika ditambah kamera, ponsel, dan peralatan di seluruh dunia, empat miliar tidak akan mencukupi.

Solusi yang diadopsi internet adalah jaringan privat: sebagian besar perangkat di jaringan lokal menggunakan alamat yang tidak unik secara global, melainkan hanya di dalam jaringan tersebut, dan satu perangkat di tepi jaringan menerjemahkan antara dua dunia ini. Kamera hampir selalu berada di salah satu jaringan privat ini.

9.7.1. Rentang alamat privat

Tiga rentang IPv4 dicadangkan sebagai tidak dapat dirutekan di internet publik. Jaringan lokal mana pun bebas menggunakan alamat dari rentang ini tanpa berkoordinasi dengan siapa pun, karena tidak ada router di luar jaringan lokal yang akan mencoba mengirimkan paket ke alamat tersebut:

  • 10.0.0.0 -- 10.255.255.255 (16 juta alamat; umum digunakan di jaringan perusahaan besar).

  • 172.16.0.0 -- 172.31.255.255 (sekitar satu juta alamat; kurang umum di lapangan).

  • 192.168.0.0 -- 192.168.255.255 (65 ribu alamat; default untuk hampir setiap router rumah).

Pada jaringan rumah yang umum, kamera dan laptop yang berkomunikasi dengannya keduanya menggunakan alamat 192.168.x.x, karena itulah rentang yang dipilih router rumah untuk jaringan yang di-hosting-nya.

9.7.1.1. Cara penggunaan netmask

Halaman Alamat IP memperkenalkan notasi /24. Alasan hal ini penting di sini adalah bahwa netmask adalah apa yang digunakan setiap perangkat untuk memutuskan ke mana paket harus dikirim berikutnya. Setiap kali kamera mengirim paket, ia menerapkan netmask-nya sendiri ke alamat tujuan dan melihat hasilnya:

  • Jika tujuan berbagi bit jaringan dengan alamat kamera sendiri, maka tujuan tersebut berada di jaringan lokal yang sama. Kamera mengirim paket langsung ke sana.

  • Jika tujuan tidak berbagi bit jaringan, berarti tujuan tersebut ada di jaringan lain. Kamera mengirim paket ke gateway default-nya (router yang dikonfigurasi secara otomatis saat koneksi terbentuk) dan membiarkan gateway menangani sisanya.

Pengujian tunggal itu -- "apakah kita berbagi bit jaringan?" -- adalah tujuan netmask. Itulah juga mengapa jaringan rumah menggunakan /24 secara default: batas 254 perangkat cocok untuk rumah tangga dan membuat jaringan tetap sederhana.

9.7.2. Network Address Translation

Kamera di 192.168.1.50 tidak bisa begitu saja mengirim paket ke server di internet publik -- internet publik tidak merutekan ke 192.168.x.x. Router rumah menyelesaikan ini dengan Network Address Translation, atau NAT, dan melakukannya secara transparan.

A diagram with three blocks. On the left, two devices on a private network labelled "camera 192.168.1.50" and "laptop 192.168.1.51", both connected to a central box labelled "router". The router has two faces -- a private face labelled "192.168.1.1" toward the devices, and a public face labelled "203.0.113.5" toward the internet. The internet is drawn as a cloud on the right. Arrows from the devices pass through the router and emerge as if from the public address.

NAT menulis ulang alamat sumber paket keluar menjadi alamat publik router, dan membalik penulisan ulang pada balasan masuk, sehingga perangkat privat tampak berbagi satu alamat publik.

Router memiliki dua alamat: satu privat di jaringan lokal (umumnya 192.168.1.1) dan satu publik yang ditetapkan oleh penyedia internet. Ketika kamera mengirim paket ke alamat publik, router

  1. mencatat alamat privat kamera + port dan memasangkannya dengan port keluar sementara miliknya sendiri;

  2. menulis ulang alamat sumber pada paket menjadi alamat publik miliknya sendiri (dan port sumber menjadi port keluar yang dipilih);

  3. mengirim paket yang telah ditulis ulang ke sisi publik.

Ketika balasan datang dan ditujukan ke alamat publik + port router, router mencari pasangannya, menulis ulang tujuan kembali ke alamat privat + port kamera, dan mengantarkannya ke sisi lokal. Kamera tidak pernah tahu penulisan ulang terjadi; server tidak pernah mengetahui sumber aslinya.

NAT membuat jaringan rumah menjadi praktis. Ini juga memiliki dua konsekuensi yang perlu diketahui.

9.7.3. Apa yang diubah NAT

Keluar itu mudah. Kamera di jaringan privat dapat berkomunikasi keluar dengan bebas. Setiap kali kamera membuka koneksi TCP atau mengirim paket UDP ke server jarak jauh, NAT menyiapkan pasangan secara otomatis. Sebagian besar aplikasi kamera bekerja ke arah ini: menangkap citra, mendorongnya ke server, menerima balasan.

Masuk itu sulit. Perangkat di internet publik tidak bisa langsung terhubung ke kamera di jaringan privat. Tidak ada pasangan yang bisa dicari router ketika paket yang tidak diminta tiba di alamat publiknya, sehingga paket tidak tahu harus ke mana. Router membuangnya atau menyerahkannya ke layanan yang berjalan di router itu sendiri.

Tiga solusi untuk kasus masuk yang umum digunakan, dalam urutan kepraktisan yang meningkat:

  • Port forwarding. Konfigurasikan router untuk mengarahkan semua paket masuk pada port publik yang dipilih ke perangkat privat tertentu. Memerlukan akses admin ke router; mudah rusak ketika alamat publik router berubah.

  • VPN. Jalankan jaringan privat virtual yang menempatkan kamera di jaringan logis yang sama dengan siapa pun yang perlu menjangkaunya. Berat; di luar cakupan untuk sebagian besar deployment kamera.

  • Koneksi yang dimulai dari keluar. Kamera terhubung keluar ke server yang dikenal di internet publik dan menjaga koneksi itu tetap terbuka; server menggunakan koneksi yang ada untuk mendorong pesan kembali. Inilah cara kerja push notification dan sebagian besar protokol perangkat yang terhubung ke cloud, dan ini adalah pola yang digunakan oleh sebagian besar aplikasi kamera.

NAT tidak terlihat oleh kode Python di kamera. Skrip hanya berkomunikasi dengan tujuan yang dibutuhkan; router menangani terjemahan di balik layar. Namun arah koneksi memang penting, dan NAT adalah alasan mengapa "kamera menjangkau server cloud" adalah bentuk yang jauh lebih mudah daripada "server cloud menjangkau kamera".