[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Ayuda Urgente: Iptables e ip rule no funcionan correctamente en debian 6?



Hola

Tengo un problema con iptables y reglas de enrutamiento (iproute2 (ip
rule)). Expongo mi caso:

Actualicé de Debian 4 a Debian 6.0.5 con los pasos intermedios, de 4 a 5
y de 5 a 6. En debian 4 todo funcionaba okpero en Debian 6.0.5 ha dejado
de funcionar la parte de enrutado de los paquetes marcados.

Tengo tres tablas de enrutamiento TB1, TB2 y TB3. Estas tablas tienen
rutas por defecto através de adsl1, adsl2 y adsl3 respectivamente. Las
tablas de enrutamiento y las rutas están funcionando correctamente sin
marcado.

El servidor de seguridad (máquina) funciona como un router para cinco
redes diferentes con 5 interfaces eth diferentes. eth1 (red1), eth2
(red2), eth3 (adsl3), eth4 (da acceso aadsl1 y adsl2)

Necesito que el tráfico que pasa a través del servidor (forward) de la
red1 pase por el adsl1 (TB1) si el puerto de destino es el 22 o 500, por
ejemplo, pero si el puerto de destino es otro que vaya a adsl3 (TB3).

Necesito que el tráfico que pasa a través del servidor (forward) de la
red2 pase por el adsl2 (TB2) si el puerto de destino es el 22 o 500, por
ejemplo, pero si el puerto de destino es otro que vaya a adsl3 (TB3).

He creado algunas reglas en el cortafuegos dentro de la tabla mangle y
cadena PREROUTING para marcar los paquetes  antes de la decisión de
enrutamiento.

# Red2 marcado con 2
iptables -t mangle -A PREROUTING -s 10.0.2.0/255.255.255.0 -p tcp -m tcp
--dport 22 -m state --state NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x2
iptables -t mangle -A PREROUTING -s 10.0.2.0/255.255.255.0 -p udp -m udp
-m multiport --dports 500,4500 -m state --state
NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -s 10.0.2.0/255.255.255.0 -p tcp -m tcp
--dport 22 -m state --state NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x2
iptables -t mangle -A OUTPUT -s 10.0.2.0/255.255.255.0 -p udp -m udp -m
multiport --dports 500,4500 -m state --state NEW, RELATED, ESTABLISHED
-j MARK --set-mark 0x2

# El resto de paquetes (red1 incluido) marcado con 1
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 22 -m state
--state NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -p udp -m udp -m multiport --dports
500,4500 -m state --state NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 22 -m state --state
NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x1
iptables -t mangle -A OUTPUT -p udp -m udp -m multiport --dports
500,4500 -m state --state NEW, RELATED, ESTABLISHED -j MARK --set-mark 0x1

He creado las reglas en la tabla nat

iptables -t nat -A POSTROUTING -o -j MASQUERADE eth4
iptables -t nat -A POSTROUTING -o -j MASQUERADE eth3

Ok. Tengo algunas reglas de ruteo que son las que envían paquetes por
uno u otro lugar dependiendo del marcado.

# ip rule
0: from all lookup local,
30010: from all lookup fwmark 0x2 TB2
30020: from all lookup fwmark 0x1 TB1
30030: from 10.0.2.0/24 lookup TB3
30040: from 10.0.1.0/24 lookup TB3
30060: from all lookup main
30070: from all lookup default

Ok. ¿Alguien sabe lo que puedo estar haciendo mal? ¿Ha cambiado la forma
marcado en el firewall iptables o de crear las reglas de ruteo?

Registro los paquetes en el registro de sistema que se marcan con 1 o 2
y en el log se muestran. Existe tráfico que se marca con 1 y 2, pero
después, el tráfico no se envía a las tablas de enrutamiento correctas.
¿Es un bug de ip rule (iproute2) o algo así? Muestra del log

Sep  5 15:24:55 firewall kernel: [1883719.204551] fwmark 1: IN=eth1 OUT=
MAC=00:18:8b:f9:f3:34:00:24:8c:de:c8:fb:08:00 SRC=10.0.1.153
DST=10.0.1.1 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=1436 DF PROTO=TCP
SPT=57856 DPT=22 WINDOW=16323 RES=0x00 ACK FIN URGP=0 MARK=0x1
Sep  5 15:24:55 firewall kernel: [1883719.205085] fwmark 1: IN=eth1 OUT=
MAC=00:18:8b:f9:f3:34:00:24:8c:de:c8:fb:08:00 SRC=10.0.1.153
DST=10.0.1.1 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=1437 DF PROTO=TCP
SPT=57856 DPT=22 WINDOW=16323 RES=0x00 ACK URGP=0 MARK=0x1
Sep  5 15:25:20 firewall kernel: [1883744.276724] fwmark 2: IN=eth2 OUT=
MAC=00:0d:88:c5:ba:53:20:cf:33:d3:a6:d5:08:00 SRC=10.0.2.226
DST=10.0.2.1 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=8254 DF PROTO=TCP
SPT=52845 DPT=22 WINDOW=2641 RES=0x00 ACK URGP=0 MARK=0x2
Sep  5 15:25:20 firewall kernel: [1883744.280404] fwmark 2: IN=eth2 OUT=
MAC=00:0d:88:c5:ba:53:20:cf:33:d3:a6:d5:08:00 SRC=10.0.2.226
DST=10.0.2.1 LEN=100 TOS=0x00 PREC=0x00 TTL=64 ID=8255 DF PROTO=TCP
SPT=52845 DPT=22 WINDOW=2641 RES=0x00 ACK PSH URGP=0 MARK=0x2

Por favor, necesito ayuda con este problema. Toda mi red de trabajo está
en una estado degradado ya que he de enviar trafico por diferentes rutas
para que no se saturen las lineas y este depende del puerto al que se
accede. Ya no sé que más ver para resolver este problema.

Gracias de antemano y un saludo


Reply to: