← Semua artikel

Proxy Chain: Cara Kerja Multi-Hop Proxy & Upstream Proxy

Diperbarui 27 Oct 2026

Biasanya penggunaan proxy digambarkan sederhana: client terhubung ke satu proxy, lalu proxy meneruskan koneksi menuju website. Tetapi pada jaringan tertentu, traffic bisa melewati lebih dari satu proxy secara berurutan. Konfigurasi seperti ini sering disebut proxy chain, chained proxy, multi-hop proxy, atau upstream proxy.

Contohnya bukan lagi:

Client → Proxy → Website

melainkan:

Client → Proxy A → Proxy B → Website

bahkan bisa lebih panjang:

Client → Proxy A → Proxy B → Proxy C → Website

Pada skenario tersebut setiap proxy menjadi bagian dari jalur request. Karena itu proxy chain dapat memengaruhi exit IP, latency, authentication, DNS, HTTP CONNECT, logging, hingga troubleshooting jaringan.

Artikel ini membahas proxy chain dari sisi teknis dan penggunaan jaringan yang wajar, bukan sebagai metode untuk menyembunyikan aktivitas ilegal atau menghindari kontrol keamanan.

Apa Itu Proxy Chain?

Proxy chain adalah konfigurasi ketika sebuah koneksi melewati dua atau lebih proxy sebelum mencapai destination.

Client
→
Proxy A
→
Proxy B
→
Website

Proxy A menerima koneksi dari client. Alih-alih langsung terhubung ke website, Proxy A meneruskan request melalui Proxy B.

Proxy B kemudian menjadi intermediary berikutnya sebelum koneksi mencapai destination.

Apa Bedanya Proxy Biasa dan Proxy Chain?

Aspek Single Proxy Proxy Chain
Jumlah intermediary Satu Dua atau lebih
Jalur Client → Proxy → Destination Client → Proxy A → Proxy B → Destination
Konfigurasi Lebih sederhana Lebih kompleks
Latency Biasanya lebih rendah Dapat bertambah
Troubleshooting Lebih sederhana Harus memeriksa setiap hop

Apa Itu Hop dalam Proxy Chain?

Hop adalah satu titik perantara dalam jalur koneksi.

Misalnya:

Client ↓ Proxy A ↓ Proxy B ↓ Proxy C ↓ Website

Proxy A, Proxy B, dan Proxy C dapat dianggap sebagai hop proxy yang berbeda.

Istilah multi-hop berarti koneksi melewati lebih dari satu intermediary.

HTTP Memang Mendukung Chain of Intermediaries

HTTP tidak mengasumsikan bahwa user agent selalu berkomunikasi langsung dengan origin server.

Dalam model HTTP, request dapat melewati beberapa intermediary seperti proxy, gateway, atau tunnel.

Alurnya bisa:

User Agent ↓ Intermediary A ↓ Intermediary B ↓ Intermediary C ↓ Origin Server

Setiap bagian tersebut merupakan koneksi tersendiri.

Apa Itu Upstream Proxy?

Upstream proxy adalah proxy berikutnya yang digunakan sebuah proxy untuk meneruskan request.

Contohnya:

Client
→
Proxy Lokal
→
Upstream Proxy
→
Internet

Dari perspektif Proxy Lokal, proxy berikutnya adalah upstream proxy.

Apa Itu Parent Proxy?

Dalam sistem proxy seperti Squid, istilah parent digunakan untuk proxy/cache upstream yang dapat menerima request dari proxy lain.

Contohnya:

Office Client ↓ Squid Child ↓ Parent Proxy ↓ Internet

Parent menjadi jalur keluar bagi proxy di bawahnya.

Kenapa Menggunakan Upstream Proxy?

Ada beberapa penggunaan yang sah dan umum:

  • jaringan perusahaan harus keluar melalui gateway pusat,
  • kantor cabang meneruskan traffic melalui proxy pusat,
  • pengujian multi-hop network,
  • memisahkan proxy lokal dan internet gateway,
  • menerapkan policy jaringan bertingkat,
  • menggunakan SOCKS proxy sebelum HTTP proxy,
  • membangun cache hierarchy.

Contoh Proxy Chain di Jaringan Kantor

Misalnya komputer karyawan tidak diperbolehkan langsung terhubung ke internet.

Laptop ↓ Proxy Kantor Cabang ↓ Proxy Pusat ↓ Internet

Proxy kantor cabang menerima request dari perangkat lokal.

