ArgentoBridge - BIND 9

ArgentoBridge - BIND 9

Mensagempor eddie » Seg Mar 03, 2008 9:27 pm

BIND 9

Introducción
En la resolución de nombres están incluidos DNS (Domain Name System/Sistema de nombres de dominio) y el archivo hosts. El protocolo DHCP (DynamicHost Configuration Protocol) Protocolo de configuración dinámica de equipos) va de la mano con los mecanismos de resolución de nombres. Éstos resuelven nombres obteniendo sus direcciones IP, mientras que el DHCP se encarga de la tediosa tarea de asignar direcciones IP a los equipos individuales. Los servidores necesitan tener direcciones IP estáticas.
Las estaciones de trabajo funcionan bien con direcciones asignadas dinámicamente: simplemente hay que conectarlos y después dejar que DHCP haga el trabajo.
DNS es el motor de Internet. Todo lo que hace es "resolver nombres", traducir nombres a números.
A pesar de lo simple que es el concepto, para implementarlo se ha desarrollado una enorme infraestructura. Nos podría haber ido bien sin tener DNS: después de todo, llevamos toda nuestra vida usando complicadas direcciones de correo postal y números de teléfono. Pero el uso de la resolución de nombres tiene varias ventajas. Es posible asociar varios nombres con una misma dirección IP. Los nombres son más fáciles de recordar.

Implementar DNS
Una de las dificultades que implica la puesta en marcha de un servidor DNS es que la mayor parte de la documentación disponible hace referencia a BIND. BIND (Berkeley Internet Name Domain) es el servidor DNS más antiguo y ampliamente utilizado. Parece como si BIND fuese considerado el protocolo DNS, en lugar de simplemente una implementación del mismo.
BIND lleva funcionando desde siempre, y está muy difundido. No obstante, es un gran programa monolítico, por lo que no puede personalizarse la instalación para ajustaría a sus necesidades. Todo lo que puede hacer es configurarlo de maneras distintas para diferentes usos, lo cual no es perfectamente efectivo a la hora de detener las partes que no precisan.

Bind Serie Argento

INTERNET--------->Aregentoqos con Cache DNS-------->ArgentoBR con BIND---------->usuarios

En ArgentoQoS: Webadmin: Argentoqos: Editar Script Variables

Código: Selecionar todos
#########variables de bind
bind="yes"
bindip="192.168.0.5" (seria la ip de mi Argento Bridge)


En Argento Bridge:

1) En Webadmin: Configuración de Internet:

1ro Servidor DNS: la IP 127.0.0.1
2do Servidor DNS: la IP de tu Argento QoS (activar cache DNS en el ArgentoQoS)
3ro Servidor DNS: Opcional (Puede ponerse el primario de tu proveedor ISP)

2) Levantar Bind en el inicio del sistema: Webadmin: ARGENTO BRIDGE: Editar Servicios de arranque automático
A13
3) Luego configurar tus PCs clientes con el DNS de Argentobr o Activar “dnstransp” (Ejemplo: dnstransp 192.168.0.0/24) en el script de qos (Editar Script QOS) de ArgentoBR.

Anexo:
En el caso de:
a) Configurar los clientes en forma manual: se tiene que poner el DNS primario (en la PC cliente) al Argento Bridge y el DNS secundario al ArgentoQoS.

b) Si se configura la transparencia: no importa que DNS se ponga en el usuario, el Argento Bridge lo redirige al bind.


Para saber si esta funcionando, en " Ver tabla nat de iptables" del Qos del ArgentoBr, sale la regla que redirige el trafico a bind. Si marca paquetes matcheados, listo esta funcionando.

Ejemplo:

Código: Selecionar todos
Chain PREROUTING (policy ACCEPT 132 packets, 17495 bytes)
pkts  bytes   target      prot   opt     in     out         source             destination         
50    2368   REDIRECT     tcp    --     eth0     *        192.168.1.44          0.0.0.0/0

