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 :
- Un appareil sur le réseau envoie un paquet à une adresse IP externe (par exemple,
93.184.216.34:443). - Le routeur intercepte le paquet avec la règle
iptables TPROXYencore dans la chaîne PREROUTING — avant de décider du routage. - Le paquet est marqué avec un fwmark spécial et redirigé vers le socket local du client proxy (par exemple, sur le port 7893).
- Le client proxy (redsocks, Xray, sing-box) "voit" l'adresse d'origine de destination via le mécanisme
IP_TRANSPARENTet établit une connexion via le serveur proxy distant. - 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.
```