Semua external request kemudian diteruskan ke proxy pusat yang mempunyai akses internet.

Proxy Chain Tidak Sama dengan Rotating Proxy

Kedua istilah ini sering tercampur.

Rotating proxy mengganti exit IP berdasarkan aturan tertentu.

Proxy chain membicarakan jumlah intermediary dalam satu jalur.

Konsep Fokus
Rotating Proxy IP keluar dapat berubah.
Proxy Chain Traffic melewati beberapa proxy.

Sebuah proxy chain bahkan dapat memakai rotating proxy sebagai salah satu hop.

Contoh Chain dengan Rotating Proxy

Client ↓ Local Proxy ↓ Rotating Gateway ↓ Exit IP A / B / C ↓ Website

Pada model ini proxy chain dan rotation digunakan sekaligus, tetapi tetap merupakan konsep berbeda.

Untuk mekanisme rotation, baca Rotating Proxy.

Proxy Chain Tidak Sama dengan Proxy Pool

Proxy pool adalah kumpulan proxy yang dapat dipilih.

Proxy Pool ├── Proxy A ├── Proxy B ├── Proxy C └── Proxy D

Client biasanya memilih satu endpoint dari pool untuk sebuah koneksi.

Proxy chain justru melewati beberapa proxy secara berurutan:

Proxy A → Proxy B → Proxy C

Proxy Chain dan Exit IP

Website biasanya melihat IP dari proxy terakhir yang membuat koneksi ke destination.

Contohnya:

Client IP ↓ Proxy A ↓ Proxy B ↓ Website

Jika Proxy B yang membuka koneksi akhir menuju website, website biasanya melihat IP Proxy B sebagai source connection.

Proxy Pertama Disebut Apa?

Tergantung konteks, proxy pertama bisa disebut:

  • local proxy,
  • entry proxy,
  • downstream proxy,
  • client-facing proxy.

Istilahnya tidak selalu seragam antarsoftware atau provider.

Proxy Terakhir Disebut Exit Proxy?

Secara praktis proxy terakhir sebelum destination sering disebut exit proxy atau exit node.

Client
→
Proxy A
→
Proxy B
Exit
→
Website

Namun terminology provider dapat berbeda, jadi selalu cek dokumentasi sistem yang digunakan.

Bagaimana Cara Mengecek Exit IP Proxy Chain?

Setelah chain aktif, lakukan request menuju layanan pengecekan public IP.

Contohnya dengan cURL:

curl https://api.ipify.org

Kalau chain dikonfigurasi dengan benar, alamat yang terlihat seharusnya berasal dari sisi exit terakhir.

Proxy Chain dengan SOCKS5 dan HTTP Proxy

Salah satu bentuk chain yang didukung langsung oleh cURL adalah:

Client ↓ SOCKS Proxy ↓ HTTP Proxy ↓ Website

cURL menyediakan opsi --preproxy untuk skenario tersebut.

Contoh Proxy Chain dengan cURL

curl \ --preproxy socks5h://127.0.0.1:1080 \ --proxy http://proxy.example.com:8080 \ https://example.com/

Dalam alur tersebut cURL:

  1. terhubung ke SOCKS proxy terlebih dahulu,
  2. melalui SOCKS membuka koneksi ke HTTP proxy,
  3. menggunakan HTTP proxy untuk mengakses destination.

Apa Fungsi --preproxy?

Opsi --preproxy menentukan SOCKS proxy yang digunakan sebelum cURL terhubung ke HTTP atau HTTPS proxy utama.

cURL
→
SOCKS5
Preproxy
→
HTTP Proxy
→
Destination

Fitur ini berguna untuk testing atau jaringan yang memang membutuhkan dua proxy berbeda.

Kenapa socks5h Sering Digunakan?

Dengan skema:

socks5h://

hostname diteruskan agar resolusinya dilakukan melalui sisi SOCKS proxy.

Sedangkan perilaku DNS dapat berbeda jika menggunakan:

socks5://

Karena itu DNS perlu diperhatikan saat membuat chain.

Baca juga SOCKS5 Proxy.

Proxy Chain dengan HTTPS

Untuk mengakses HTTPS melalui HTTP proxy, client biasanya menggunakan metode CONNECT.

Dengan satu proxy:

Client ↓ HTTP Proxy ↓ CONNECT example.com:443 ↓ TLS ↓ Website