Observación: Deshabitar el cache DNS en el Argento Bridge.

En la parte “Configuración del DHCP” en el ArgentoBr:
Cache DNS - Configuración
Habilitar el Cache DNS de BrazilFW?
Cachear peticiones DNS para acelerar la resolución de nombres. (Recomendado) º No º Si

Marcar “NO”. Ya que si está habilitado entra en conflicto con bind por compartir el mismo Puerto (puerto 53)


Bind almacena todas las direcciones en una base de datos propia, no le pregunta a ningún otro DNS un nombre, por ende si nuestro ISP tiene un DNS no muy confiable, la navegación no se corta porque los usuarios dependen de nuestro DNS (bind) no del ISP.
También almacena varias direcciones IP para el mismo nombre, por ende soporta balanceo de carga (load balancing) a nivel de DNS.
Además tiene autoborrado de cache, lo cual es bueno a la hora de actualizar los nombres DNS.

En cambio, el cache DNS que trae por defecto BrazilFW, es un demonio mucho más simple solo "Cachea" direcciones DNS de un servidor DNS de un tercero (el de nuestro ISP), si al ISP se le cae el servidor DNS, a nosotros también. Además tiene algunos que otros problemas ya que no “resetea” su cache y eso puede traer cuelgues, no almacena las direcciones en una base de datos, las almacena en vivo en la RAM, cosa que no es muy conveniente.

Caso Practico:

Supongamos el peor de los casos:

Nuestros usuarios tienen configurados el DNS de nuestro BrazilFW que hace NAT (tenemos activado el cache DNS que trae BrazilFW).
Nosotros tenemos corriendo de forma transparente BIND en ArgentoBr.
El usuario al pedir un nombre se lo pide al BrazilFW que está haciendo NAT, pero nuestro servidor (ArgentoBr con Bind Activado) intercepta esta petición y responde él (gracias a la transparencia - dnstransp).
Pero resulta que en un determinado momento nuestro servidor Bind deja de funcionar, entonces se pone en marcha un script llamado “Bindcheck” , este detecta que el BIND no responde e intenta reiniciarlo, en caso de no poder, quita la transparencia y a partir de ese momento los usuarios navegan con el cache DNS del BrazilFW que está haciendo NAT.
A esto se le llama FAIL OVER.

AVISO DE BUG
si utilizan transparencia de DNS (dnstransp) puede que no funcione correctamente...

si quiere utilizar bind modifique la configuración de sus máquinas clientes apuntando hacia bind...

Ejemplo:
Primero borre o comente la linea dnstransp de class.conf (editar script qos)
A14
supongamos que:

argento qos: 192.168.1.20
argento br con bind: 192.168.1.24

Entonces configuramos a los clientes así:

configuracion de cliente windows....
DNS primario: 192.168.1.24
DNS secundario: 192.168.1.20

------------------------------------

El bug ya esta resuelto y saldra reparado en argentobr 1.0

Anexo Bind:
La solución que encontró Nachazo para que el Bind funcione en modo transparente incluso con el squid instalado en la misma PC es lo siguiente:

Chequeamos que Bind es “up”
Ahora le cambiamos el puerto al BIND, editamos en el ArgentoBr desde:
“Archivos de configuración”
14. Editar Cualquier Archivo
/argentobr/variables.conf


luego vamos a esta parte:
squidport="8080"
QOSSQUID="yes"
LOCAL_IPADDR="192.168.0.10"


Y agregamos lo siguiente bindport="54" quedando lo anterior así:
squidport="8080"
bindport="54"
QOSSQUID="yes"
LOCAL_IPADDR="192.168.0.10"


Luego hacemos click en “OK”

Volvemos a :
“Archivos de configuración”
14. Editar Cualquier Archivo
/argentobr/class


y sobreescribimos el bloque que está con esto:

