lunes, diciembre 20, 2004

configurar named con 2 dominios

MANUAL DE DNS


El articulo siguiente es salido de la experiencia y una vez mas, no pretende ser un documento oficial, de igual manera es didactico y funcional.


Sistemas operativos testeados:


Fedora Core 2

WhiteBox

Red Hat Enterprise


con esos los probe y funciona, con los demas distribuciones se asume que tambien, al final los RFC son los mismos que se usan, solo cambian deetalles como ubicacion de archivos y nombres de los mismos


Temario.


1.-Introduccion ( Teoria de DNS )

2.-Instalacion de paaquetes necesarios

3.-Configuracion de NAMED


1.-Introduccion



2.-Instalacion de paquetes necesarios



3.-Configuracion de NAMED


Una vez instalados paquetes necesarios, procedemos.


3.1.-Caso de Uso.

Se compro 2 dominios, trhex.com y linuxcomowebeando.com la idea era ponerlos a funcionar, y tener funcionando los host con sus nombres normales como www.trhex.com , www.linuxcomowebeando , ftp.trhex.com, etc, etc ,etc.


3.2.-Configuracion

Para lograr nuestrro cometido conseguimos IP publicos en un numero de 3 unidades, 200.60.90.235 , 200.60.90.236 , 200.60.54.65 .


Necesitamos configurar en proveedor de dominios, es decir quien nos vendio los dominios ( www.solo10.com ) los name servers, es decir los nombres de dominio y sys respectivos IP que seran al final nuestros propios servidores.

ns1.trhex.com ---> 200.60.90.235

ns2.trhex.com ---> 200.60.
90.236

esos dos seran nuestros servidores de dominio. la siguiente imagen ilustra mejor el tema.




como ven asignamos los name server nuestros, los que iremos a crear



este es el primer paso.


Seguido manipulamos los archivos de configuracion.


/etc/named.conf