Pada chain, prosesnya bisa lebih kompleks karena salah satu proxy perlu mengakses proxy berikutnya terlebih dahulu.

Contoh HTTPS Multi-Hop

Client ↓ Proxy A ↓ Proxy B ↓ CONNECT example.com:443 ↓ TLS ↓ Website

Detail implementasinya bergantung pada jenis proxy dan bagaimana forwarding diatur.

Apakah Setiap Proxy Bisa Di-chain?

Tidak otomatis.

Beberapa proxy hanya dirancang menerima request dari client biasa.

Proxy lain dapat dikonfigurasi untuk menggunakan upstream proxy.

Yang perlu diperiksa:

  • protocol kompatibel,
  • authentication,
  • CONNECT support,
  • ACL,
  • port policy,
  • upstream configuration.

Butuh Proxy untuk Testing Jalur Koneksi?

GudangProxy menyediakan daftar proxy gratis berdasarkan negara, protokol, tingkat anonimitas, dan status koneksi. Kamu bisa menguji endpoint secara langsung atau menjadikannya bagian dari lab jaringan yang memang kamu kelola.

Lihat Daftar Proxy Gratis →

Proxy Chain di Squid

Squid mendukung hubungan antara beberapa proxy/cache melalui konfigurasi peer.

Salah satu directive utamanya adalah:

cache_peer

Contoh sederhana:

cache_peer parent.example.com parent 3128 0 no-query default

Konfigurasi tersebut mendefinisikan sebuah parent proxy.

Memaksa Squid Menggunakan Parent Proxy

Jika Squid tidak boleh langsung menuju origin, konfigurasi dapat menggunakan aturan seperti:

cache_peer parent.example.com parent 3128 0 no-query default never_direct allow all

Secara konsep:

Client ↓ Local Squid ↓ Parent Squid ↓ Internet

Apa Itu never_direct?

never_direct digunakan untuk menentukan request yang tidak boleh langsung menuju origin server.

Dengan aturan:

never_direct allow all

Squid diarahkan menggunakan peer/upstream sesuai konfigurasi daripada melakukan direct connection.

Apa Itu Parent dan Sibling di Squid?

Dalam hierarki cache, Squid mengenal beberapa relationship.

Jenis Fungsi Sederhana
Parent Peer upstream yang dapat digunakan untuk mendapatkan resource.
Sibling Peer cache setara yang dapat berbagi cached object.

Untuk proxy chain sederhana menuju internet, konsep parent biasanya lebih mudah dipahami.

Proxy Chain Bisa Mempunyai Routing Rule

Tidak semua request harus melalui upstream yang sama.

Contohnya:

Domain internal → DIRECT Internet umum → Parent Proxy Domain tertentu → Proxy B

Dengan policy seperti ini proxy juga berfungsi sebagai routing layer.

Apa Itu Proxy Bypass dalam Chain?

Proxy bypass berarti destination tertentu tidak melewati proxy atau upstream tertentu.

Contohnya:

localhost 127.0.0.1 *.company.local

dapat diarahkan secara direct.

Ini penting supaya traffic lokal tidak dikirim keluar melalui proxy tanpa perlu.

NO_PROXY dan Proxy Chain

Banyak command-line application menggunakan environment variable:

NO_PROXY

untuk menentukan tujuan yang tidak memakai proxy.

Contoh:

NO_PROXY=localhost,127.0.0.1,.example.local

Request yang cocok dengan daftar tersebut dapat melewati konfigurasi proxy aplikasi.

Proxy Chain Menambah Latency?

Biasanya iya.

Single proxy:

Client → Proxy → Website

Multi-hop:

Client → Proxy A → Proxy B → Proxy C → Website

Setiap tambahan hop dapat menambah:

  • connection time,
  • DNS processing,
  • authentication,
  • TCP handshake,
  • TLS/CONNECT overhead,
  • routing distance.

Contoh Dampak Latency

Misalnya:

Jalur Tambahan RTT Contoh
Client → Proxy A 40 ms
Proxy A → Proxy B 90 ms
Proxy B → Website 50 ms

Angka tersebut bukan sekadar dijumlahkan sekali karena sebuah connection dapat membutuhkan beberapa round trip.

Artinya chain yang panjang bisa terasa jauh lebih lambat dibanding satu proxy.

Apakah Lebih Banyak Proxy Selalu Lebih Baik?

Tidak.

Menambah hop tanpa alasan justru memperbesar kompleksitas.