dnstransp() {
echo ""
echo "Activando DNS TRANSPARENTE para $1 "
echo "Por favor recuerde desactivar el cache DNS"
echo ""


. /argentobr/variables/estado_bind

if [ "$estado_bind" = "up" ] ; then

#COMMAND1="iptables -t nat -A PREROUTING -i $IF_LOCALBR -p udp --dport 53 -j DNAT --to-destination $LOCAL_IPADDR:53"
COMMAND1="iptables -t nat -A PREROUTING -i $IF_LOCALBR -p udp -s $1 --dport 53 -j REDIRECT --to-port $bindport"
$COMMAND1
COMMAND2="iptables -t nat -A PREROUTING -i $IF_LOCALBR -p tcp -s $1 --dport 53 -j REDIRECT --to-port $bindport"
$COMMAND2

COMMAND3="iptables -t nat -A OUTPUT -o lo -p udp --dport 53 -d 127.0.0.1 -j REDIRECT --to $bindport"
$COMMAND3
else

echo "no arranco bind, no se redirigira el trafico"

fi
}

Una vez reemplazado solo ese bloque hacemos click en “OK”

Nuevamente hacemos:
“Archivos de configuración”
14. Editar Cualquier Archivo
/argentobr/named


Y reemplazamos sustituyendo el bloque que está, poniendo esto:

tc_start() {

/hdb/bind9/sbin/named -p $bindport
sleep 20


Una vez reemplazado solo ese bloque hacemos click en “OK”

Nuevamente hacemos:
“Archivos de configuración”
14. Editar Cualquier Archivo
/argentobr/services


Reemplazamos sustituyendo el bloque que está por este:
echo "Arrancando servicios al inicio"
logger "ARGENTO BRIDGE levantando servicios al inicio del sistema"

sleep 30
if [ "$bind" = "yes" ] ; then
/argentobr/named start -p $bindport
logger "ARGENTO BRIDGE levantando bind en puerto $bindport"
sleep 10
fi


Una vez reemplazado solo ese bloque hacemos click en “OK”


Nuevamente hacemos:
“Archivos de configuración”
14. Editar Cualquier Archivo
/argentobr/bindcheck


Reemplazamos sustituyendo el bloque que está, por este:
if [ -n $bind ] ; then

echo "El servidor de nombres no funciona"
logger "BIND CHECK El servidor de nombres no funciona"
sleep 10
/argentobr/named start -p $bindport
sleep 10
bind=`ps -aux | grep named`

Una vez reemplazado solo ese bloque hacemos click en “OK”


Ahora vamos a la parte “Editar Script QOS” y agregamos:

dnstransp 192.168.0.0/24
(O el IP que corresponda a nuestra red)

Hacemos “OK”

Luego vamos a la parte de “Configuración de Internet”
Y ponemos:
1ro Servidor DNS: 127.0.0.1

Resguardamos y Reiniciamos el Bridge.

Para chequear editamos la tabla NAT:
Ver tabla nat de iptables

Si tenemos lo siguiente:
5 354 REDIRECT udp -- eth0 * 192.168.0.0/24 0.0.0.0/0 udp dpt:53 redir ports 54
0 0 REDIRECT tcp -- eth0 * 192.168.0.0/24 0.0.0.0/0 tcp dpt:53 redir ports 54

54 3834 REDIRECT udp -- * lo 0.0.0.0/0 127.0.0.1 udp dpt:53 redir ports 54


Quiere decir que ya tiene su propio servidor DNS funcionando(debería aparecer el IP correspondiente a su red).

Por último, modificar el ArgentoQoS en la parte de “Editar Variables Principales” y colocar con sus respectivos valores de red:

#########variables de bind
bind="yes"
bindip="192.168.0.10"
Avatar do usuário
eddie
BFW Very Participative
 
Mensagens: 307
Registrado em: Ter Mar 14, 2006 11:54 pm
Localização: Argentina
BrazilFW Box:

Voltar para BrazilFW 2.x

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron