Ma question est essentiellement la même que Autoriser uniquement un certain trafic sortant sur certaines interfaces .
J'ai deux interfaces eth1
(10.0.0.2) et wlan0
(192.168.0.2). Mon itinéraire par défaut est pour eth1
. Disons que je veux que tout le trafic https passe wlan0
. Maintenant, si j'utilise la solution suggérée dans l'autre question, le trafic https passera wlan0
, mais aura toujours l'adresse source de eth1
(10.0.0.2). Étant donné que cette adresse n'est pas routable pour la wlan0
passerelle, les réponses ne reviendront jamais. Le moyen le plus simple serait de définir correctement le bind-addr dans l'application, mais dans ce cas, il n'est pas applicable.
Je pense que je dois réécrire le src-addr:
# first mark it so that iproute can route it through wlan0
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 443 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 443 -j SNAT --to 192.168.0.2
Maintenant, tcpdump voit les paquets sortants très bien et les paquets entrants arrivent pour 192.168.0.2, mais ils ne se retrouvent probablement jamais dans l'application, car tout ce que j'ai pu voir, c'est que l'application renvoie le paquet SYN, bien que le SYN- ACK a déjà été reçu.
J'ai donc pensé que je devais peut-être aussi réécrire l'adresse entrante:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
mais cela n'a pas fonctionné non plus. Je suis donc un peu coincé ici. Aucune suggestion?