Mi pregunta es básicamente la misma que permitir solo cierto tráfico saliente en ciertas interfaces .
Tengo dos interfaces eth1
(10.0.0.2) y wlan0
(192.168.0.2). Mi ruta predeterminada es para eth1
. Digamos que quiero que pase todo el tráfico https wlan0
. Ahora, si uso la solución sugerida en la otra pregunta, el tráfico https pasará wlan0
, pero seguirá teniendo la dirección de origen eth1
(10.0.0.2). Como esta dirección no es enrutable para la wlan0
puerta de enlace, las respuestas nunca volverán. La manera fácil sería simplemente configurar el bind-addr correctamente en la aplicación, pero en este caso no es aplicable.
Me imagino que necesito reescribir el 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
Ahora tcpdump ve que los paquetes salientes están bien y los paquetes entrantes llegan a 192.168.0.2, sin embargo, probablemente nunca terminen en la aplicación, porque todo lo que puedo ver es que la aplicación está reenviando el paquete SYN, aunque el SYN- ACK ya fue recibido.
Entonces pensé, tal vez necesito reescribir la dirección entrante también:
iptables -A PREROUTING -t nat -i wlan0 -p tcp --sport 443 -j DNAT --to 10.0.0.2
pero eso tampoco funcionó. Así que estoy un poco atrapado aquí. ¿Alguna sugerencia?