Panduan Proxychains + javaws di macOS (SSH SOCKS5 Tunnel)#

1. Install Homebrew (jika belum ada)#

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Lewati langkah ini kalau brew --version sudah jalan.

2. Install proxychains-ng#

macOS tidak punya paket proxychains klasik (itu untuk Linux, pakai LD_PRELOAD). Yang dipakai di macOS adalah fork-nya, proxychains-ng, yang memakai DYLD_INSERT_LIBRARIES.

brew install proxychains-ng

Binary yang terpasang bernama proxychains4, bukan proxychains.

3. Lokasi file konfigurasi#

/opt/homebrew/etc/proxychains.conf   # Apple Silicon
/usr/local/etc/proxychains.conf      # Intel Mac

Cek path pastinya dengan:

brew --prefix proxychains-ng

4. Buat SSH Tunnel SOCKS5#

ssh -D 1080 -N -f user@remote-server.com

Penjelasan flag:

  • -D 1080 — buka SOCKS5 proxy lokal di port 1080
  • -N — tidak menjalankan perintah remote, cuma tunneling
  • -f — jalan di background

Kalau perlu autentikasi key-based:

ssh -D 1080 -N -f -i /path/to/key user@remote-server.com

Cek apakah tunnel aktif:

lsof -i :1080

5. Edit proxychains.conf#

nano /opt/homebrew/etc/proxychains.conf

Isi konfigurasinya:

# Mode chain — untuk 1 proxy, pakai strict_chain
strict_chain

# Pastikan dynamic_chain dan random_chain di-comment (nonaktif)
# dynamic_chain
# random_chain

# Diperlukan agar DNS lookup ikut lewat proxy (hindari DNS leak)
proxy_dns

# Timeout koneksi (ms)
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks5 127.0.0.1 1080

6. Jalankan javaws lewat proxychains#

proxychains4 -f /opt/homebrew/etc/proxychains.conf javaws your-app.jnlp

Catatan: Sejak Java 11, Oracle menghapus Java Web Start dari JDK. Kalau javaws masih dipakai, kemungkinan besar itu berasal dari:

  • OpenWebStart — brew install --cask openwebstart
  • JDK lama (Java 8) yang masih menyertakan javaws bawaan Oracle

7. Verifikasi trafik lewat proxy#

Tes dulu tanpa javaws:

proxychains4 curl https://ifconfig.me

IP yang muncul harus menjadi IP dari remote-server.com, bukan IP asli mesin kamu.

Troubleshooting#

  • command not found: proxychains4 — pastikan Homebrew ada di $PATH:

    export PATH="/opt/homebrew/bin:$PATH"

    Tambahkan baris ini ke ~/.zshrc agar permanen.

  • javaws tidak ikut lewat proxy meski proxychains jalan — JVM kadang pakai native networking (NIO) yang tidak selalu bisa di-hook oleh DYLD_INSERT_LIBRARIES. Alternatif yang lebih andal: konfigurasi proxy langsung di level JVM.

    javaws -J-DsocksProxyHost=127.0.0.1 -J-DsocksProxyPort=1080 your-app.jnlp
  • DNS leak — pastikan proxy_dns aktif di proxychains.conf, agar resolusi DNS tidak bocor lewat koneksi jaringan asli.