Retour au blog

Proxy transparent sur routeur OpenWrt via TPROXY : configuration complète pour tout le réseau

La configuration d'un proxy transparent via TPROXY sur OpenWrt permet de faire passer tout le trafic du réseau par un serveur proxy sans configuration manuelle sur chaque appareil.

📅6 juin 2026
```html

Si vous souhaitez que tout le trafic de votre réseau passe par un proxy — sans configuration manuelle sur chaque ordinateur portable, smartphone ou serveur — un proxy transparent sur un routeur OpenWrt via le mécanisme TPROXY est exactement ce qu'il vous faut. Dans ce guide, nous allons examiner la configuration complète : de l'installation des paquets nécessaires aux règles iptables et à la vérification du fonctionnement.

Qu'est-ce que TPROXY et à quoi ça sert

TPROXY (Proxy Transparent) est un mécanisme du noyau Linux qui permet d'intercepter le trafic TCP et UDP sans modifier l'adresse IP de destination dans le paquet. Contrairement à la redirection NAT classique (REDIRECT), TPROXY conserve l'adresse d'origine du destinataire, ce qui est crucial pour le bon fonctionnement du client proxy : il "voit" exactement où l'appareil du réseau essaie de se connecter.

Pourquoi est-ce nécessaire en pratique ? Imaginez : vous avez un bureau ou un laboratoire à domicile avec des dizaines d'appareils — ordinateurs, smartphones, appareils IoT, machines virtuelles de test. Configurer le proxy manuellement sur chacun d'eux représente des heures de travail et un mal de tête constant lors du changement de serveur proxy. Un proxy transparent sur le routeur résout le problème de manière centralisée : tout le trafic du réseau passe automatiquement par le proxy, et les appareils ne s'en aperçoivent même pas.

Scénarios typiques d'utilisation de TPROXY sur OpenWrt :

  • Routage de tout le trafic via des proxies résidentiels ou mobiles pour contourner les géo-restrictions
  • Surveillance et filtrage centralisés du trafic dans un réseau d'entreprise
  • Tests d'applications via un proxy depuis différentes régions sans modifier les paramètres sur les machines clientes
  • Substitution automatique de l'IP pour tous les appareils connectés au routeur
  • Utilisation de navigateurs anti-détection (Dolphin Anty, AdsPower, GoLogin) via une seule passerelle

L'avantage clé de TPROXY par rapport à un REDIRECT classique : prise en charge de l'UDP. Cela est important pour les protocoles modernes (QUIC, DNS over UDP, trafic de jeux), que REDIRECT ne peut tout simplement pas traiter correctement.

Comment fonctionne un proxy transparent dans OpenWrt

Le schéma de fonctionnement de TPROXY sur OpenWrt est le suivant :

  1. Un appareil sur le réseau envoie un paquet à une adresse IP externe (par exemple, 93.184.216.34:443).
  2. Le routeur intercepte le paquet avec la règle iptables TPROXY encore dans la chaîne PREROUTING — avant de décider du routage.
  3. Le paquet est marqué avec un fwmark spécial et redirigé vers le socket local du client proxy (par exemple, sur le port 7893).
  4. Le client proxy (redsocks, Xray, sing-box) "voit" l'adresse d'origine de destination via le mécanisme IP_TRANSPARENT et établit une connexion via le serveur proxy distant.
  5. La réponse est renvoyée à l'appareil — de manière transparente, sans aucune modification du côté client.

💡 Point important

TPROXY fonctionne uniquement dans la chaîne PREROUTING de la table mangle. Cela signifie que seul le trafic transit (des appareils du réseau) est intercepté, mais pas le trafic du routeur lui-même. Pour intercepter le trafic du routeur, une configuration supplémentaire via OUTPUT et le routage via loopback sera nécessaire.

Exigences : routeur, firmware, paquets

Avant de commencer la configuration, assurez-vous que votre configuration répond aux exigences minimales.

Exigences pour le routeur

Paramètre Minimum Recommandé
RAM 64 Mo 256 Mo ou plus
Flash / Stockage 16 Mo 128 Mo ou plus
Architecture CPU MIPS, ARM ARM Cortex-A7/A53 et supérieur
Version OpenWrt 21.02 23.05 ou snapshot
Noyau Linux 5.4 avec TPROXY 5.15 / 6.1

Les modèles éprouvés pour cette tâche : GL.iNet GL-MT6000 (Flint 2), Xiaomi AX3000T, Banana Pi BPi-R3, Raspberry Pi 4 avec OpenWrt, ainsi que tout routeur x86 avec une quantité suffisante de RAM.

Vérification de la prise en charge de TPROXY dans le noyau

Connectez-vous au routeur via SSH et exécutez :

zcat /proc/config.gz | grep TPROXY

Vous devriez voir la ligne CONFIG_NETFILTER_XT_TARGET_TPROXY=y ou =m. Si la sortie est vide, le noyau ne prend pas en charge TPROXY et une recompilation ou un changement de firmware sera nécessaire.

Installation des paquets nécessaires

Pour faire fonctionner TPROXY sur OpenWrt, plusieurs paquets seront nécessaires. Connectez-vous via SSH et mettez à jour la liste des paquets :

opkg update

Installez les composants nécessaires :

# Module du noyau pour TPROXY
opkg install kmod-nft-tproxy

# Si vous utilisez iptables (ancienne pile)
opkg install iptables-mod-tproxy

# Utilitaires ip rule / ip route
opkg install ip-full

# En plus pour travailler avec fwmark
opkg install kmod-ipt-tproxy

En fonction du client proxy choisi, installez l'un des paquets suivants :

Client proxy Paquet OpenWrt Prise en charge de TPROXY
redsocks redsocks TCP (UDP via redsocks2)
Xray-core xray-core TCP + UDP (nativement)
sing-box sing-box TCP + UDP (nativement)
mihomo (Clash Meta) mihomo TCP + UDP (nativement)

Pour la plupart des tâches, nous recommandons sing-box ou mihomo — ils prennent en charge TPROXY nativement, y compris l'UDP, et ont un format de configuration pratique.

Configuration des règles iptables et ip rule

C'est une étape clé. Nous devons faire trois choses : marquer les paquets nécessaires avec fwmark, configurer une table de routage spéciale, et ajouter une règle TPROXY dans iptables.

Étape 1 : Création de la table de routage

# Ajout d'une route spéciale : les paquets marqués vont vers le loopback
ip rule add fwmark 1 table 100
ip route add local default dev lo table 100

Cela indique au noyau : "considérer tous les paquets avec la marque fwmark=1 comme locaux et livrer sur le loopback". C'est ainsi que le client proxy pourra les recevoir via son socket.

Étape 2 : Règles iptables (mangle/PREROUTING)

# Création d'une chaîne pour TPROXY
iptables -t mangle -N TPROXY_RULES

# Exclusion des adresses locales (ne pas les proxy)
iptables -t mangle -A TPROXY_RULES -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A TPROXY_RULES -d 240.0.0.0/4 -j RETURN

# Redirection TCP vers le port du client proxy (7893)
iptables -t mangle -A TPROXY_RULES -p tcp \
  -j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1

# Redirection UDP vers le port du client proxy (7893)
iptables -t mangle -A TPROXY_RULES -p udp \
  -j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1

# Application de la chaîne au trafic transit
iptables -t mangle -A PREROUTING -j TPROXY_RULES

📌 Port 7893

Le port 7893 est le port sur lequel le client proxy (sing-box, mihomo, Xray) écoute en mode tproxy. Assurez-vous qu'il correspond aux paramètres de votre client.

Étape 3 : Sauvegarde des règles au redémarrage

Créez un script de démarrage automatique dans /etc/init.d/tproxy ou ajoutez des commandes dans /etc/rc.local. Pour OpenWrt 23.05 avec nftables au lieu d'iptables, utilisez des règles similaires dans la syntaxe nft :

nft add table ip tproxy_table
nft add chain ip tproxy_table prerouting \
  '{ type filter hook prerouting priority mangle; policy accept; }'
nft add rule ip tproxy_table prerouting \
  ip daddr { 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 } return
nft add rule ip tproxy_table prerouting \
  tcp tproxy to 127.0.0.1:7893 meta mark set 1
nft add rule ip tproxy_table prerouting \
  udp tproxy to 127.0.0.1:7893 meta mark set 1

Configuration du client proxy : redsocks, Xray, sing-box

Le client proxy sur le routeur est un programme qui reçoit le trafic intercepté et l'envoie via un serveur proxy distant. Examinons la configuration pour les options les plus populaires.

Option 1 : redsocks (simple, uniquement TCP)

Convient pour des tâches de base avec un proxy SOCKS5. Le fichier de configuration /etc/redsocks.conf :

base {
    log_debug = off;
    log_info = on;
    log = "file:/var/log/redsocks.log";
    daemon = on;
    redirector = tproxy;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 7893;

    // Adresse de votre proxy SOCKS5
    ip = 185.220.101.50;
    port = 1080;
    type = socks5;

    // Si le proxy nécessite une authentification :
    login = "your_login";
    password = "your_password";
}

Option 2 : sing-box (recommandé — TCP + UDP)

sing-box prend en charge TPROXY nativement et fonctionne avec la plupart des types de proxy : SOCKS5, HTTP, Shadowsocks, VLESS, Trojan. Exemple de configuration /etc/sing-box/config.json :

{
  "inbounds": [
    {
      "type": "tproxy",
      "listen": "127.0.0.1",
      "listen_port": 7893,
      "tcp_fast_open": false,
      "udp_fragment": true,
      "sniff": true
    }
  ],
  "outbounds": [
    {
      "type": "socks",
      "tag": "proxy-out",
      "server": "185.220.101.50",
      "server_port": 1080,
      "version": "5",
      "username": "your_login",
      "password": "your_password"
    },
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "rules": [
      {
        "geoip": ["private"],
        "outbound": "direct"
      }
    ],
    "final": "proxy-out"
  }
}

Lancez sing-box et ajoutez-le au démarrage automatique :

/etc/init.d/sing-box enable
/etc/init.d/sing-box start

Option 3 : mihomo / Clash Meta

mihomo est un fork de Clash avec des fonctionnalités étendues. Dans la section tproxy-port, indiquez le port pour l'interception :

mixed-port: 7890
tproxy-port: 7893
allow-lan: false
mode: rule
log-level: info

proxies:
  - name: "my-socks5"
    type: socks5
    server: 185.220.101.50
    port: 1080
    username: your_login
    password: your_password
    udp: true

proxy-groups:
  - name: "PROXY"
    type: select
    proxies:
      - my-socks5

rules:
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - MATCH,PROXY

Protection contre les fuites DNS

Un proxy transparent sans une configuration DNS correcte est une vulnérabilité sérieuse. Si les requêtes DNS passent directement par le fournisseur plutôt que par le proxy, la véritable localisation est révélée, malgré la substitution de l'IP. Cela est critique pour les tâches où l'anonymat ou la substitution géographique est important.

Méthode 1 : Interception DNS via TPROXY

Ajoutez une règle pour intercepter le trafic UDP sur le port 53 :

# Interception des requêtes DNS des appareils du réseau
iptables -t mangle -A TPROXY_RULES -p udp --dport 53 \
  -j TPROXY --on-port 7893 --on-ip 127.0.0.1 --tproxy-mark 1

Méthode 2 : DNS via sing-box / mihomo

sing-box et mihomo peuvent gérer eux-mêmes les requêtes DNS et les envoyer via le proxy. Dans la configuration de sing-box, ajoutez la section DNS :

"dns": {
  "servers": [
    {
      "tag": "remote",
      "address": "8.8.8.8",
      "detour": "proxy-out"
    },
    {
      "tag": "local",
      "address": "192.168.1.1",
      "detour": "direct"
    }
  ],
  "rules": [
    {
      "geoip": ["private"],
      "server": "local"
    }
  ],
  "final": "remote",
  "independent_cache": true
}

Méthode 3 : dnsmasq avec upstream via le proxy

Si vous n'utilisez pas sing-box/mihomo, configurez dnsmasq (le serveur DNS standard d'OpenWrt) pour qu'il transfère les requêtes à un serveur DNS chiffré. Dans le fichier /etc/dnsmasq.conf :

# Désactivation de l'utilisation du DNS du fournisseur
no-resolv

# Utilisation de DoH/DoT via le résolveur local
server=127.0.0.1#5335

# Interdiction aux appareils d'utiliser un DNS externe directement
# (règle iptables pour bloquer les requêtes DNS directes)
# iptables -t nat -A PREROUTING -p udp --dport 53 ! -d 192.168.1.1 -j DNAT --to 192.168.1.1

Vérification et débogage

Après la configuration, assurez-vous de vérifier le bon fonctionnement du proxy transparent. Voici une liste de contrôle étape par étape.

Étape 1 : Vérification des règles iptables

# Voir la chaîne TPROXY_RULES
iptables -t mangle -L TPROXY_RULES -v -n

# Vérifier la table de routage 100
ip rule show
ip route show table 100

Étape 2 : Vérification que le client proxy écoute le port

ss -tlnp | grep 7893
# ou
netstat -tlnp | grep 7893

Vous devriez voir le processus sing-box, mihomo ou redsocks écoutant sur 127.0.0.1:7893.

Étape 3 : Vérification de l'IP depuis l'appareil client

Connectez-vous au routeur depuis n'importe quel appareil sur le réseau et ouvrez dans votre navigateur ifconfig.me ou 2ip.ru. L'IP affichée doit correspondre à l'IP de votre serveur proxy, et non à l'IP réelle du fournisseur.

Étape 4 : Vérification des fuites DNS

Allez sur dnsleaktest.com et effectuez un test avancé. Les serveurs DNS dans les résultats doivent appartenir à votre fournisseur de proxy ou au serveur DoH choisi, mais pas à votre fournisseur d'accès Internet.

Problèmes typiques et leurs solutions

Symptôme Cause Solution
Internet ne fonctionne pas du tout Le client proxy n'est pas lancé Vérifiez l'état du service, les journaux du client
L'IP ne change pas Les règles iptables ne se sont pas appliquées Vérifiez iptables -t mangle -L -v
UDP ne fonctionne pas redsocks ne prend pas en charge l'UDP Passez à sing-box ou mihomo
Boucle de routage Le trafic du client proxy est également intercepté Excluez l'UID ou le cgroup du client proxy des règles
Erreur de cible TPROXY Le module du noyau n'est pas chargé modprobe xt_TPROXY

Quel type de proxy convient à TPROXY sur OpenWrt

Le choix du type de proxy a un impact critique sur le résultat. Tous les types ne conviennent pas pour un proxy transparent sur le routeur — il est important de prendre en compte le protocole, la stabilité de la connexion et la tâche.

Proxy SOCKS5

L'option la plus universelle pour TPROXY. Prend en charge TCP et UDP (lors de l'utilisation de sing-box/mihomo). Convient pour la plupart des tâches : contournement des géo-restrictions, substitution d'IP pour l'ensemble du réseau, travail avec des places de marché. Les proxies de centre de données au format SOCKS5 offrent une grande vitesse et stabilité — un choix optimal si la vitesse est prioritaire, plutôt que de se camoufler en tant qu'utilisateur réel.

Proxies résidentiels

Les proxies résidentiels utilisent des adresses IP de véritables utilisateurs domestiques. Lors du routage via TPROXY sur le routeur, cela signifie que tout le trafic de votre réseau apparaîtra comme le trafic d'un utilisateur Internet domestique ordinaire du pays souhaité. Idéal pour :

  • Surveillance des prix sur des places de marché étrangères (Amazon, eBay, Zalando)
  • Tests d'annonces publicitaires depuis différentes régions
  • Travail avec des plateformes qui bloquent activement les IP de centres de données
  • Tâches nécessitant un camouflage maximal en tant qu'utilisateur réel

Proxies mobiles

Les proxies mobiles fonctionnent via les IP des opérateurs de téléphonie mobile (4G/5G). Ils bénéficient du plus haut niveau de confiance de la part des plateformes — Facebook, Instagram, TikTok bloquent très rarement les IP mobiles, car derrière une seule adresse peuvent se cacher des milliers d'utilisateurs réels. Lorsqu'ils sont utilisés via TPROXY sur le routeur, tout le trafic de votre réseau obtient une IP mobile, ce qui est critique pour :

  • Arbitrage de trafic via Facebook Ads et TikTok Ads
  • Création de comptes sur les réseaux sociaux
  • Utilisation de navigateurs anti-détection (Dolphin Anty, AdsPower, GoLogin) via une seule passerelle
Type de proxy Vitesse Confiance des plateformes Meilleur scénario
Centre de données ⚡ Élevée ★★☆☆☆ Parsing, surveillance des prix
Résidentiels ⚡⚡ Moyenne ★★★★☆ Tests géographiques, e-commerce
Mobiles ⚡ Moyenne ★★★★★ Réseaux sociaux, arbitrage de trafic

Conclusion

Un proxy transparent via TPROXY sur OpenWrt est un outil puissant pour la gestion centralisée du trafic de l'ensemble du réseau. Les principaux avantages de cette approche : il n'est pas nécessaire de configurer le proxy sur chaque appareil séparément, le trafic TCP et UDP est pris en charge, et la configuration peut être facilement adaptée à n'importe quelle tâche — de l'utilisation domestique à l'infrastructure d'entreprise.

Les étapes clés que nous avons examinées : vérification de la prise en charge de TPROXY dans le noyau OpenWrt, installation des paquets nécessaires, configuration des règles iptables/nftables avec le bon fwmark, configuration du client proxy (redsocks, sing-box ou mihomo) et protection contre les fuites DNS. Chacune de ces étapes est importante — manquer une seule d'entre elles entraînera un fonctionnement incorrect ou une fuite de l'IP réelle.

Si votre tâche est de router le trafic de l'ensemble du réseau via un proxy avec un niveau de confiance maximal de la part des plateformes (Facebook, Instagram, TikTok, places de marché étrangères), nous recommandons d'utiliser des proxies résidentiels — ils fournissent de véritables IP domestiques du pays souhaité et un risque minimal de blocages lors de l'utilisation d'un proxy transparent sur le routeur.

```