Setiap proxy tambahan menjadi titik yang bisa:

  • offline,
  • timeout,
  • overload,
  • salah konfigurasi,
  • gagal authentication,
  • menambah latency.

Reliability Proxy Chain

Misalnya:

Proxy A uptime: 99% Proxy B uptime: 99% Proxy C uptime: 99%

Walaupun masing-masing cukup stabil, seluruh chain hanya berhasil kalau semua hop yang diperlukan tersedia.

Proxy A ✓
→
Proxy B ✕
→
Proxy C

Kalau Proxy B gagal, seluruh jalur bisa ikut gagal.

Proxy Chain dan Timeout

Chain membuat sumber timeout bertambah.

Contohnya:

Client → Proxy A ✓ Proxy A → Proxy B ✓ Proxy B → Website TIMEOUT

Dari sisi client, request tetap terlihat gagal.

Padahal Proxy A dan Proxy B mungkin masih aktif.

Baca juga Proxy Timeout.

Cara Troubleshooting Proxy Chain

Jangan langsung menguji seluruh chain sekaligus.

Periksa setiap hop secara bertahap.

1. Tes Proxy A

Client → Proxy A → Test Endpoint

2. Tes Proxy B Secara Terpisah

Client → Proxy B → Test Endpoint

3. Tes A → B

Client → Proxy A → Proxy B → Test Endpoint

4. Baru Tambahkan Hop Berikutnya

Client → A → B → C → Test Endpoint

Metode ini lebih mudah menemukan titik kegagalan.

Gunakan Logging pada Setiap Proxy

Kalau proxy dikelola sendiri, log sangat membantu.

Misalnya Proxy A mencatat:

request diterima ↓ connect upstream B ↓ upstream timeout

Kamu langsung tahu masalah berada setelah Proxy A.

Authentication pada Proxy Chain

Authentication menjadi lebih kompleks ketika ada beberapa proxy.

Contohnya:

Client ↓ login A Proxy A ↓ login B Proxy B ↓ Website

Credential Proxy A belum tentu sama dengan credential Proxy B.

HTTP 407 pada Proxy Chain

Status:

407 Proxy Authentication Required

bisa berasal dari salah satu HTTP proxy dalam chain.

Karena itu kamu perlu mengetahui hop mana yang meminta authentication.

Untuk dasar autentikasi, baca Proxy Authentication.

Jangan Berasumsi Credential Otomatis Diteruskan

HTTP proxy authentication memiliki aturan tersendiri.

Credential untuk proxy pertama tidak otomatis berarti bisa digunakan pada upstream proxy berikutnya.

Software proxy harus dikonfigurasi secara benar untuk menangani authentication antar-hop.

Proxy Chain dan IP Whitelist

Misalnya Proxy B hanya menerima koneksi dari IP tertentu.

Dalam chain:

Client → Proxy A → Proxy B

Proxy B kemungkinan melihat source connection dari Proxy A, bukan langsung dari client.

Maka whitelist harus disesuaikan dengan arsitektur tersebut.

Contoh Whitelist Salah

Kamu whitelist:

IP Client

tetapi upstream hanya menerima koneksi dari:

IP Proxy A

hasilnya chain tetap gagal.

Proxy Chain dan DNS

DNS resolution bisa terjadi di beberapa tempat tergantung protocol dan konfigurasi.

Contohnya:

Client resolve hostname atau Proxy A resolve hostname atau Proxy B resolve hostname

Karena itu DNS leak atau perbedaan resolver dapat muncul jika konfigurasi tidak dipahami.

Remote DNS pada SOCKS Chain

Jika menggunakan:

socks5h://

client menyerahkan hostname ke SOCKS proxy untuk di-resolve dari sisi proxy.

Ini berbeda dari melakukan DNS resolution secara lokal sebelum koneksi dibuat.

Proxy Chain dan GeoIP

Lokasi yang relevan bagi website biasanya lokasi exit proxy terakhir.

Contohnya:

Client: Cambodia ↓ Proxy A: Singapore ↓ Proxy B: Indonesia ↓ Website

Jika Proxy B adalah exit terakhir, website dapat melihat source IP yang diasosiasikan dengan Indonesia.

Untuk mengecek lokasi exit, baca Proxy Geolocation.

Lokasi Proxy Pertama Tetap Bisa Memengaruhi Latency

Walaupun website hanya melihat exit terakhir, lokasi seluruh hop tetap penting untuk performa.

Cambodia ↓ Proxy A USA ↓ Proxy B Indonesia ↓ Website Singapore

Jalur tersebut melakukan perjalanan sangat jauh.

Exit mungkin Indonesia, tetapi latency tetap tinggi karena Proxy A berada di Amerika Serikat.

Pilih Chain yang Masuk Akal Secara Geografis

Untuk testing jaringan, jalur:

Cambodia → Singapore → Indonesia

biasanya lebih masuk akal dibanding:

Cambodia → USA → Europe → Indonesia

kalau tujuanmu hanya membutuhkan exit Indonesia.

Proxy Chain dan Via Header

HTTP mempunyai header:

Via

yang dapat digunakan untuk mencatat intermediary yang meneruskan request atau response.

Contoh:

Via: 1.1 proxy-a, 1.1 proxy-b

Dalam HTTP, intermediary dapat menambahkan informasi tersebut ketika message diteruskan.

Apakah Via Selalu Memperlihatkan IP Proxy?

Tidak.

Intermediary dapat menggunakan pseudonym dan implementasi proxy juga berbeda.

Jadi jangan menganggap Via selalu memberikan daftar IP asli setiap proxy.

Via Membantu Mendeteksi Loop

Salah satu kegunaan Via adalah membantu mencatat jalur intermediary dan menghindari forwarding loop.

Loop bisa terjadi seperti:

Proxy A ↓ Proxy B ↓ Proxy A ↓ Proxy B ↓ ...

Kalau tidak dicegah, request bisa berputar dan gagal.

Apa Itu Proxy Loop?

Proxy loop terjadi ketika routing proxy membuat request kembali ke proxy yang sebelumnya sudah dilewati.

Proxy A
→
Proxy B
→
Proxy A

Akibatnya:

  • request tidak mencapai origin,
  • resource terbuang,
  • latency meningkat,
  • log dipenuhi request berulang.

Bagaimana Mencegah Proxy Loop?

Gunakan:

  • routing rule yang jelas,
  • peer configuration yang benar,
  • Via header pada HTTP intermediary,
  • ACL untuk mencegah request kembali ke peer asal,
  • monitoring dan logging.

Proxy Chain vs VPN Multi-Hop

Walaupun sama-sama bisa mempunyai beberapa hop, keduanya bukan konsep yang sama.

Aspek Proxy Chain VPN Multi-Hop
Layer Tergantung proxy/protocol Network tunnel
Cakupan Bisa per aplikasi Biasanya lebih luas
Protocol HTTP, SOCKS, dll. VPN protocol
Encryption Tidak otomatis VPN tunnel umumnya terenkripsi

Apakah Proxy Chain Otomatis Mengenkripsi Traffic?

Tidak.

Menambahkan proxy bukan berarti menambahkan encryption.

Encryption bergantung pada protocol.

Contohnya:

HTTPS melalui proxy

memiliki TLS antara client dan destination sesuai model koneksinya.

Tetapi HTTP proxy biasa sendiri bukan teknologi encryption seperti VPN.

Apakah SOCKS5 Mengenkripsi Traffic?

SOCKS5 sendiri juga tidak menyediakan encryption untuk seluruh payload.

Kalau aplikasi menggunakan HTTPS di atas SOCKS5, data HTTPS tetap terlindungi oleh TLS.

Proxy Chain dan Connection Reuse

Proxy modern dapat mempertahankan koneksi upstream untuk digunakan kembali.

Daripada:

Request 1 → buat connection baru Request 2 → buat connection baru Request 3 → buat connection baru

proxy dapat menggunakan persistent connection jika implementation dan kondisi memungkinkan.

Ini dapat mengurangi overhead handshake.

Proxy Chain dan Load Balancing

Sebuah proxy juga dapat mempunyai beberapa upstream.

Proxy A ├── Parent B ├── Parent C └── Parent D

Pemilihan upstream dapat dilakukan berdasarkan:

  • round-robin,
  • source IP,
  • username,
  • latency,
  • availability,
  • routing policy.

Squid misalnya menyediakan beberapa mekanisme peer selection.

Proxy Chain dan Failover

Kalau satu upstream gagal, sistem tertentu dapat menggunakan upstream lain.

Proxy B gagal ↓ coba Proxy C ↓ request berhasil

Namun behavior ini harus memang dikonfigurasi. Jangan menganggap semua proxy melakukan failover otomatis.

