On Tue, Jan 25, 2011 at 09:57:16AM -0300, fender wrote:
> Pablo,
> 
> 2011/1/11 Pablo Gentilel <[email protected]>:
> > El 11/01/2011 02:31 p.m., Boris Quiroz escribió:
> >>
> >> El día 11 de enero de 2011 13:55, Pablo Gentilel
> >> <[email protected]>  escribió:
> >>
> >>>
> >>> Hola lista, queria saber como hago para usar iptables con nombres en vez
> >>> de
> >>> direcciones ip, ya que el problema que tengo es que cuando por ejemplo en
> >>> el
> >>> script que tengo hecho para iptables si dejo la direccion origen con
> >>> nombre,
> >>> no se termina de ejecutar el script, salvo que haya agregado las
> >>> direcciones
> >>> y nombres del dominio en cuestion en el archivo /etc/hosts.
> >>> espero haber sido claro en mi pregunta y gracias de antemano.
> >>>
> >>> --
> >>> Pablo Gentilel
> >>> Sistemas
> >>> Royal Technologies Mercosur
> >>> 0221-4915400 Int.231
> >>> 0221-155373977
> >>>
> >>>
> >>>
> >>
> >> Uhm.. Hasta donde sé, IPtables se usa para filtar IPs. SI quieres
> >> filtar nombres, te recomiendo usar un proxy o algo.
> >> Hay alguna razon por lo cual quieras usar nombres y no ip? Aparte de
> >> que el script no se termina de ejecutar? En caso de haber otras
> >> razones, me gustaria saber. En una de esas podemos atacar el problema
> >> por otro lado.
> >>
> >> Saludos.
> >>
> >>
> >
> > Hola, la razon es que quiero filtrar las ips correspondientes a un dominio
> > en particular, y asi hacer un prerouting de las mismas y direccionarlas
> > hacia un ip interna en particular.
> > Como comento en el correo anterior, puse las ips en /etc/hosts y funciona,
> > pero el problema sería si dichos dominio cambia su ip.
> > Ademas, tengo hecho un prerouting para el mismo puerto pero para otra
> > maquina interna, con distinto origen.
> > Gracias por responder
> >
> 
> Como dijeron otros, iptables no filtra por dominios. Si en tus reglas
> agregás dominios en vez de direcciones IP, lo que intentará hacer es
> resolver esos dominios para obtener sus direcciones.
> 
> El script que parece no terminar su ejecución, se debe a lo que
> expliqué anteriormente. Por cada dominio que iptables encuentre,
> intentará obtener la dirección correspondiente. Como la resolución de
> nombres demora algunos segundos por cada dominio, te puede dar la
> apariencia de que el script nunca termina.

Efectivamente, lo que podés hacer es paralelizar las búsquedas
DNS y agregarlas luego, por ej con:

$ echo -n www.wikipedia.org www.fsf.org www.um.edu.ar \
  | xargs -P10 -d" " -I@ dig +short @ -t A \
  | tee /dev/tty \
  | egrep '[0-9]$' | sort -u \
  | xargs -I@ echo iptables -I INPUT -s @ -j ACCEPT
iptables -I INPUT -s 140.186.70.131 -j ACCEPT
iptables -I INPUT -s 200.51.41.139 -j ACCEPT
iptables -I INPUT -s 91.198.174.232 -j ACCEPT

El "workhorse" de arriba es xargs -P10 -d" " -I@ <comando ... @ ...>
(-P10: 10x procesos en paralelo, -d" ": separador de la lista de
  entrada, -I@: reemplazá @ por cada valor de la lista); todos éstos
"sincronizados" por el sort (quien tiene que consumir plenamente el
stdin para poder ordenarlo correctamente); luego masajeados por otro
xargs para formatear el comando de final (notar que hace
*echo iptables*, y no *iptables de una).

Una vez contento con la salida de arriba, podés por ej inyectársela a
un bash con:   | sudo bash -x

El "| tee /dev/tty " es solamente para espiar lo que se está pipeando
en esa sección del tubo ;)

> 
> Saludos.
> 
> -- 
> Federico
> 
> /*
>  *  J. Federico Hernandez (fender) {frozenspot; at; gmail; dot; com;}
>  *  GPG PubKey: wwwkeys.eu.pgp.net key 6AE78BF2
>  *  FP: 26AB 7A1B C2C4 70F8 0E7D  C3F4 9736 5CE2 6AE7 8BF2
>  */

Salú/tty

-- 
--JuanJo
oO Juan Jose Ciarlante - juanjosec Ogmail.com - jjo O{um.edu.ar,google.com}
Oo gpg --keyserver wwwkeys.eu.pgp.net --recv-key 81276430

Responder a