elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Comunicaciones
| |-+  Redes
| | |-+  Enrutar paquetes en función del puerto de destino en GNU/Linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Enrutar paquetes en función del puerto de destino en GNU/Linux  (Leído 2,887 veces)
XiR_

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Enrutar paquetes en función del puerto de destino en GNU/Linux
« en: 12 Septiembre 2010, 01:29 am »

Hola a todos

He montado una red virtual en casa. Algo así:

Router1 <-------> firewall <--------> cliente
Router2 <------------|

de manera que:
- el Router1 está en el eth0 del firewall
- el Router2 está en el eth1 del firewall
- el cliente está en el eth2 del firewall
Si al firewall le pongo como default gw Router1, el cliente navega y puede conectarse por ssh
Si al firewall le pongo como default gw Router2, el cliente navega y puede conectarse por ssh
Si ejecuto en el firewall el script de más abajo, el cliente navega pero no puede conectarse por ssh

IPs importantes (las que tengas los Routers para acceder a Internet es inútil aquí):
Router1:
 - eth0: 10.10.1.254/24
Router2:
 - eth0: 10.10.2.254/24
Router1 y Router2 tienen ambos una ruta para llegar a la 10.0.0.0/24 y así no tener que hacer NAT en el firewall.
Cliente:
 - eth0: 10.0.0.1/24
Firewall:
 - eth0: 10.10.1.1/24
 - eth1: 10.10.2.1/24
 - eth2: 10.0.0.254/24

-----------SCRIPT---------------
#!/bin/bash

# damos de alta las reglas en el firewall para markar paquetes al puerto dport nuevos, relacionados o con conexion establecida

iptables -A PREROUTING -t mangle -p tcp --dport 22 -m state --state NEW,RELATED,ESTABLISHED -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -p tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j MARK --set-mark 2

# solo necesitamos una tabla pues ambos protocolos van por la misma ruta:
# Añadir: 201 sshftp.out a /etc/iproute2/rt_tables si no lo esta ya
ip rule add fwmark 1 table sshftp.out
ip rule add fwmark 2 table sshftp.out

# generamos todas las rutas de la tabla principal menos el gw
while read line ;do
      test -z "${line##default*}" && continue
      test -z "${line##nexthop*}" && continue
      ip route add $line table sshftp.out
done < \
<(/sbin/ip route ls table main)

#creamos el default gw
/sbin/ip route add default via 10.10.2.254 dev eth1 table sshftp.out
/sbin/ip route add default via 10.10.1.254 dev eth0

-------------EOF------------------------

Rutas en el Firewall (tabla main):
10.10.1.0/24 dev eth0  proto kernel  scope link  src 10.10.1.1
10.10.2.0/24 dev eth1  proto kernel  scope link  src 10.10.2.1
10.0.0.0/24   dev eth2  proto kernel  scope link  src 10.10.0.254
default via 10.10.1.254 dev eth0

Rutas en el Firewall (tabla sshftp.out):
10.10.1.0/24 dev eth0  proto kernel  scope link  src 10.10.1.1
10.10.2.0/24 dev eth1  proto kernel  scope link  src 10.10.2.1
10.0.0.0/24   dev eth2  proto kernel  scope link  src 10.10.0.254
default via 10.10.2.254 dev eth1

Estoy haciendo NAT en Router1 y Router2, pero no afecta al problema ya que los SYN+ACK de los ssh están llegando al FW a través de Router2. Lo que parece es que le llegan los paquetes al FW y no sabe cómo enviárselos al eth2.

¿puede ser que de alguna manera los paquetes, aunque no tengan como puerto de destino el 22 (al ser respuesta el puerto 22 será de origen), estén siendo marcados y enviados por algún otro interfaz?
He puesto un sniffer en todos los interfaces de las 4 máquinas (menos en los que van a Internet) y puedo ver los paquetes fluir sin problema en una conexión HTTP a través del Router1. Si abro una conexión SSH veo que los paquetes SYN+ACK llegan por el eth1 procedentes del Router2, pero al eth2 del firewall no le llega ni un sólo paquete de los respondidos por el servidor.

¿Alguna idea? ¿Algo que se me haya pasado? ¿Alguna idea loca genial?

Gracias


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Es posible enrutar peticiones de DNS a traves de un puerto alternativo con VPN
Hacking Wireless
Mister12 9 6,343 Último mensaje 27 Junio 2013, 23:20 pm
por engel lex
Redirigir tráfico con destino puerto 80 al router hacia otro puerto de localhost
Redes
Kaxperday 7 9,916 Último mensaje 19 Septiembre 2015, 19:26 pm
por Kaxperday
enrutar eth1 y eth0
GNU/Linux
ceibe 3 4,798 Último mensaje 21 Enero 2022, 18:27 pm
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines