Se trata de un módulo no oficial para IPTables que hace más fácil y centralizada la gestión de rutas a host en un sistema linux. Una vez configurado nos permitirá reglas del tipo:
# iptables -A PREROUTING -t mangle -d 193.110.10.58 -j ROUTE –gw 10.0.0.257
Para echarlo a funcionar tendremos que parchear el kernel con patch-o-matic. Como los sources de Debian utilizan otra numeración al aplicar el parche nos fallará. La idea es bajarse los sources de la misma versión de iptables que nos ofrece debian y utilizando para el parcheo.
Instalamos las fuentes oficiales de Debian desde apt-get, que hará que sean más fáciles de mantener que las que nos bajemos de kernel.org, y alguna herramienta de compilación:
# apt-get install linux-source-2.6.18 gcc make ncurses-dev
# cd /usr/src
# tar -xjpf linux-source-2.6.18.tar.bz2
# ln -s linux-source-2.6.18 linux
Bajamos y descomprimimos las fuentes de IPTables:
# wget iptables-1.3.6.tar.bz2
# tar -xjpf iptables-1.3.6.tar.bz2
Bajamos y descomprimimos patch-o-matic:
# wget patch-o-matic-ng-20070728.tar.bz2
# tar -xjpf patch-o-matic-ng-20070728.tar.bz2
# cd /usr/src/patch-o-matic-ng-20070728
Si, es cierto, no es la versión más nueva que existe, pero el que las más nuevas no incluyen el módulo ROUTE. Es sospechoso y me preocupa algo (¿Por qué lo habrán quitado?), pero como ejemplo sirve.
Aplicamos el parche ROUTE indicandole que los sources de IPTables están en determinado directorio.
# IPTABLES_DIR=/usr/src/iptables-1.3.6 ./runme ROUTE
Ahora contestamos y. Nos dirá que el parche ha sido aplicado satisfactoriamente y que ahora es necesario compilar el kernel y los módulos.
Para ahorrar tiempo y desplegarlo más rápido en diferentes máquinas haremos un paquete deb del kernel.
Copiamos la antigua configuración del kernel precompilado de Debian
# cd /usr/src/linux
# make oldconfig
Instalamos las herramientas necesarias:
# apt-get install kernel-package
Desinstalamos el viejo kernel de Debian:
# apt-get remove –purge linux-image-2.6.18-5-686
Limpiamos el directorio de compilaciones previas si las hubiese:
# make-kpkg clean
Ahora compilamos de dos formas. La primera si necesitamos un paquete con los headers para algun driver como el de nVidia y demás. El segundo es el que he utilizado y servirá en la mayoría de los casos.
# make-kpkg –initrd kernel_image kernel_headers
o
# make-kpkg –initrd kernel_image
Podemos ahora desplegar este kernel precompilado por todas las debian que queramos utilizando dpkg:
# dpkg -i Kernel.deb
Como dije antes el target ROUTE parece que no ha sido incluido en versiones más nuevas de patch-o-matic. Quizá por estar descontinuado, fallar o por alguna otra razón. La verdad que no conozco la causa, pero lo que se puede hacer es utilizar iproute e iptables, para marcar los paquetes y darles salida por la puerta de enlace deseada.
Un saludo.
Ahora mi pregunta…. que diferencia hay de usar esto a usar iproute2 + marcado de paketes
Un saludete tiu que hace tiempo ia….
Coño, cuanto tiempo!
En realidad la unica diferencia que veo es que no tienes que andar asociando una tabla con una marca y luego desde iptables la marca a los paquetes con mangle. A mi me parece más cómodo y fácil de entender que con iproute2, solo eso, pero parece descontinuado a día de hoy.
El post intenta explicar más que la instalación de este módulo (Que además hay que tocar el kernel genérico de Debian, hay alternativas), la instalación de módulos de terceros.
Un saludo.
ya ya, solo era un comentario
na ta way el articulo, te lo has currado, que es lo importante. Solo comentaba otra forma de hacer casi lo mismo. Creo que si tiene una aplicacion mejor que con iproute2, ya que con iproute2 solo te deja redireccionar de la tabla main, creo… eh!!
Hi nice site
Test Link
vyox:/usr/src/patch-o-matic-ng-20071227# ./runme –download
Successfully downloaded external patch geoip
Successfully downloaded external patch condition
Successfully downloaded external patch IPMARK
Successfully downloaded external patch ROUTE
…
Para disponer de ROUTE en las nuevas versiones de patch-o-matic hay que descargar parches extras.
Un Saludo
Gracias por el apunte