GNU/Linux >> Tutoriales Linux >  >> Linux

Tráfico de salida en diferentes interfaces según el puerto de destino

Estás cerca.

La razón real por la que la aplicación no está viendo el tráfico de retorno es debido a la protección de suplantación de IP integrada en el kernel. Es decir, el tráfico de retorno no coincide con la tabla de enrutamiento y, por lo tanto, se descarta. Puede solucionar esto desactivando la protección contra la suplantación de identidad de esta manera:

sudo sysctl net.ipv4.conf.wlan0.rp_filter=0

Pero no lo recomendaría. La forma más adecuada es crear una instancia de enrutamiento alternativo.

  1. La marca es necesaria. Quédatelo.
  2. Source NAT también es necesario.
  3. El DNAT final no es necesario, por lo que puede eliminarlo.

Asegúrate de tener el iproute paquete instalado. Si tienes el ip comando entonces está listo (que parece que lo hace, pero si no lo consigue primero).

Editar /etc/iproute2/rt_tables y agregue una nueva tabla agregando la siguiente línea:

200 wlan-route

Luego debe configurar su nueva tabla de enrutamiento llamada wlan-route con una puerta de enlace predeterminada y cree reglas para enviar tráfico condicionalmente a esa tabla. Asumiré que su puerta de enlace predeterminada es 192.168.0.1. Naturalmente, esto debe coincidir con su red real, y no solo con mis suposiciones.

ip route add default via 192.168.0.1 dev wlan0 table wlan-route
ip rule add fwmark 0x1 table wlan-route

Su script anotado final se vería así:

# Populate secondary routing table
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table wlan-route
# Mark these packets so that iproute can route it through wlan-route
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

la solución de bahamat es correcta; sin embargo, tenga en cuenta que la única manera de hacer que esto funcionara era deshabilitar rp_filter para cada interfaz del sistema, no solo las dos (eth1 y wlan0 en este caso) involucradas en NAT.

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 0 > $f; done
echo 1 > /proc/sys/net/ipv4/route/flush

(vea la nota IMPORTANTE al final de esta página:Procedimiento avanzado de enrutamiento:el enlace publicado allí ya no existe, pero lo encontré a través de la máquina wayback)


Linux
  1. Centos:¿tráfico de red separado en dos interfaces de red?

  2. ¿Reenviar tráfico entre 2 interfaces?

  3. ¿Por qué Ls -l produce un tamaño diferente de Ls -s?

  4. ¿Por qué la salida de `du` a menudo es tan diferente de `du -b`?

  5. ¿Ejecutar secuencias de comandos de forma remota en Unix, obtener resultados localmente?

Monitoreo de ancho de banda

Supervise el tráfico TCP en un puerto específico

Color diferente para comando y salida

¿Cómo puedo monitorear el tráfico del puerto serie?

¿En qué se diferencia cp -f de cp --remove-destination?

¿Por qué la salida de openssl passwd es diferente cada vez?