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?
fuente
src
opción a losip route
comandos para especificar la dirección de origen correcta.POSTROUTING
SNAT
se encargará de eso.la solución de bahamat es correcta; sin embargo, tenga en cuenta que la única forma de hacer que esto funcione fue deshabilitar rp_filter para cada interfaz del sistema, no solo las dos (eth1 y wlan0 en este caso) involucradas en la NATing.
(vea la nota IMPORTANTE al final de esta página: Instrucciones de enrutamiento avanzado : el enlace publicado allí ya no existe, pero lo encontré a través de la máquina de retroceso)
fuente
Una sugerencia: siempre debe usar en
--sport
lugar de--dport
en la cadena de salida.Los NAT cambian el
dport
y eso hará que su regla sea irrazonable.fuente
Creo que a continuación se necesita:
fuente