Kepentingan kami, yang kami sampaikan sejak awal: kami adalah Geonode dan kami menjual layanan proxy, sehingga kami sering menerima pesan seperti "proxy saya tidak berfungsi". Hal yang jujur untuk dikatakan sebelum yang lain adalah bahwa port hampir tidak pernah menjadi masalahnya. Berdasarkan pengalaman kami, urutan kemungkinan penyebabnya adalah: kredensial yang salah, daftar IP yang diizinkan yang lupa diperbarui, menggunakan port HTTP biasa untuk permintaan HTTPS, target yang memblokir Anda, dan baru kemudian nomor port yang benar-benar salah. Jika Anda sedang melakukan debugging, telusuri daftar tersebut daripada mencoba nomor port secara acak — pendekatan terakhir terasa produktif tetapi hampir tidak pernah berhasil.
Meskipun demikian, memahami fungsi nomor tersebut membuat seluruh klasifikasi kegagalan menjadi lebih mudah dipahami.
Apa Itu Port Sebenarnya
Sebuah mesin memiliki satu alamat dan banyak program yang mungkin memerlukan lalu lintas jaringan. Nomor port adalah cara sistem operasi mengetahui program mana yang menjadi tuan rumah dari suatu koneksi.
Alamat mengarahkan paket ke mesin. Port mengarahkan paket tersebut ke proses yang tepat di mesin tersebut. Satu server dapat menjalankan server web di port 443, daemon SSH di port 22, dan proxy di port 8080 secara bersamaan, karena setiap koneksi membawa port tujuan yang mengarahkannya ke pendengar yang tepat.
Khusus untuk proxy, port memiliki peran tambahan: satu server proxy sering kali mendengarkan di beberapa port, yang masing-masing dikonfigurasi secara berbeda. Perangkat lunak yang sama, mesin yang sama, perilaku yang berbeda tergantung pada nomor mana yang Anda hubungi. Itulah sebabnya penyedia layanan Anda memberikan daftar, bukan nilai tunggal — hal ini akan kita bahas kembali nanti.
Tiga Rentang Port
Port berkisar dari 0 hingga 65535, dan RFC 6335 membagi rentang tersebut menjadi tiga bagian:
| Rentang | Nama | Angka | Penetapan |
|---|
| Sistem | Port Terkenal | 0–1023 | Ditugaskan oleh IANA |
| Pengguna | Port Terdaftar | 1024–49151 | Ditugaskan oleh IANA |
| Dinamis | Port Pribadi atau Sementara | 49152–65535 | Tidak pernah dialokasikan |
Ada dua konsekuensi yang penting dalam praktiknya.
Port sistem biasanya memerlukan hak akses tingkat tinggi untuk diikat. Pada sistem mirip Unix, mengikat port di bawah 1024 secara tradisional memerlukan hak akses root. Inilah alasan langsung mengapa proxy biasanya berada di port 8080 atau 3128, bukan 80 — menjalankan proxy sebagai root untuk mengklaim port rendah bukanlah pertukaran yang menguntungkan hanya demi keuntungan kosmetik.
Port dinamis adalah sumber koneksi Anda sendiri. Saat Anda terhubung ke proxy di port 8080, mesin Anda memilih port sumber sementara dari rentang atas. Hal ini tidak terlihat sampai Anda membaca log firewall dan bertanya-tanya mengapa lalu lintas Anda tampaknya berasal dari port 51423.
Port Proksi Umum dan Apa yang Sebenarnya Dikatakan IANA
Di sinilah terdapat perbedaan antara anggapan umum dan catatan resmi, dan perbedaan ini cukup informatif. Entri-entri ini diambil dari Daftar Nama Layanan dan Nomor Port Protokol Transportasi IANA, yang diambil langsung dari berkas CSV yang dipublikasikan.
| Port | Nama yang umum digunakan | Apa yang sebenarnya terdaftar di IANA |
|---|
| 8080 | Port proxy default | http-alt — "HTTP Alternate (lihat port 80)" |
| 3128 | Port Squid | ndl-aas — "Port Server API Aktif" |
| 1080 | SOCKS | socks — "Socks" |
| 8118 | Privoxy | privoxy — "Proksi HTTP Privoxy" |
| 8888 | Port proxy alternatif | ddi-tcp-1 — "Server NewsEDGE TCP (TCP 1)" |
| 9050 | Tor SOCKS | versiera — "Versiera Agent Listener" |
| 8081 | Port proxy sekunder | sunproxyadmin — "Layanan Admin Proxy Sun" |
Baca tabel itu lagi, karena tabel ini membantah asumsi umum. Dari semua port yang dianggap orang sebagai "port proxy", hanya 1080 dan 8118 yang terdaftar untuk hal-hal yang berkaitan dengan proxy.
Port 3128 — yang secara umum dianggap sebagai port default Squid, dan memang demikian — terdaftar untuk sesuatu yang sama sekali tidak terkait. Port 8888, yang digunakan oleh alat proxy di mana-mana, milik sebuah produk berita. Port 9050, yang dikenal oleh setiap pengguna Tor, terdaftar untuk agen pemantauan.
Pelajaran yang dapat diambil bukanlah bahwa alat-alat ini melakukan kesalahan. Pendaftaran mencatat penugasan yang diminta, dan banyak perangkat lunak yang tersebar luas hanya memilih nomor yang praktis dan menjadi konvensi melalui penggunaan, bukan melalui pendaftaran. Konvensi dan pendaftaran adalah sistem yang berbeda, dan jika keduanya bertentangan, konvensi lah yang diikuti oleh perangkat lunak Anda.
Kesimpulan praktisnya: nomor port tidak memberikan informasi yang pasti mengenai apa yang sedang mendengarkan. Sebuah proxy dapat berjalan di port mana pun. Angka-angka konvensional itu ada karena seseorang harus memilih nilai default, bukan karena angka tersebut memiliki makna tertentu.
Port Tidak Menentukan Protokol
Ini adalah kesalahan konseptual yang paling umum di bidang ini.
Terhubung ke port 1080 tidak berarti koneksi Anda menggunakan protokol SOCKS. Terhubung ke port 8080 tidak berarti koneksi tersebut menggunakan HTTP. Port menentukan listener mana yang menerima koneksi Anda; protokolnya adalah apa pun yang didukung oleh listener tersebut. Jika keduanya tidak sesuai, koneksi akan gagal dengan cara yang sering membingungkan — Anda akan mendapatkan timeout, reset koneksi, atau serangkaian byte yang tidak terbaca, alih-alih pesan kesalahan yang membantu.
Jadi, ketika penyedia layanan Anda memberikan titik akhir (endpoint), Anda memerlukan tiga informasi dan port hanyalah salah satunya:
- Host
- Port
- Protokol yang digunakan oleh port tersebut — HTTP, HTTPS, SOCKS4, atau SOCKS5
Konfigurasi klien harus menyebutkan protokol secara eksplisit. Dalam curl, skema pada argumen -x yang menentukannya:
curl -x http://proxy.example.com:8080 https://example.com
curl -x socks5://proxy.example.com:1080 https://example.com
curl -x socks5h://proxy.example.com:1080 https://example.com
Bentuk ketiga ini lebih penting daripada perbedaan antara dua bentuk pertama. socks5h memerintahkan curl untuk mengirim nama host ke proxy guna resolusi; sedangkan socks5 melakukan resolusi secara lokal dan mengirim alamatnya. Akibatnya adalah kebocoran DNS: lalu lintas Anda keluar melalui proxy sementara permintaan DNS Anda dikirim ke resolver Anda sendiri, yang merupakan jenis ketidakkonsistenan yang dapat menyebabkan sesi Anda ditandai. Jika Anda menggunakan SOCKS5 untuk hal-hal di mana terlihat seolah-olah berada di tempat lain sangat penting, gunakan socks5h.
Perilaku Port yang Sama untuk HTTP, HTTPS, dan SOCKS
Ketiga kasus ini memiliki perbedaan yang dapat menjelaskan sebagian besar gejala yang membingungkan.
HTTP biasa melalui proxy HTTP. Klien Anda mengirimkan URL lengkap pada baris permintaan, dan proxy mengambilnya atas nama Anda. Proxy dapat melihat dan memodifikasi segala sesuatu.
HTTPS melalui proxy HTTP. Klien Anda mengirimkan permintaan CONNECT, dan jika proxy mengizinkannya, proxy tersebut akan membuka terowongan TCP dan meneruskan byte tanpa dapat membacanya. Inilah alasan mengapa proxy HTTP dapat menangani lalu lintas HTTPS, dan mengapa port yang sama dapat melayani keduanya.
Ada dua mode kegagalan yang muncul secara langsung. Beberapa proxy membatasi CONNECT ke port tujuan tertentu — biasanya 443 — sehingga permintaan HTTPS ke port non-standar ditolak sementara penjelajahan biasa tetap berfungsi. Dan beberapa port dikonfigurasi hanya untuk HTTP biasa, dengan CONNECT dinonaktifkan sepenuhnya; gejalanya adalah permintaan HTTP berhasil dan permintaan HTTPS gagal, yang terlihat seperti masalah sertifikat padahal sebenarnya bukan.
SOCKS. RFC 1928 mendefinisikan SOCKS5 sebagai protokol yang beroperasi di bawah lapisan aplikasi. Protokol ini sama sekali tidak memahami HTTP — ia meneruskan koneksi TCP, yang membuatnya lebih umum daripada proxy HTTP. Protokol ini berfungsi untuk protokol yang tidak dapat ditangani oleh proxy HTTP, dan tidak dapat melakukan hal-hal yang spesifik HTTP seperti penyimpanan dalam cache atau penulisan ulang header.
Jika Anda harus memilih: gunakan proxy HTTP untuk lalu lintas web di mana Anda mungkin memerlukan penanganan header; gunakan SOCKS5 ketika Anda perlu mem-proxy sesuatu yang bukan HTTP, atau ketika Anda ingin proxy mengetahui sesedikit mungkin.
Mengapa Penyedia Layanan Memberikan Anda Beberapa Port
Titik akhir multi-port sering membingungkan pemula, padahal logikanya sederhana: penyedia layanan menyematkan konfigurasi dalam nomor port sehingga Anda tidak perlu mengirimkannya melalui cara lain.
Skema umum:
Perilaku rotasi. Satu port memberikan alamat keluar baru pada setiap permintaan; port lainnya mempertahankan alamat yang sama selama sesi beberapa menit. Kredensial yang sama, host yang sama, port yang berbeda.
Penargetan geografis. Sekelompok port dipetakan ke negara atau wilayah tertentu.
Identitas sesi. Rentang port di mana setiap nomor sesuai dengan sesi yang tetap, sehingga menghubungkan ke port yang sama berulang kali akan memberi Anda alamat keluar yang sama.
Protokol. Satu port menggunakan HTTP, yang lain SOCKS5.
Beberapa penyedia melakukan hal yang sama melalui sintaks nama pengguna — dengan menambahkan parameter ke nama pengguna alih-alih mengubah port. Kedua pendekatan tersebut ada dan tidak ada yang lebih baik; Anda hanya perlu membaca dokumentasi dari penyedia yang Anda pilih, karena risiko menebak-nebak adalah permintaan yang berhasil namun menghasilkan hasil yang tidak sesuai dengan yang Anda inginkan.
Poin terakhir ini patut ditekankan. Port yang salah dalam skema rotasi biasanya tidak menghasilkan kesalahan. Hal itu justru menghasilkan permintaan yang berhasil dengan perilaku yang salah — persistensi sesi yang tidak Anda inginkan, atau negara yang tidak Anda minta. Inilah jenis kegagalan diam-diam yang kami bahas dalam mengapa pengujian proxy penting, dan kebingungan port adalah salah satu penyebabnya yang paling umum.
Pemecahan Masalah: Apa yang Dapat Anda Ketahui dari Setiap Kesalahan
Berbagai jenis kesalahan mengindikasikan penyebab yang berbeda-beda, dan memahami gejala tersebut dengan benar dapat menghemat banyak waktu yang terbuang untuk menebak-nebak.
| Gejala | Penyebab yang Kemungkinan | Pemeriksaan |
|---|
| Koneksi ditolak, langsung | Tidak ada yang mendengarkan di port tersebut | Nomor port, host |
| Timeout, tidak ada respons | Firewall memblokir paket tanpa pemberitahuan | Aturan keluar, status penyedia |
| 407 Otentikasi Proxy Diperlukan | Kredensial salah atau tidak ada | Nama pengguna, kata sandi, daftar putih IP |
| 403 dari proxy itu sendiri | Telah diautentikasi, tetapi tidak diizinkan | Batasan paket data, pembatasan tujuan |
| HTTP berfungsi, HTTPS tidak | "CONNECT | |
" dinonaktifkan atau dibatasi pada port tersebut | Port protokol, dokumentasi penyedia |
| Byte sampah atau kesalahan protokol | Ketidaksesuaian protokol | Apakah port ini HTTP atau SOCKS? |
| Berfungsi, tetapi negara atau sesi salah | Port salah dalam skema multi-port | Pemetaan port penyedia |
Perbedaan antara "koneksi ditolak" dan "timeout" adalah yang paling berguna dan paling sering diabaikan. "Ditolak" berarti ada respons tetapi ditolak — mesin tersebut dapat dijangkau dan tidak ada yang mendengarkan di port tersebut. "Timeout" berarti tidak ada respons sama sekali — biasanya disebabkan oleh firewall yang memblokir paket, baik di sisi Anda maupun di antara Anda dan proxy. Yang pertama mengindikasikan nomor port yang salah; yang kedua hampir tidak pernah demikian.
Tes isolasi cepat:
nc -zv proxy.example.com 8080
Jika terhubung, port tersebut terbuka dan dapat dijangkau, dan kegagalan yang tersisa disebabkan oleh otentikasi atau protokol, bukan masalah jaringan. Jika tidak, hentikan debugging aplikasi Anda — masalahnya ada di bawahnya.
Dan kasus 407 layak mendapat perhatian khusus karena ini adalah yang paling umum di antara semuanya dan terlihat seperti masalah port bagi orang yang belum pernah melihatnya sebelumnya. Sebenarnya tidak. Artinya, Anda berhasil mencapai proxy dan proxy tersebut meminta kredensial yang tidak Anda berikan, atau Anda berikan dengan salah. Portnya sudah benar.
Port yang Tidak Boleh Anda Buka
Hal ini berlaku jika Anda mengoperasikan proxy sendiri alih-alih membelinya.
Jangan pernah mengekspos proxy yang tidak terotentikasi ke internet. Proxy terbuka akan terdeteksi dalam hitungan jam — seluruh ruang alamat dipindai secara terus-menerus — dan akan digunakan untuk meneruskan lalu lintas yang tidak Anda izinkan, yang kemudian dikaitkan dengan alamat Anda. Konsekuensinya berkisar dari alamat Anda masuk ke daftar blokir hingga hal-hal yang jauh lebih buruk. Jika sebuah proxy dapat diakses dari internet, maka proxy tersebut memerlukan otentikasi.
Batasi berdasarkan alamat sumber jika memungkinkan. Daftar putih IP yang dipadukan dengan kredensial merupakan peningkatan yang signifikan dibandingkan hanya menggunakan kredensial saja, dan hal ini tidak memerlukan biaya apa pun.
Jangan menganggap port yang tidak biasa sebagai perlindungan. Memindahkan layanan ke port 47281 tidak akan menyembunyikannya. Memindai rentang port lengkap dari satu host hanya membutuhkan waktu beberapa detik. Kerahasiaan tidak memberikan manfaat yang berarti di sini.
Batasi tujuan CONNECT. Proksi yang akan CONNECT ke port mana pun di host mana pun adalah relai serbaguna. Membatasinya ke port 443, dan ke tujuan yang benar-benar Anda butuhkan, secara substansial mengurangi potensi penyalahgunaan jika kredensial bocor.
Tautkan ke localhost jika Anda hanya membutuhkan koneksi lokal. Proksi yang hanya digunakan oleh perangkat lunak di mesin yang sama seharusnya mendengarkan di 127.0.0.1, bukan 0.0.0.0. Satu baris konfigurasi ini mencegah seluruh kategori masalah tersebut, dan ini merupakan kesalahan paling umum dalam pengaturan yang dihosting sendiri.
Pertanyaan Lainnya
Berapa port proxy default?
Tidak ada pengaturan default yang berlaku umum. 8080 adalah konvensi yang paling umum untuk proxy HTTP, 3128 untuk instalasi Squid, dan 1080 untuk SOCKS. Tak satu pun dari angka ini yang diwajibkan — proxy dapat mendengarkan di port mana pun — dan pendaftaran IANA bahkan tidak mencatat 8080 atau 3128 sebagai layanan proxy. Selalu gunakan port yang ditentukan oleh penyedia Anda.
Apakah 8080 merupakan port proxy?
Berdasarkan konvensi, sering kali demikian. Secara resmi, IANA mendaftarkan 8080 sebagai http-alt, yang dijelaskan sebagai "HTTP Alternate (lihat port 80)" — sebuah port server web alternatif, bukan port proxy. Angka ini menjadi konvensi proxy karena mudah diingat dan tidak memerlukan hak akses root untuk mengikatnya, bukan karena memiliki makna sebagai proxy.
Port apa yang digunakan oleh SOCKS5?
Secara konvensional, 1080, dan ini adalah salah satu dari sedikit kasus di mana konvensi tersebut sesuai dengan pendaftaran: IANA mencantumkan 1080 sebagai socks. Penerapan individu bervariasi — port SOCKS Tor secara default menggunakan 9050, yang oleh IANA didaftarkan untuk sesuatu yang sama sekali tidak terkait.
Mengapa proxy saya berfungsi untuk HTTP tetapi tidak untuk HTTPS?
Hampir selalu karena port tersebut tidak mengizinkan metode CONNECT, yang merupakan cara lalu lintas HTTPS disalurkan melalui proxy HTTP, atau karena CONNECT dibatasi pada port tujuan tertentu. Periksa apakah penyedia Anda menawarkan port terpisah untuk HTTPS, dan pastikan port tujuan yang Anda tuju diizinkan.
Bagaimana cara mengetahui port proxy mana yang harus digunakan?
Lihat dokumentasi penyedia layanan Anda. Tidak ada cara untuk menentukannya secara andal hanya dengan memeriksa, karena nomor port tidak memiliki arti pasti mengenai apa yang sedang mendengarkan. Jika Anda harus melakukan pengujian, perintah nc -zv host port akan memberi tahu apakah ada yang mendengarkan, tetapi tidak menyebutkan protokol apa yang digunakannya.
Apa perbedaan antara port proxy dan server proxy?
Server adalah perangkat lunak dan mesin yang menangani lalu lintas Anda. Port adalah titik masuk bernomor pada mesin tersebut yang Anda hubungi. Satu server sering kali mendengarkan di beberapa port dengan konfigurasi berbeda — pola rotasi yang berbeda, negara yang berbeda, protokol yang berbeda — itulah sebabnya penyedia layanan memberikan daftar port kepada Anda, bukan hanya satu nomor.
Apakah saya bisa menggunakan port apa saja untuk proxy?
Secara teknis ya, di mana saja dalam rentang 1024–65535 tanpa hak istimewa khusus. Dalam praktiknya, Anda menggunakan port yang ditetapkan oleh penyedia layanan, karena port tersebut terhubung dengan konfigurasi di sisi mereka. Jika Anda menjalankan proxy sendiri, hindari rentang dinamis di atas 49152, karena sistem operasi Anda mengalokasikan port sumber sementara dari rentang tersebut dan tabrakan port dapat menyebabkan masalah intermiten yang sangat sulit didiagnosis.
Apakah nomor port memengaruhi kecepatan proxy?
Tidak. Port hanyalah detail penunjukan alamat yang tidak memiliki karakteristik kinerja tersendiri. Jika port yang berbeda pada penyedia yang sama menunjukkan kinerja yang berbeda, hal itu disebabkan oleh rute melalui infrastruktur yang berbeda atau perilaku rotasi yang berbeda, bukan karena nomor portnya.
Kesimpulan
Port proxy hanyalah detail perutean: port ini memberi tahu mesin tujuan proses mana yang sedang mendengarkan yang harus menangani koneksi Anda, dan tidak lebih dari itu. Angka itu sendiri tidak memiliki makna yang pasti, seperti yang ditunjukkan dengan jelas oleh registri IANA — 3128 tidak terdaftar untuk Squid, 8888 milik produk berita, dan 9050 adalah agen pemantauan. Ini adalah konvensi yang ditetapkan berdasarkan penggunaan, dan konvensi inilah yang diikuti oleh perangkat lunak Anda.
Apa artinya ini ketika terjadi masalah: baca pesan kegagalan daripada menebak-nebak angka. Pesan “Connection refused” menandakan port yang salah. Pesan “timeout” menandakan adanya firewall. Kode 407 berarti portnya benar tetapi kredensial Anda salah. Kesalahan protokol berarti Anda terhubung ke pendengar SOCKS yang mengharapkan HTTP, atau sebaliknya. Setiap gejala mengidentifikasi lapisan yang berbeda, dan mengganti nomor port hanya membantu pada kasus pertama.
Dan ketika Anda diberikan beberapa port untuk satu titik akhir, bacalah dokumentasinya daripada memilih salah satunya. Mode kegagalan di sini bukanlah pesan kesalahan — melainkan permintaan yang berhasil meskipun diam-diam menggunakan negara yang salah atau perilaku sesi yang salah, yang merupakan jenis kesalahan yang jauh lebih merugikan.