Skip to content
Artikel / 6 menit baca

Konfigurator SOCKS5 untuk Linux: proxychains, redsocks, dan Perutean Per-Aplikasi

Linux tidak memiliki satu sakelar SOCKS5, tetapi Anda dapat merutekan per aplikasi dengan proxychains, secara transparan dengan redsocks, atau melalui variabel lingkungan. Berikut cara mengonfigurasi masing-masing, memverifikasi DNS, dan menghindari kebocoran.

Mencari "konfigurator SOCKS5" di Linux sering kali menimbulkan kebingungan: tidak ada sakelar SOCKS5 di seluruh sistem di GNOME atau KDE seperti halnya untuk proxy HTTP. Sebaliknya, Linux memberi Anda blok bangunan yang fleksibel. Panduan ini mencakup cara-cara praktis untuk merutekan lalu lintas melalui proxy SOCKS5 di Linux—per aplikasi, secara transparan, dan untuk alat CLI tertentu—dengan kode yang dapat Anda adaptasi.

Cara Kerja SOCKS5 di Linux (dan Mengapa DNS Penting)

SOCKS5 adalah protokol proxy generik yang dapat menangani koneksi TCP (dan UDP dengan beberapa ekstensi, tetapi sebagian besar implementasi tetap menggunakan TCP). Di Linux, perbedaan utamanya adalah antara socks5 dan socks5h:

  • socks5:// menyelesaikan DNS secara lokal di mesin Anda, lalu mengirim IP ke proxy.
  • socks5h:// mengirim nama host ke proxy, yang menyelesaikannya dari jarak jauh.

Untuk konten yang dibatasi secara geografis atau menghindari kebocoran DNS, socks5h biasanya menjadi pilihan yang tepat. Jika penyedia proxy Anda memberi Anda endpoint SOCKS5, Anda sering dapat memaksa DNS jarak jauh dengan menggunakan varian h atau pengaturan seperti "Proxy DNS saat menggunakan SOCKS v5" di Firefox.

Perutean Per-Aplikasi dengan proxychains

proxychains-ng adalah fork yang dipelihara dari alat proxychains klasik. Alat ini menggunakan LD_PRELOAD untuk mencegat panggilan jaringan dari program yang ditautkan secara dinamis dan merutekannya melalui proxy Anda. Ini adalah padanan Linux terdekat dengan Proxifier di Windows atau macOS, meskipun cara kerjanya di balik layar berbeda.

Pasang di Debian/Ubuntu:

sudo apt install proxychains4

Di Arch:

sudo pacman -S proxychains-ng

Edit file konfigurasi (biasanya /etc/proxychains4.conf atau ~/.proxychains/proxychains.conf). Di bagian akhir, tentukan proxy Anda:

[ProxyList]
socks5 127.0.0.1 1080

Jika proxy Anda memerlukan autentikasi:

socks5 203.0.113.10 1080 username password

Untuk merutekan DNS melalui proxy, biarkan baris proxy_dns tidak dikomentari di konfigurasi. Ini membuat proxychains menggunakan DNS jarak jauh, mirip dengan socks5h.

Jalankan perintah apa pun melalui proxy:

proxychains4 curl https://ifconfig.me
proxychains4 firefox

Catatan: proxychains tidak berfungsi dengan biner yang ditautkan secara statis, biner setuid, atau aplikasi yang melakukan panggilan soket mentah. Secara default, alat ini juga tidak mem-proxy lalu lintas UDP. Untuk kasus tersebut, pertimbangkan pendekatan proxy transparan di bawah.

Proxy Transparan dengan redsocks

Jika Anda ingin merutekan semua lalu lintas TCP (atau port tertentu) melalui proxy SOCKS5 tanpa konfigurasi per aplikasi, redsocks dapat mengalihkan koneksi pada tingkat kernel. Ini lebih kompleks dan dapat merusak jaringan Anda jika salah konfigurasi, jadi berhati-hatilah.

Pasang redsocks:

sudo apt install redsocks

Buat file konfigurasi, misalnya /etc/redsocks.conf:

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;
    ip = 203.0.113.10;
    port = 1080;
    type = socks5;
    login = "username";
    password = "password";
}

Kemudian gunakan iptables untuk mengalihkan lalu lintas TCP keluar ke port redsocks lokal. Misalnya, untuk mengalihkan semua lalu lintas TCP kecuali jaringan lokal:

sudo iptables -t nat -N REDSOCKS
sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345
sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

Pengaturan ini mengalihkan TCP keluar dari mesin lokal. Sesuaikan aturan agar sesuai dengan kebutuhan Anda (misalnya, kecualikan pengguna atau tujuan tertentu). Ingatlah bahwa DNS sering kali UDP; redsocks dapat menangani DNS TCP, tetapi Anda mungkin memerlukan konfigurasi tambahan untuk UDP. Banyak pengguna menggabungkan redsocks dengan resolver DNS lokal seperti dnscrypt-proxy atau unbound untuk menghindari kebocoran.

Variabel Lingkungan dan Alat CLI

Banyak alat command-line mematuhi variabel lingkungan seperti http_proxy, https_proxy, dan all_proxy. Untuk SOCKS5, yang paling andal adalah all_proxy dengan skema socks5h:

export all_proxy=socks5h://127.0.0.1:1080
curl https://ifconfig.me

Beberapa alat juga menghormati http_proxy dan https_proxy dengan URL socks5://, tetapi dukungannya bervariasi. Untuk alat tertentu, konfigurasikan secara langsung:

  • curl: gunakan --socks5-hostname 127.0.0.1:1080 (setara dengan socks5h).
  • git: git config --global http.proxy socks5h://127.0.0.1:1080
  • SSH: gunakan dynamic forwarding untuk membuat proxy SOCKS lokal: ssh -D 1080 -N user@remote-host. Lalu arahkan alat lain ke 127.0.0.1:1080.

Konfigurasi Browser di Linux

Firefox memiliki dukungan SOCKS5 yang sangat baik. Buka Pengaturan → Pengaturan Jaringan → Konfigurasi proxy manual, atur Host SOCKS ke 127.0.0.1 dan Port ke 1080, pilih SOCKS v5, dan centang "Proxy DNS saat menggunakan SOCKS v5". Ini membuat Firefox menggunakan DNS jarak jauh.

Chrome dan Chromium di Linux dapat diluncurkan dengan flag proxy:

google-chrome --proxy-server="socks5://127.0.0.1:1080"

Namun, secara default ini tidak mem-proxy DNS. Chrome akan menyelesaikan nama host secara lokal, yang dapat membocorkan DNS. Untuk memaksa DNS jarak jauh, Anda dapat menggunakan --host-resolver-rules atau ekstensi proxy yang menangani SOCKS5 dengan DNS jarak jauh. Alternatifnya, gunakan proxy transparan di seluruh sistem seperti redsocks untuk menghindari flag per browser.

Memverifikasi Pengaturan Anda dan Memeriksa Kebocoran

Setelah mengonfigurasi, selalu verifikasi bahwa lalu lintas melewati proxy dan DNS tidak bocor. Pemeriksaan cepat:

  • IP yang terlihat: curl https://ifconfig.me atau curl https://ipinfo.io/ip. (Jika menggunakan proxychains, awali dengan proxychains4.)
  • Uji kebocoran DNS: kunjungi situs seperti dnsleaktest.com di browser Anda dan periksa apakah server DNS milik ISP Anda atau penyedia proxy Anda.
  • Kebocoran WebRTC: di browser, WebRTC dapat mengungkap IP asli Anda. Nonaktifkan WebRTC atau gunakan ekstensi untuk memblokirnya jika perlu.
  • Pemeriksaan DNS terminal: dig +short example.com akan menggunakan resolver sistem Anda kecuali Anda telah mengonfigurasi proxychains atau forwarder DNS lokal. Untuk melihat apakah DNS diproksikan, bandingkan hasil dengan dan tanpa proxy.

Jebakan Umum dan Cara Menghindarinya

  • Menggunakan socks5:// saat Anda membutuhkan socks5h://: Ini adalah penyebab paling umum kebocoran DNS. Jika alat Anda mendukungnya, selalu gunakan varian h.
  • Menganggap semua aplikasi mematuhi proxychains: Biner yang ditautkan secara statis dan beberapa aplikasi sandbox melewati LD_PRELOAD. Uji setiap aplikasi yang Anda butuhkan.
  • Melupakan UDP dan QUIC: Proxy SOCKS5 biasanya hanya menangani TCP. QUIC (digunakan oleh HTTP/3) berjalan di atas UDP dan dapat melewati proxy Anda. Nonaktifkan QUIC di browser Anda jika Anda memerlukan konsistensi mutlak.
  • Kebocoran IPv6: Jika proxy Anda hanya mendukung IPv4, lalu lintas IPv6 mungkin keluar langsung. Nonaktifkan IPv6 atau rutekan melalui proxy jika didukung.
  • Loop proxy transparan: Dengan redsocks, berhati-hatilah untuk tidak mengalihkan lalu lintas yang dibutuhkan proxy itu sendiri (misalnya, lalu lintas ke IP server proxy). Gunakan aturan pengecualian.

Kesimpulan

Linux tidak menawarkan konfigurator SOCKS5 sekali klik, tetapi itu adalah fitur, bukan bug. Anda dapat memilih perutean per aplikasi dengan proxychains, pengalihan transparan dengan redsocks, atau variabel lingkungan sederhana untuk alat CLI. Pilih metode yang sesuai dengan alur kerja Anda, lalu verifikasi DNS dan kebocoran sebelum mempercayakannya dengan lalu lintas sensitif.