redsocks

Redirecteur transparent TCP vers proxy SOCKS/HTTP. Route tout le trafic réseau à travers un proxy SOCKS4/5 ou HTTP sans modifier les applications, en agissant au niveau système via la redirection iptables. Transparent TCP-to-SOCKS/HTTP-proxy redirector. Routes all network traffic through a SOCKS4/5 or HTTP proxy without modifying applications — works at the system level using iptables redirection.

↗ https://github.com/darkk/redsocks

Overview

redsocks transparently redirects TCP connections through a SOCKS or HTTP proxy. Unlike proxychains (which requires prepending to each command), redsocks works at the system level using iptables — any process’s TCP traffic automatically routes through the configured proxy.

Installation

sudo apt install redsocks

Configuration

# Edit config: /etc/redsocks.conf
cat > /tmp/redsocks.conf << EOF
base {
    log_debug = off;
    log_info = on;
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;
    ip = 127.0.0.1;      # SOCKS proxy IP
    port = 1080;           # SOCKS proxy port
    type = socks5;         # socks4, socks5, http-connect, http-relay
}
EOF

Starting redsocks

Start with config file

redsocks -c /tmp/redsocks.conf

Or use system service

sudo systemctl start redsocks

iptables Redirection Rules

Create chain for redsocks

sudo iptables -t nat -N REDSOCKS
# Don't redirect traffic to private networks (local)
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

Redirect all TCP to redsocks listener

sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

Apply to OUTPUT (traffic from this machine)

sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

Or apply to PREROUTING (traffic through this machine)

sudo iptables -t nat -A PREROUTING -p tcp -j REDSOCKS

SSH Tunnel + redsocks Example

Step 1: Create SSH SOCKS proxy

ssh -D 1080 -N -q user@pivot-host &
# Step 2: Configure redsocks to use it (port 1080)
# Edit /tmp/redsocks.conf: port = 1080

Step 3: Start redsocks

redsocks -c /tmp/redsocks.conf
# Step 4: Set iptables rules
# Now ALL processes' TCP traffic goes through SSH tunnel

Cleanup

# Remove iptables rules
sudo iptables -t nat -F REDSOCKS
sudo iptables -t nat -D OUTPUT -p tcp -j REDSOCKS
sudo iptables -t nat -X REDSOCKS

Stop redsocks

sudo pkill redsocks

Tips

  • redsocks is useful when you need system-wide proxy without modifying each application
  • Combine with SSH -D for transparent pivoting on Linux
  • Be careful with the private network exclusions — wrong configuration causes routing loops
  • proxychains is simpler for tool-by-tool proxying; redsocks for system-wide
  • For Windows, use proxifier as a GUI-based equivalent
Help / Man page
redsocks [options]

-c FILE     Config file (default: /etc/redsocks.conf)
-t          Test config and exit
-v          Verbose

Config file types:
  socks4      — SOCKS4 proxy
  socks5      — SOCKS5 proxy (with/without auth)
  http-connect — HTTP CONNECT proxy
  http-relay  — HTTP relay proxy

Vue d’ensemble

redsocks redirige de manière transparente les connexions TCP à travers un proxy SOCKS ou HTTP. Contrairement à proxychains (qui nécessite d’être préfixé à chaque commande), redsocks agit au niveau système via iptables : le trafic TCP de n’importe quel processus est automatiquement routé à travers le proxy configuré.

Installation

sudo apt install redsocks

Configuration

# Éditer la config : /etc/redsocks.conf
cat > /tmp/redsocks.conf << EOF
base {
    log_debug = off;
    log_info = on;
    daemon = on;
    redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;
    ip = 127.0.0.1;      # IP du proxy SOCKS
    port = 1080;           # Port du proxy SOCKS
    type = socks5;         # socks4, socks5, http-connect, http-relay
}
EOF

Démarrer redsocks

# Démarrer avec un fichier de config
redsocks -c /tmp/redsocks.conf

# Ou utiliser le service système
sudo systemctl start redsocks

Règles de redirection iptables

Créer une chaîne pour redsocks

sudo iptables -t nat -N REDSOCKS
# Ne pas rediriger le trafic vers les réseaux privés (local)
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

Rediriger tout le TCP vers le listener redsocks

sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

Appliquer à OUTPUT (trafic issu de cette machine)

sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS

Ou appliquer à PREROUTING (trafic transitant par cette machine)

sudo iptables -t nat -A PREROUTING -p tcp -j REDSOCKS

Exemple tunnel SSH + redsocks

Étape 1 : créer un proxy SOCKS SSH

ssh -D 1080 -N -q user@pivot-host &
# Étape 2 : configurer redsocks pour l'utiliser (port 1080)
# Éditer /tmp/redsocks.conf : port = 1080

Étape 3 : démarrer redsocks

redsocks -c /tmp/redsocks.conf
# Étape 4 : configurer les règles iptables
# Maintenant, le trafic TCP de TOUS les processus passe par le tunnel SSH

Nettoyage

# Supprimer les règles iptables
sudo iptables -t nat -F REDSOCKS
sudo iptables -t nat -D OUTPUT -p tcp -j REDSOCKS
sudo iptables -t nat -X REDSOCKS

Arrêter redsocks

sudo pkill redsocks

Conseils

  • redsocks est utile quand un proxy système-wide est nécessaire sans modifier chaque application
  • Combiner avec SSH -D pour un pivoting transparent sur Linux
  • Faire attention aux exclusions de réseaux privés : une mauvaise configuration provoque des boucles de routage
  • proxychains est plus simple pour un proxying outil par outil ; redsocks pour un usage système-wide
  • Pour Windows, utiliser proxifier comme équivalent basé sur une interface graphique
Aide / Page de manuel
redsocks [options]

-c FILE     Config file (default: /etc/redsocks.conf)
-t          Test config and exit
-v          Verbose

Config file types:
  socks4      — SOCKS4 proxy
  socks5      — SOCKS5 proxy (with/without auth)
  http-connect — HTTP CONNECT proxy
  http-relay  — HTTP relay proxy