← retour aux outils back to tools

# 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