Proxy untuk Transparent Proxy / iptables
Dalam kebanyakan kasus, ketika kita berbicara tentang proxy, yang kita maksud adalah proxy “biasa” atau “tidak transparan”. Proxy ini memerlukan pengaturan eksplisit di setiap aplikasi. Namun, ada pendekatan lain yang jauh lebih kuat, yaitu proxy transparan (Transparent Proxy).
Teknologi ini menangkap dan mengalihkan lalu lintas jaringan tanpa diketahui oleh pengguna akhir dan aplikasinya. Program di komputer pengguna bahkan tidak menyadari bahwa lalu lintas mereka melewati proxy.
Analogi:
Proxy biasa seperti mengirim paket melalui layanan kurir yang Anda pilih dan panggil sendiri.
Proxy transparan seperti jika semua kantor pos secara default membungkus semua paket Anda dan mengirimkannya melalui rute khusus, tanpa memberi tahu Anda.
Mekanisme yang memungkinkan hal ini di dunia Linux disebut iptables. Dalam panduan ini, kita akan membahas cara kerjanya, kegunaannya, dan cara mengkonfigurasi sistem tersebut secara praktis.
⛔️ Peringatan penting sebelum memulai
Panduan ini ditujukan untuk pengguna tingkat lanjut. Anda akan bekerja dengan iptables dan mendapatkan akses root penuh ke sistem. Perintah yang salah dapat memblokir akses Anda ke jaringan (termasuk SSH) sepenuhnya.
- Uji di VM: Selalu uji pengaturan seperti ini terlebih dahulu di mesin virtual.
- Siapkan rencana cadangan: Pastikan Anda memiliki akses konsol ke server (bukan SSH) jika Anda memblokir jaringan Anda sendiri.
- Penyedia tepercaya: Anda mempercayakan seluruh lalu lintas Anda ke server proxy. Pastikan Anda menggunakan penyedia yang andal dan teruji. Jangan memproksi lalu lintas sensitif (perbankan) tanpa enkripsi ujung ke ujung.
- Kompatibilitas: Untuk distribusi baru (Ubuntu 22+, Fedora), periksa
iptables --version— jika nft, alihkan:sudo update-alternatives --set iptables /usr/sbin/iptables-legacy. Dalam kontainer (Docker), redsocks memerlukan cap_net_admin; gunakan --privileged.
Bagian 1. Mengapa proxy transparan diperlukan?
Proxying transparan adalah kontrol total atas lalu lintas di tingkat jaringan.
- Jaringan perusahaan dan Wi-Fi: Untuk penyaringan konten, penyimpanan data dalam cache, dan analisis keamanan terpusat.
- Manajemen perangkat (IoT): Anda dapat memproksi lalu lintas dari perangkat yang tidak dapat dikonfigurasi secara manual (Smart TV, konsol game, gadget IoT).
- Mengatasi sensor untuk seluruh jaringan: Daripada mengkonfigurasi VPN di setiap perangkat, Anda dapat mengkonfigurasi router satu kali, yang akan mengarahkan seluruh lalu lintas melalui proxy.
Bagian 2. Mekanisme kerja: iptables
iptables adalah alat untuk mengelola paket jaringan di kernel Linux (Netfilter). Kita akan menggunakan tabel nat (Network Address Translation).
Hal yang penting adalah memilih rantai yang tepat untuk intersepsi:
- Rantai PREROUTING: Mencegat lalu lintas yang melewati server Anda (lalu lintas transit). Ini adalah pilihan Anda jika Anda mengkonfigurasi gateway atau router untuk perangkat lain di jaringan.
- Rantai OUTPUT: Menangkap lalu lintas yang dihasilkan oleh SERVER ITU SENDIRI (misalnya, curl, apt-get, atau skrip yang dijalankan secara lokal).
Bagian 3. Implementasi praktis dengan redsocks
REDIRECT sederhana tidak dapat bekerja dengan proxy SOCKS5 jarak jauh yang memerlukan otentikasi. Kita memerlukan redsocks.
redsocks adalah daemon yang menerima lalu lintas iptables yang dialihkan, kemudian menghubungkan sendiri ke proxy jarak jauh Anda.
Catatan: redsocks asli cukup tua (pembaruan terakhir ~2018). Kami merekomendasikan untuk menggunakan fork redsocks2 (REDSOCKS2), yang memiliki perbaikan, fitur baru (pengalihan otomatis tanpa daftar hitam, dukungan shadowsocks, IPv6), dan masih relevan pada tahun 2025. Jika distribusi Anda memiliki paket redsocks2 — gunakanlah.
Jika tidak:git clone https://github.com/semigodking/redsocks && cd redsocks && make && sudo make install
(atau fork serupa https://github.com/Intika-Linux-Proxy/Red-Socks-2).
Langkah 1. Mengumpulkan data akun proxy
Langkah pertama dan terpenting adalah memastikan bahwa Anda memiliki data lengkap untuk otorisasi. “Kunci” ini akan memungkinkan aplikasi atau browser Anda terhubung ke server proxy dan mengarahkan lalu lintas melalui server tersebut.
Pastikan Anda menyiapkan data berikut:
- Alamat IP (server host)
- Port untuk koneksi
- Login dan kata sandi untuk otorisasi
- Jenis protokol (HTTP/HTTPS atau SOCKS5)
*Gambar 1. Tangkapan layar ini menunjukkan lokasi semua bidang yang diperlukan untuk menghubungkan ke server proxy di akun pribadi **CyberYozh App**.*Langkah 2. Menginstal redsocks
sudo apt update
sudo apt install redsocks # Untuk yang asli; untuk redsocks2 — lihat di atas
Langkah 3. Mengkonfigurasi redsocks (TCP + DNS)
Buka file konfigurasi sudo nano /etc/redsocks.conf. Ubah menjadi seperti berikut, dengan memasukkan data proxy Anda. Kita akan mengkonfigurasi redsocks untuk lalu lintas TCP, redudp untuk UDP/DNS, dan dnstc untuk TCP-DNS (untuk menangkap permintaan TCP yang jarang terjadi).
base {
log_debug = off;
log_info = on;
log = “file:/var/log/redsocks.log”; // Jalur ke log untuk debugging
daemon = on;
user = redsocks;
group = redsocks;
redirector = iptables;
}
// Bagian untuk lalu lintas TCP (HTTP, HTTPS, dll.)
redsocks {
local_ip = 0.0.0.0;
local_port = 12345; // Port yang akan didengarkan redsocks untuk TCP
ip = 51.77.190.247; // Alamat IP proxy SOCKS5 jarak jauh Anda
port = 9595; // Port proxy SOCKS5 jarak jauh Anda
type = socks5; // Kami menggunakan SOCKS5 (Anda dapat menggunakan http-connect untuk proxy HTTP atau http-relay untuk HTTP murni)
login = “pcobLdlPkt-res-any”; // Login dari proxy
password = “PC_7CJ2WQqdHNm42dHWj”; // Kata sandi dari proxy
}
// Bagian untuk lalu lintas DNS (UDP)
redudp {
local_ip = 0.0.0.0;
local_port = 10053; // Port yang akan mendengarkan redsocks untuk DNS
ip = 51.77.190.247; // IP proxy SOCKS5 yang sama
port = 9595; // Port SOCKS5 proxy yang sama
type = socks5;
login = “pcobLdlPkt-res-any”; // Login yang sama
password = “PC_7CJ2WQqdHNm42dHWj”; // Kata sandi yang sama
}
// Bagian untuk TCP-DNS (untuk menangkap permintaan TCP yang jarang terjadi)
dnstc {
local_ip = 127.0.0.1;
local_port = 5300;
}
Langkah 4. Mengkonfigurasi iptables (Langkah paling penting)
Aturan-aturan ini adalah inti dari sistem kami. Aturan-aturan ini akan mencegah kebocoran dan siklus tak berujung.
Penting: iptables tidak memiliki “mode edit” bawaan seperti editor teks. Aturan-aturan disimpan dalam memori inti dan dikendalikan melalui perintah. Untuk melihat, menghapus, menyisipkan, atau mengganti, gunakan perintah iptables. Untuk pengeditan yang rumit, muat aturan ke dalam file, edit, lalu muat kembali. Ini sangat berguna dengan iptables-persistent, di mana aturan disimpan di /etc/iptables/rules.v4.
Langkah 1. Melihat aturan saat ini
Pertama-tama, lihat aturan yang ada untuk memahami apa yang harus diedit.
# Melihat semua aturan dalam tabel nat dengan nomor baris
sudo iptables -t nat -L -n -v --line-numbers
-t nat: Tabel nat (untuk REDIRECT kita).-L: Daftar aturan.-n: IP numerik (tanpa DNS).-v: Detail (penghitung paket).--line-numbers: Nomor aturan (untuk menghapus/menyisipkan).
Contoh hasil:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REDSOCKS all -- * * 0.0.0.0/0 0.0.0.0/0
Langkah 2. Pengeditan sederhana: Menghapus, menyisipkan, dan mengganti
Untuk perubahan kecil:
- Hapus aturan berdasarkan nomor: Tentukan rantai dan nomor.
# Hapus aturan #1 di PREROUTING
sudo iptables -t nat -D PREROUTING 1
- Sisipkan aturan baru pada posisi: Gunakan -I (insert).
# Sisipkan pada posisi 1 di PREROUTING (misalnya, dengan port tambahan) sudo iptables -t nat -I PREROUTING 1 -p tcp -m multiport --dports 80,443,8080 -j REDSOCKS - Ganti aturan: Gunakan -R (replace).
# Ganti aturan #1 di PREROUTING
sudo iptables -t nat -R PREROUTING 1 -p tcp -m multiport --dports 80,443 -j REDSOCKS
Langkah 3. Mengedit melalui file (untuk perubahan yang rumit)
Unduh aturan ke file teks, edit, dan unggah.
- Unduh aturan:
sudo iptables-save > /tmp/iptables.rules # File sementara
# Atau untuk persistent: sudo nano /etc/iptables/rules.v4
- Mengedit file: Buka di nano atau vi. File terlihat seperti ini (contoh):
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:REDSOCKS - [0:0]
-A REDSOCKS -d 1.2.3.4 -j RETURN
-A REDSOCKS -d 10.0.0.0/8 -j RETURN
# ... pengecualian lainnya
-A REDSOCKS -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 12345
-A PREROUTING -j REDSOCKS
-A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 10053
-A PREROUTING -p tcp --dport 53 -j REDIRECT --to-port 5300
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
Tambahkan/hapus baris dengan -A, -I, dll. Simpan file.
- Muat aturan:
sudo iptables-restore < /tmp/iptables.rules
# Untuk persistent: sudo netfilter-persistent reload
Langkah 4. Membersihkan aturan (jika perlu dihapus)
- Membersihkan rantai:
sudo iptables -t nat -F REDSOCKS(flush). - Menghapus rantai:
sudo iptables -t nat -X REDSOCKS. - Pembersihan nat lengkap:
sudo iptables -t nat -F(hati-hati!).
Saran: Setelah perubahan, periksa aturan (iptables -t nat -L) dan uji lalu lintas (curl, dig). Untuk IPv6, gunakan ip6tables. Jika sistem menggunakan nftables, edit /etc/nftables.conf dan terapkan sudo nft -f /etc/nftables.conf.
Mari kita mulai mengkonfigurasi iptables:
# PENTING: Cantumkan IP proxy jarak jauh Anda
PROXY_IP="51.77.190.247"
# --- KONFIGURASI UMUM ---
# Hapus rantai REDSOCKS (jika ada, untuk pengujian)
sudo iptables -t nat -F REDSOCKS || true
sudo iptables -t nat -X REDSOCKS || true
# Buat rantai REDSOCKS baru untuk TCP
iptables -t nat -N REDSOCKS
# Mengecualikan server proxy itu sendiri untuk menghindari siklus tak berujung
iptables -t nat -A REDSOCKS -d $PROXY_IP -j RETURN
# Mengabaikan jaringan lokal dan yang dicadangkan
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# --- PERBAIKAN: Hanya mengalihkan lalu lintas WEB ---
# Kami TIDAK ingin merusak SSH, FTP, dll. Hanya mengalihkan HTTP dan HTTPS.
# Untuk email (25,465) atau port lain, tambahkan ke --dports
iptables -t nat -A REDSOCKS -p tcp -m multiport --dports 80,443 -j REDIRECT --to-port 12345
# (Opsional) Jika Anda yakin ingin mem-proxy SEMUA lalu lintas TCP:
# iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-port 12345
# --- PILIH SKENARIO ANDA ---
# === SKENARIO A: Proksi untuk gateway (trafik perangkat LAIN) ===
# Klien harus menggunakan server sebagai default gateway (melalui DHCP atau statis)
# 1. Aktifkan IP-forwarding (secara permanen)
echo ‘net.ipv4.ip_forward=1’ | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 2. Terapkan aturan pada lalu lintas transit
iptables -t nat -A PREROUTING -j REDSOCKS
# 3. Menangkap lalu lintas DNS (UDP 53) dan mengirimkannya ke redsocks
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 10053
# 4. Menangkap TCP-DNS
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-port 5300
# 5. Mengaktifkan MASQUERADE (SANGAT PENTING untuk gateway)
# Ganti eth0 dengan antarmuka jaringan EKSTERNAL Anda
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# === SKENARIO B: Proksi untuk server itu sendiri (lalu lintas LOKAL) ===
# 1. Terapkan aturan ke lalu lintas lokal
iptables -t nat -A OUTPUT -j REDSOCKS
# 2. Intercept lalu lintas DNS lokal
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-port 10053
# 3. Menangkap TCP-DNS
iptables -t nat -A OUTPUT -p tcp --dport 53 -j REDIRECT --to-port 5300
Penting: Jangan menerapkan kedua skenario secara bersamaan tanpa pemahaman yang mendalam. Pilih salah satu yang sesuai dengan tugas Anda.
Langkah 5. Menjalankan redsocks
sudo systemctl start redsocks
# Pastikan layanan telah berjalan
sudo systemctl status redsocks
Bagian 4. Masalah dan Solusi Lanjutan
*Kebocoran DNS (UDP vs TCP) *
Panduan ini mengatasi masalah dengan mencegat permintaan DNS melalui UDP (port 53) dan TCP dengan dnstc. Namun, jika proxy tidak mendukung UDP-associate (untuk redudp), DNS tidak akan berhasil — periksa log. Untuk perlindungan penuh, periksa di dnsleaktest.com.
Masalah dengan HTTPS dan SSL
redsocks tidak memiliki masalah ini. Ia bekerja pada tingkat transportasi (TCP) dan tidak mencoba mendekripsi lalu lintas HTTPS Anda. Ia hanya mengambil paket HTTPS Anda yang sudah terenkripsi dan “membungkusnya” secara keseluruhan dalam SOCKS5. Pemilik proxy tidak dapat membaca data Anda.
# Catatan tentang alternatif modern
redsocks adalah alat yang kuat, tetapi cukup tua. Pada tahun 2025, untuk sistem baru, terutama yang menggunakan nftables, sering kali direkomendasikan alternatif yang lebih modern, seperti ss-redir (dari shadowsocks-libev) atau V2Ray/Xray, yang melakukan tugas serupa dengan kinerja dan plugin yang lebih baik. Untuk UDP tanpa redsocks, pertimbangkan TPROXY di iptables/nftables. Jika di kontainer atau di Android/router (GL.iNet) — redsocks berfungsi, tetapi memerlukan firmware khusus.
Bagian 5. Pengujian dan Pemecahan Masalah
Jika ada yang tidak berfungsi, berikut adalah daftar periksa Anda:
- Periksa IP:
curl ifconfig.me(harus menampilkan IP proxy SOCKS5 Anda, bukan server). - Periksa DNS:
dig google.comataunslookup google.com. Periksa alamat IP yang merespons. Periksa kebocoran: Buka browserleaks.com atau dnsleaktest.com. - Periksa log redsocks: Ini adalah teman terbaik Anda.
tail -f /var/log/redsocks.log # Atau: journalctl -u redsocks
Cari pesan kesalahan koneksi atau otentikasi (misalnya, ‘authentication failed’ — login/password salah).
- Periksa ketersediaan proxy: Pastikan server Anda dapat terhubung ke server proxy:
nc -zv 51.77.190.247 9595
# (Respons yang diharapkan: Connection to 51.77.190.247 9595 port [tcp/*] succeeded!)
- Periksa port:
ss -tuln(harus mendengarkan 12345, 10053, 5300). - Periksa Firewall: Pastikan ufw atau firewalld tidak memblokir aturan baru Anda. Jika SSH rusak — nonaktifkan pengalihan semua TCP.
- Masalah Umum: ‘Terhubung tetapi tidak merespons’ — periksa proxy-type (http-relay untuk HTTP). Siklus tak berujung? Pastikan PROXY_IP dikecualikan.
Bagian 6. Menyimpan aturan iptables
Pengaturan iptables akan dihapus saat reboot. Untuk membuatnya permanen, instal iptables-persistent.
sudo apt update
sudo apt install iptables-persistent
Selama instalasi, Anda akan ditanya apakah Anda ingin menyimpan aturan saat ini. Setujui. Jika Anda mengubah aturan nanti, jalankan perintah berikut untuk menyimpannya:
sudo netfilter-persistent save
Untuk membersihkan:sudo iptables -t nat -F REDSOCKS; sudo iptables -t nat -X REDSOCKS; sudo iptables -t nat -D PREROUTING/OUTPUT ...
(hapus aturan tertentu).
Kesimpulan
Proksi transparan dengan iptables adalah alat yang sangat kuat. Berkat redsocks (atau redsocks2), alat ini dapat dikonfigurasi untuk bekerja dengan proksi SOCKS5 modern. Yang terpenting adalah mengingat keamanan, menghindari intersepsi semua lalu lintas TCP (dengan menyaring port), mengaktifkan MASQUERADE untuk gateway, dan selalu mencegat permintaan DNS untuk menghindari kebocoran.
FAQ
- Koneksi tidak berfungsi? Periksa proxy di log: ‘authentication failed’ — login/password salah.
- Siklus tak berujung? Pastikan PROXY_IP telah dikecualikan.
- Di dalam kontainer? Redsocks memerlukan cap_net_admin; gunakan --privileged di Docker.
- Tidak berfungsi dengan proxy saya? Jika HTTP — gunakan type = http-connect untuk kompatibilitas HTTPS.