/var/named/*


3.2.-/etc/named.conf





include "/etc/named.custom";


include "/etc/rndc.key";


zone "0.0.127.in-addr.arpa" {

type master;

file "/var/named/0.0.127.in-addr.arpa";

};


zone "90.60.200.in-addr.arpa" {

type master;

file "/var/named/90.60.200.in-addr.arpa";

};


zone "54.60.200.in-addr.arpa" {

type master;

file "/var/named/54.60.200.in-addr.arpa";

};


zone "trhex.com" {

type master;

file "/var/named/trhex.com.zone";

allow-query { any; };

allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)

};


zone "linuxcomowebeando.com" {

type master;

file "linuxcomowebeando.com.zone";

allow-query { any; };

allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)

};


#XXXXXXXX A C L XXXXXXXXXXXX


acl "slaves" {

200.60.54.65;

}


#=================FIN DE ARCHIVO =================


zone "0.0.127.in-addr.arpa" {

type master;

file "/var/named/0.0.127.in-addr.arpa";

};



Para todas aquellas lineas parecidas a esta:

zone "0.0.127.in-addr.arpa" {

zone--->
especifica que es una zona, seguido de

"0.0.127.in-addr.arpa"---> especidica el nombre de la zona (recuerde encerralas entre comillas)

{ ---> abre la llave para colocar dentro las definiciones de zona

} ---> cierra la llave de la definicion de zona


Para todas aquellas lineas parecidas a esta:

type master;

type
---> palabra clave tipo

master; ---> especifica que es del tipo primario o maestro, el servidor de dominios tambien pued ser slave


zone "0.0.127.in-addr.arpa" {

type master;

file "0.0.127.in-addr.arpa";

};


Para todas aquellas lineas parecidas a esta:

file "/var/named/0.0.127.in-addr.arpa";

file
---> palabra clave archivo [y ubicacion]

"/var/named/0.0.127.in-addr.arpa"; ---> especifica la ubicacion y nombre del archivo para la zona


nota.- no se olvide las comillas y del punto y coma


zone "trhex.com" { ---> explicado

type master;
---> explicado

file "/var/named/trhex.com.zone";
---> explicado

allow-query { any; };



};


zone "trhex.com" { ---> explicado

type master;
---> explicado

file "/var/named/trhex.com.zone";
---> explicado

allow-query { any; }; ---> Permitir consultas de dominio a todos del ingles any

allow-transfer { slaves; }; ---> Permitir transferir las zonas al ACL llamado slaves


Si se fija bien en el /etc/named.conf existe un parrafo al final cono un comentario ACL, este especifica los IPs que seran parte del ACL slaves, que es en realidad el Host qque sera esclavo del maestro, este es unico permitido al cual se le puede transmitir las zonas, allow-transfer { slaves; }; #Permite transferir a slaves(200.60.54.65)


acl "slaves" {

200.60.54.65;

}


nota.- named asi como linux es sencible a las mayusculas y minusculas, esto es importante al momento de hacer los archivos de configuracion y nombrarlos.


3.3.- /var/named/*


En el directorio /var/named se colocan los archivos de zona que se especificaron el el archivo de configuracion /etc/named.conf, por ejemplo tenemos trhex.com.zone




ahora mostramos el archivo de linuxcomowebeando.com



http://www.trhex.com/csharp

sábado, diciembre 18, 2004

Scripts en shell

Shell Scripting

Saludos nuevamente a todos aquellos que andan buscando en la red algo nuevo que aprender.

Me toco aprender shell scripting, asi que me puse a averiguar unas cuantas cosillas.

Lo primero:
Este pequeño manual esta basado en mis experiencias y no pretende ser un manual oficial, pero si te sirve pues mejor =)
Lo segundo:
Estos scripts funcionan en Linux (a los fanaticos del click windows no les servira de nada, quedednse con su click no ma y compren software para hacer mas rico a Moco$oft)
Lo tercero:
estos escript fueron desarrollados en BASH ( Bourne Again Shell ) si es que funcionan en otro interprete de comandos pues no tengo idea, asumo que si, pero por todo el usado hoy en dia es el BASH, asi que para gente normal asumo que va a funcionar, para saber si estas usndo el interprete bash escribe...

echo $SHELL

y si como resultado te sale

/bin/bash

entonces esta bueno, si tienes bash.

Bueno comencemos. ;)

Condiciones:
- Se asume que el usuario lector tiene conocimientos basicos de linux en consola
- Se asume que el usuario lector esta empeñado en aprender asi que cuando no pueda hacer algo porque se equivoco en digitar seguira adelante contra todo, y no se cansara hasta terminar este tutorial.

Un script es un conjunto de lineas con una secuencia logica el cual es interpretado por algun programa manager, este lee cada linea y la reconoce como una sentencia a ejecutar, y si esta linea posee la sintaxis normal estipulada por el programa manger entoncecs la ejecuta, caso contrario te envia un error, porsupuesto te dice cual es el error y en que linea se encuentra, asi que no te vais a desesperar cuando algo no te salga, solo LEE el error, buscalo y enmendalo.
Cuando me refiero a interpretado tambien quiero decir que este programa script no es compilado, es decir no se crea en ningun momento un programa binario que se refiera a nuestro script.

Tenemos algunos lenguajes interpretados populares en el planeta como son
  • PHP ---> paginas web
  • JAVASCRIPT ---> paginas web
  • SIRC ---> script para IRC :)
  • y varios otros.
para crear un script necesitamos un editor simple, yo use el "vi" usa el que desees.

toda linea en un script comienza por el interprete de comando, de la siguiente manera

#!/bin/bash

esto especifica el interprete y su ruta absoluta de donde se encuentra el inteprete.
ojo, no equivocarse aqui de lo cotrrario daria un error aun que el escript este bien hecho.

entonces, nuestro primer script

1.- Hola mundo

creamos un archivo con nombre script1.sh, copiamos ( si usamos "vi": vi script1.sh )

#!/bin/bash
echo "HOLA MUNDO";

salimos y grabamos ( si usamos "vi": presionamos la tecla ESC, luego :wq enter )
ahora lo unico que necesitamos es darle permisos de ejecuacion

chmod a+x script1.sh

ahora solo ejecutamos usando

sh script1.sh

o

./script1.sh

cualquiera de la 2 funciona

2 .- variables
Las variables estan presedidas por el signo $ , solo se especifica el dolar cuando la variable ya posee valor ejemplo

#!/bin/bash
valor="Esta es una variable";
echo $valor;

3.- ejecutando comandos
Los comando de consola son capaces de ser ejecutados aqui, ejemplo

#!/bin/bash
clear;
ls -al;
echo "FFFFFFFFFFFFIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNN";
ifconfig | mail -s "desde mi script" aehmc@hotmail.com

como puedes ver ejecutamos 4 comandos y todos dentro del script.

4.- Operadores y expersiones

+ Suma
- Resta
/ Division
\* Multiplicacion

Posibles expresiones para condicionales
Para ficheros:
-r Es Verdadero si el fichero existe y se puede leer
-w Es Verdadero si el fichero existe y se puede escribir en el
-x Es Verdadero si el fichero existe y es ejecutable
-f Es Verdadero si el fichero existe
-d Es Verdadero si es un directorio
-s Es Verdadero si el fichero existe y tiene un tamaño mayor que cero.
-b fichero - Verdadero si fichero existe y es un block especial.
-c fichero - Verdadero si fichero existe y es un character special.
-e fichero - Verdadero si fichero existe
-g fichero - Verdadero si fichero existe y es un set-group-id.
-k fichero - Verdadero si fichero tiene su ``sticky'' bit set.
-L fichero - Verdadero si fichero existe y es un symbolic link.
-p fichero - Verdadero si fichero existe y es un named pipe.
-S fichero - Verdadero si fichero existe y es un socket.
-t [fd] - Verdadero si fd está abierto en un terminal. Si fd es omitido, su defecto es 1 (standard output).
-u fichero - Verdadero si fichero existe y su set-user-id bit is set.
-O fichero - Verdadero si fichero existe y es un owned by the effective user id.
-G fichero - Verdadero si fichero existe y es un owned by the effective group id. fichero1 -nt fichero2 - Verdadero si fichero1 es
mas nuevo (according to modification date) que fichero2.
fichero1 -ot fichero2 - Verdadero si fichero1 is mas viejo que fichero2. fichero1
-ef fichero2 - Verdadero si fichero1 y fichero2 tienen el mismo numero de device and inode.
-z string - Verdadero si la longitud de string es 0.
-n string - Verdadero si la longitud de string no es 0.
string1 = string2 - Verdadero si los strings son iguales
string1 != string2 - Verdadero si los strings no son iguales.
! expr - Verdadero si expr es falso.
expr1 -a expr2 - Verdadero si expr1 y expr2 son verdaderos.
expr1 -o expr2 - Verdadero si expr1 o expr2 es verdadero.
arg1 OP arg2 - OP es uno de -eq, -ne, -lt, -le, -gt, or -ge.

4.- estructuras de control
las estrtucturas de control son parte importante dentro de la programacion
nota. los comentarios van precedidos del signo #
otra nota. el nombre de los scripts lo pondre en la segunda linea de cada script

IF

#!/bin/bash
#if1.sh
echo "Inserte un valor";
read valor;
if [ -z $valor ] ;then
echo "La cadena es vacia";
else
echo "El valor ingresado es $valor";
fi

en el ejemplo anterior la linea read lee un valor desde la consola y la recibe como parametro
-z quiere nos devuelve un valor true o false dependiendo si $valor posee algun valor ingresaso desde "read" , si es verdadero, imprime "La cadena es vacia", de lo contrario imprime el valor de la variable valor.

un ejemplo mas.

#!/bin/bash
#if2.sh
fichero=$1
if [ -s $fichero ] ; then
echo "El fichero existe y su contenido es";
echo "...................................";
sleep 3;
cat $fichero;
else
echo "El fichero $fichero no existe o tiene tamano 0 o no se puede leer";
fi

para hacer funcionar este ejemplo ejecute ./if2.sh /etc/fstab
fichero=$1 ---> $1 captura el primer parametro de la linea anterior "./if2.sh /etc/fstab", es decir captura "/etc/fstab" entonces la variable fichero constiene "/etc/fstab"
if [ -s $fichero ] ; then ---> -s es verdadedo si el fichero existe y tiene un tamaño mayor que cero
sleep 3; ----> retarda la ejecucion del script en 3 segundos
cat $fichero; ----> imprime en pantalla el archivo /etc/fstab

otro ejemplo

SELECT CASE

#!/bin/bash
echo "ingrese un numero de dia";
read numero;
case $numero in
1) echo "Lunes";;
2) echo "Martes";;
3) echo "Miercoles";;
4) echo "Jueves";;
5) echo "Viernes";;
6) echo "Sabado";;
7) echo "Domingo";;
*)echo "Opcion no valida";;
esac

Sabemos que el case es como tener una serie de if cosecutivos, en este caso

read numero; ----> lee un valor numerico de dia de la semana
case $numero in ----> evalua la variable $numero en los casos
1) echo "Lunes";; ----> si es 1 entoncecs imprimimos Lunes
2) echo "Martes";; -----> si es 2 entoncecs imprimimos Martes
3) echo "Miercoles";; ----> asi sucesivamente ( fijate bien en los 2 ;; ( puntos y coma))
4) echo "Jueves";;
....
*)echo "Opcion no valida";; ---> evalua si el valor ingresado cualquier otro
esac -----> cierra la intruccion

FOR - WHILE

for
sintaxis
for ; do
senetencia1
senetencia2
senetencian
done


#!/bin/bash
#for.sh
echo "Imprimiendo ";
for num in `seq 1 10`; do
echo "Contado:$num";
done

ojo con el simbolo ---> ` <---- que no es --> ' <---apostrofe ni comilla
for num in `seq 1 10`; do --->
num---> sera la variable contador
`seq 1 10` ---> secuencia desde el 1 hastta el 10

mas ejemplos
tambien se puede hacer for tipo C,

#!/bin/bash
#for2.sh
for i in $(ls);do
echo "item:$i";
done

for i in $(ls);do --->
i ----> es la variable contador que contendra cada item resultante del comando "ls"
$(ls) ----> variable limite de iteracion cuya fuente o valor es el resultado del comando "ls"

while





http://www.trhex.com/csharp