Health Check Upstream Proxy

Untuk chain yang digunakan production, sebaiknya monitor:

  • connection success,
  • latency,
  • HTTP status,
  • timeout rate,
  • authentication failure,
  • upstream availability.

Konsepnya mirip dengan pengecekan proxy biasa.

Baca Cara Cek Proxy Aktif.

Proxy Chain dan Logging

Semakin banyak hop, semakin penting correlation antara log.

Misalnya:

Request ID: abc123 Proxy A: abc123 → upstream B Proxy B: abc123 → origin Origin: abc123 → 200

Dengan request ID atau mekanisme observability lain, troubleshooting menjadi jauh lebih mudah.

Masalah Umum pada Proxy Chain

Masalah Kemungkinan Penyebab
Connection timeout Salah satu hop tidak dapat dijangkau.
407 Authentication proxy gagal.
403 ACL atau destination menolak koneksi.
502 Upstream memberikan response tidak valid/gagal.
504 Upstream timeout.
Latency tinggi Terlalu banyak hop atau routing jauh.
IP keluar salah Chain/bypass tidak sesuai.
Loop Routing peer salah konfigurasi.

Kenapa 502 Bisa Muncul pada Proxy Chain?

Misalnya:

Client ↓ Proxy A ↓ Proxy B gagal ↓ 502

Proxy A dapat mengembalikan gateway error kalau komunikasi dengan upstream tidak berjalan sesuai yang diharapkan.

Kenapa 504 Bisa Muncul?

Kalau upstream tidak memberikan response dalam waktu yang diizinkan:

Proxy A ↓ Proxy B ↓ menunggu... ↓ timeout

Proxy A dapat memberikan status 504 tergantung implementasinya.

Bagaimana Mengetahui Hop yang Bermasalah?

Gunakan metode eliminasi.

A saja → berhasil B saja → berhasil A → B → gagal

Kalau masing-masing proxy bekerja sendiri tetapi chain gagal, masalah mungkin ada pada:

  • authentication antarproxy,
  • ACL,
  • protocol mismatch,
  • DNS,
  • routing upstream.

Protocol Mismatch pada Proxy Chain

Misalnya sistem mengira upstream adalah HTTP:

http://proxy-b:8080

padahal server sebenarnya SOCKS5.

Port bisa terbuka tetapi negotiation gagal.

Akibatnya bisa berupa:

  • timeout,
  • connection reset,
  • bad response,
  • protocol error.

Proxy Chain untuk Development dan Testing

Proxy chain dapat berguna untuk:

  • menguji routing aplikasi,
  • menguji upstream proxy,
  • menguji corporate gateway,
  • debugging network path,
  • testing HTTP intermediary,
  • testing proxy authentication.

Untuk development, sebaiknya mulai dari dua hop terlebih dahulu sebelum membuat chain yang lebih kompleks.

Apakah Chain Tiga Proxy Diperlukan?

Untuk penggunaan normal, sering kali tidak.

Semakin panjang chain:

A → B → C → D → E

semakin sulit:

  • menjaga stabilitas,
  • melakukan debugging,
  • menentukan sumber latency,
  • mengelola credential,
  • menghindari routing loop.

Gunakan jumlah hop sesuai kebutuhan nyata.

Proxy Chain Tidak Selalu Meningkatkan Anonimitas

Menambah proxy tidak otomatis membuat koneksi lebih anonim.

Anonimitas bergantung pada:

  • konfigurasi proxy,
  • header yang diteruskan,
  • logging,
  • protocol,
  • DNS,
  • application behavior.

Untuk konsep anonimitas, baca Proxy Anonymous.

Proxy Chain dan X-Forwarded-For

Dalam beberapa arsitektur HTTP, intermediary dapat menambahkan header yang berhubungan dengan alamat client.

Contohnya:

X-Forwarded-For

Tetapi header tersebut bukan indikator yang aman untuk menentukan identitas client jika datang dari sumber yang tidak dipercaya.

Pengelolaan header forwarding harus disesuaikan dengan arsitektur dan trust boundary jaringan.

Jangan Percaya Forwarding Header Secara Buta

Client dapat saja mengirim header tertentu sendiri.

Reverse proxy atau application server harus menentukan proxy mana yang dipercaya sebelum memakai forwarding header untuk keputusan keamanan.

Cara Mendesain Proxy Chain yang Lebih Mudah Dikelola

  1. Gunakan sesedikit mungkin hop.
  2. Tentukan fungsi tiap proxy dengan jelas.
  3. Dokumentasikan protocol tiap hop.
  4. Tentukan DNS dilakukan di mana.
  5. Gunakan authentication terpisah bila perlu.
  6. Pasang timeout.
  7. Aktifkan logging.
  8. Monitor health upstream.
  9. Hindari routing loop.
  10. Uji setiap hop secara independen.

Contoh Dokumentasi Chain

CLIENT | | SOCKS5 v PROXY-A:1080 | | HTTP v PROXY-B:3128 | | HTTPS CONNECT v DESTINATION:443

Dokumentasi sederhana seperti ini dapat menghemat banyak waktu saat troubleshooting.

Checklist Proxy Chain

Yang Dicek Pertanyaan
Proxy A Apakah endpoint aktif?
Proxy B Apakah dapat diakses dari Proxy A?
Protocol HTTP, HTTPS, SOCKS4 atau SOCKS5?
Authentication Credential dibutuhkan pada hop mana?
DNS Siapa yang melakukan resolution?
Exit IP IP mana yang terlihat destination?
Latency Hop mana yang paling lambat?
Timeout Apakah timeout diatur per hop?
ACL Apakah upstream menerima source proxy sebelumnya?
Loop Apakah routing dapat kembali ke proxy sebelumnya?

Kapan Proxy Chain Sebaiknya Digunakan?

Proxy chain masuk akal ketika memang ada kebutuhan arsitektur seperti:

  • corporate upstream gateway,
  • branch-to-central proxy,
  • network lab,
  • SOCKS preproxy sebelum HTTP proxy,
  • cache hierarchy,
  • policy routing.

Kapan Satu Proxy Lebih Baik?

Kalau kebutuhanmu hanya:

  • mengganti exit IP,
  • testing lokasi,
  • menggunakan proxy di browser,
  • request API melalui satu endpoint,

satu proxy biasanya lebih sederhana dan lebih mudah dikelola.

Kesalahan Umum Saat Membuat Proxy Chain

  • menganggap semua proxy dapat di-chain,
  • menggunakan protocol yang salah,
  • tidak mengatur upstream authentication,
  • tidak mengecek source IP untuk whitelist,
  • membuat chain terlalu panjang,
  • tidak memasang timeout,
  • tidak mencatat exit IP,
  • mengabaikan DNS resolution,
  • tidak mengaktifkan logging,
  • membuat forwarding loop.

FAQ Proxy Chain

Apa itu proxy chain?

Proxy chain adalah konfigurasi ketika koneksi melewati dua atau lebih proxy secara berurutan sebelum mencapai destination.

Apa itu multi-hop proxy?

Multi-hop proxy merupakan istilah untuk jalur koneksi yang mempunyai beberapa hop proxy, misalnya Client → Proxy A → Proxy B → Website.

Apa itu upstream proxy?

Upstream proxy adalah proxy berikutnya yang digunakan sebuah proxy untuk meneruskan request menuju internet atau destination.

Apa itu parent proxy?

Parent proxy adalah peer upstream yang digunakan proxy lain untuk meneruskan request. Istilah ini umum digunakan pada sistem seperti Squid.

Proxy mana yang terlihat oleh website?

Biasanya website melihat alamat IP dari proxy terakhir yang membuat koneksi menuju destination, atau exit proxy.

Apakah proxy chain membuat koneksi lebih lambat?

Bisa. Setiap hop tambahan dapat menambah latency, connection establishment, authentication, dan processing.

Apakah proxy chain sama dengan rotating proxy?

Tidak. Proxy chain membahas beberapa proxy dalam satu jalur, sedangkan rotating proxy membahas perubahan exit IP berdasarkan aturan tertentu.

Bisakah SOCKS5 dan HTTP proxy digunakan dalam satu chain?

Bisa jika software mendukungnya. cURL misalnya menyediakan opsi --preproxy untuk memakai SOCKS proxy sebelum HTTP atau HTTPS proxy.

Kenapa proxy chain mendapatkan 407?

Salah satu HTTP proxy dalam chain mungkin membutuhkan authentication. Periksa credential dan tentukan hop mana yang mengirim response 407.

Bagaimana cara troubleshooting proxy chain?

Uji setiap proxy secara terpisah terlebih dahulu, kemudian gabungkan hop satu per satu sambil memeriksa protocol, authentication, DNS, latency, log, dan timeout.