Posts Tagged ‘DNS – Domain Name System’

Bloc KO pel núbol

divendres, desembre 2nd, 2011

El bloc va estar caigut gran part de dimarts i dimecres fins les nou del matí de dijous.

El problema que va patir és que tot i que l’amazon cloud està molt bé, de vegades el servidor físic on tens allotjat el teu projecte falla.

Quan això passa no queda altre remei que parar la màquina virtual i tornar-la a iniciar.

Vaig fer unes quantes proves per a determinar que es tractava d’això ja que havia rebut un atac d’spam massiu (que no va reixir però que va estressar el servidor), i vaig apagar la instància.

Llavors vaig experimentar un altre problema, el DNS no responia.

Vaig afegir la feina d’investigació i llavors finalment vaig veure el problema. En apagar i iniciar de nou el servidor aquest tenia una ip interna diferent (funciona amb NAT) i jo tenia especificat que el servidor dns (service named) només respongués per 127.0.0.1 i la ip interna del NAT (que havia canviat).

Determinar i solucionar tot això em va comportar aquest interval de temps en que el servidor no va romandre accessible.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Bloc inaccessible

dimecres, novembre 23rd, 2011

El bloc ha estat inaccessible durant aquest matí i el dia d’ahir.

El motiu sembla ser que Amazon va fer un càrrec a la meva tarja que va ser rebutjat i va deixar de fer accessibles els serveis.

Després de fer el pagament de manera manual van tardar una mica a reactivar l’accés.

Llavors el problema va ser un altre, i és que en veure que no responia el servidor, l’havia reiniciat, i quan ja va estar funcionant no responia al DNS.

I és que no tenia configurat el servei de dns (named) per a que arranqués de manera automàtica.

El vaig iniciar manualment i el vaig configurar com a servei automàtic.

En CentOS això es fa amb:

sudo service named start
sudo chkconfig named on
Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Muntar un servidor dns a CentOS

Dimarts, novembre 1st, 2011

I seguim amb el tema cloud. Com a part de la migració i degut al mal i precari servei de Nominàlia he decidit muntar-me els meus propis servidors DNS al cloud.

Com és un tema que m’heu demandat alguns de vosaltres procedeixo a explicar-vos pas per pas com fer-ho.

Primer instal·larem:

  • bind
  • caching-nameserver
  • bind-chroot

Per a fer-ho la comanda és:

sudo yum -y install bind caching-nameserver bind-chroot

 

Després editarem l’arxiu /etc/named.conf

Les parts que haurem de canviar són:

    listen-on port 53 { 127.0.0.1; 10.220.193.51; 50.17.195.80; };

    allow-query     { any; localhost; };

On 10.220.193.51 és l’adreça privada per la que respon el servidor (si fem NAT) i 50.17.195.80 és l’adreça pública per la que respon el servidor DNS (si té visibilitat directa).

La línia per defecte és allow-query     { localhost; }; això permet que el servidor DNS respongui a consultes fetes per localhost, però no de la resta d’Internet, com el nostre servidor serà públic hi hem de posar com a mínim any.

Si no ho féssim després en fer un dig obtindríem un error:

;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 22922

i

Afegir:

// Línies d'Inici del Carles
zone "codic.cat" IN {
    // Per a resolució normal
    type master;
    file "codic.cat.fwd";
    allow-update { none; };
};

zone "195.17.50.in-addr.arpa" IN {
    // Per a la resolució inversa
    type master;
    file "codic.cat.rev";
    allow-update { none; };
};

// Fi de les línies del Carles

Llavors editem l’arxiu /var/named/codic.cat.fwd

 

$TTL 86400
@ IN SOA dns01.codic.cat. root.codic.cat.(
	1997022700 ; Serial
	28800 ; Refresh
	14400 ; Retry
	3600000 ; Expire
	86400 ) ; Minimum
  IN NS dns01.codic.cat.
  IN NS dns02.codic.cat.
  IN MX 10 ASPMX.L.GOOGLE.COM.
  IN A 50.17.195.80
dns01 IN A 50.17.195.80
dns02 IN A 50.19.100.221
www IN A 50.17.195.80

Teniu cura que els espais són importants.

I editem /var/named/codic.cat.rev

 

$TTL 86400
@ IN SOA dns01.codic.cat. root.codic.cat.(
	1997022700 ; Serial
	28800 ; Refresh
	14400 ; Retry
	3600000 ; Expire
	86400 ) ; Minimum
  IN NS dns01.codic.cat.
  IN NS dns02.codic.cat.
IN MX 10 ASPMX.L.GOOGLE.COM.
80 IN PTR dns01.codic.cat.
80 IN PTR www.codic.cat.

On diu 80 és perquè és la ip acabada en 80 del segment 50.17.195.

Llavors farem:

service named restart

Comprovarem que arrenca correctament:

Haurem de canviar l’arxiu /etc/resolv.conf per a que empri com a servidor dns 127.0.0.1

nameserver 127.0.0.1

Arribats a aquest punt obrirem el port del DNS al Firewall.

Hem de permetre accedir des de qualsevol adreça (any) al port 53 (DNS) per als protocols TCP i UDP.

I farem un dig des d’una altra màquina per a comprovar que tot està bé:

dig 50.17.195.80

Per a revisar que tot està bé farem nslookup des d’una màquina client, direm server 50.17.195.80 i li demanarem www.codic.cat i ens haurà de respondre correctament.

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy

Curs de programació en PHP – segona part

dissabte, febrer 19th, 2011

La primera part de l’article és aquí.

Programar és donar les instruccions a l’ordinador sobre què ha de fer i com s’ha de comportar.
Ha de tenir en compte tots els possibles escenaris i totes les possibilitat: controlar les accions de l’usuari com si prem una tecla, com coses que passen al sistema, com ara que no s’hagi acabat l’espai en disc abans d’escriure-hi un arxiu.
Això vol dir que el programador o la programadora haurà d’estar en tot i haurà de pensar en totes les possibilitats. Altrament en algun moment alguna cosa fallarà.
Els ordinadors no saben respondre a coses per a les que no els hem preparat, només per al que prèviament hem programat.

Com és un programa?

Un programa clàssic és un seguit d’instruccions seqüencials, és a dir seguides, com en un llibre, amb iteracions o bucles (per exemple quan el Bart Simpson escriu a la pissarra 100 vegades: no hackejaré la web de l’escola, un programa el que faria és: repeteix 100 vegades: escriu “no hackejaré la web de l’escola”) i condicionals (si passa això fes allò, si no fes això altre).

Un programa és molt similar a un llibre només que a aquells llibres que es van posar de moda quan jo era un bailet que es deien escull la teva pròpia aventura i en que tu podies triar: si esculls enfrontar-te als lladres i salvar a la noia passa a la plana 100, si escull avisar la policia a la 127).

La nostra feina és redactar el llibre (el programa) per a que després el lector (l’usuari) experimenti l’aventura (el programa).

Ara ja t’has instal·lat el WAMP o per separat el servidor web Apache, el PHP i el MySQL, la qüestió és que tens el servidor Web llest per a executar programes PHP.

Si no heu indicat a WAMP que s’iniciï quan arrenqui windows, llavors l’haureu d’executar manualment des del menú de programes.

Llavors us apareixerà una icona a la barra lateral dreta de windows (tray bar), al costat de l’hora. Des d’allí podreu parar, o reiniciar alguns serveis.

Reiniciar el servidor web Apache serà necessari quan canviem un paràmetre de configuració per a que Apache carregui la nova configuració i s’adoni dels canvis.

WAMP 2.1 incorpora el següent programari:

– Apache 2.2.17
– Php 5.3.3
– Mysql 5.1.53 (la versió de 64 bits)
– Mysql 5.5.8 (la versió de 32 bits)
– PhpMyadmin 3.2.0.1
– SQLBuddy 1.3.2

Ara és un bon moment per a explicar com funciona el procés de demanar una plana web a un servidor web.

Les planes web que visitem diàriament, són allotjades en servidors.

Quan nosaltres escrivim al nostre navegador una url, per exemple: http://www.php.net el navegador primer ha de descobrir quina és l’adreça ip d’aquesta plana, és a dir, saber quin servidor li entregarà aquesta plana.

Podem saber quina adreça ip hi ha darrera de www.php.net obrint una finestra ms-dos (a windows) o una finestra de terminal (a Linux i Mac Os X) i teclejant:

ping www.php.net

El número 69.147.83.197 és l’adreça ip.

L’adreça ip és un número únic, i quan un ordinador es vol comunicar amb una adreça ip, tot d’aparells (enrutadors o routers en anglès) des del router ADSL que tenim a casa, fins al que tenen al lloc on és el servidor, saben com fer arribar la informació al servidor, i de tornada cap al nostre ordinador.

Un cop el navegador sap que l’adreça de php.net és 69.147.83.197, llavors s’hi connecta, i demana la plana web que volem.

Hi ha uns servidors que fan la traducció (resolució) del nom www.php.net a adreça ip. Aquests servidors es diuen servidors DNS.

Però una cosa important que us vull comentar és que abans de fer la consulta als servidors DNS l’ordinador mira a un fitxer especial, per si de cas nosaltres volem especificar manualment que un nom d’adreça es resolgui amb una adreça ip concreta.

Això ens serà molt útil més endavant quan programem.

Aquest arxiu es diu hosts. I es troba a les següents rutes:

En el cas de Linux i unix POSIX:

/etc/hosts

En el cas de Mac Os X (10.2 i superiors):

/private/etc/hosts

En el cas de windows l’arxiu es diu:

C:\Windows\system32\drivers\etc\hosts

És important saber que hi ha un nom especial que es diu localhost.

L’adreça localhost es resol com Ip 127.0.0.1

És molt important saber que 127.0.0.1 és una adreça ip especial, que sempre apunta al nostre propi ordinador.

Així si ens connectem des del navegador a http://localhost o http://127.0.0.1 ambdues accions el que faran és demanar una plana al servidor web Apache que tenim instal·lat al nostre ordinador.

En el cas del meu arxiu /etc/hosts tinc definit localhost com 127.0.0.1 i una entrada addicional que es diu dev.codic.cat també a la 127.0.0.1. D'aquesta manera desenvolupo sobre el bloc en local i jo accedeixo amb el navegador posant dev.codic.cat que seguint el que diu l'arxiu hosts resol 127.0.0.1 i per tant va al meu ordinador.

Escriure http://localhost i http://localhost/ té el mateix resultat ja que si no diem res, la plana per defecte que es demana és /

Normalment si es demana la plana / el servidor web envia l’arxiu index.html o index.htm o index.php o default.asp en el cas de servidor IIS de microsoft.

En tot cas això es pot canviar als arxius de configuració d’Apache o IIS (servidor web de microsoft).

 

Us ensenyo a programar en Web perquè la majoria de vegades que programem en PHP ho farem per a Web, i actualment quasi totes les feines són per a Web.

Les planes web no deixen de ser arxius, com llibres, i els navegadors web les interpreten i pinten les coses que li diem que pintin.

Per exemple obriu l’editor de textes, l’eclipse, o qualsevol programa amb el que volgueu programar i copieu aquest codi:

<html>
<head>
<title>La nostra primera plana Web</title>
</head>
<body>
Hola, aquesta és la primera plana web!.<br />
Això és <b>negreta</b>.<br />
Això és <font color="#ff2222">vermell</font>.<br />
Això és un <a href="http://www.codic.cat">hipervincle a Codi Ç</a>.
</body>
</html>

Com podeu observar si executeu plana.html és a dir, si feu funcionar aquest arxiu (això es fa fent doble clic sobre l’arxiu o dient-li al navegador que obri l’arxiu)

veureu que tenim una plana web amb el títol: La nostra primera plana web i on apareix el text que hi ha dins de <body>…</body>, que després de <br /> es genera un salt a la linia següent, que el que hi ha dins de <b>…</b> surt en negreta, i que el que hi ha entre <a href=”http://www.codic.cat”>….</a> és un enllaç cap a http://www.codic.cat
<font color=”#ff2222″>…</font> el que fa és que el text que hi ha entre <font…> i </font> estigui en el color ff2222 que vol dir: intensitat de vermell FF, intensitat de verd 22 i intensitat de blau 22. Aquests són valors exadecimals, bàsicament vol dir que hi haurà a tope de vermell, i una miqueta verd i una miqueta de blau.

Els espais que hi ha que fan que les comandes comencin més cap a la dreta són per a facilitar la lectura del codi, i el fet de programar amb aquests espais es diu indentar.
Quan obrim un bloc, el codi que va dins del bloc l’indentem i així es veu de manera molt clara què forma part del bloc.
La feina d’aprendre HTML l’haureu de fer vosaltres, però és quelcom molt més fàcil que aprendre a programar en PHP.

De tota manera aquí hi ha uns quants exemples amb els que aprendreu HTML a tota velocitat.

Ara anem introduir PHP dins la plana web que hem generat.
Editem l’arxiu plana.html i el deixem així:

<html>
    <head>
        <title>La nostra segona plana Web</title>
    </head>
<body>
        Hola, aquesta és la primera plana web!.
<?php

/* Definim els colors */

$st_conjunt_de_colors = array("vermell"--> "#ff2222",
                              "blau" => "#2222ff",
                              "verd" => "#22ff22",
                              "negre" => "#000000",
                              "gris" => "#777777");

?>
        Això és <strong>negreta</strong>.<br />
<?php
/* Comença el bucle */
foreach($st_conjunt_de_colors as $s_clau-->$s_valor_del_color){
    echo "Això és <span style=\"color: #00de00;\">$s_clau</span>.<br />";
}
?>
Això és un hipervincle a Codi Ç.
</html>
</body>
</html>

Quantes coses noves en unes poques línies!!.
El que hi ha entre /* i */ és un comentari de PHP (remark en anglès).
Serveix per a fer anotacions nostres i PHP ho ignora.

La linia que comença per $st_conjunt_de_colors = array és el que anomenem un array o una matriu.
Un array és una llista que té una correspondència de clau i de valor associat a la clau.
El valor d’una clau pot ser un altre array.

Una de les grans potències que té PHP és la gran quantitat de funcions d’arrais que porta de sèrie.

El que estem definint són claus amb el nom dels colors, i els associem el valor el seu color, i després fem un bucle que recorre l’array i imprimim en format html la clau com a text visible i el valor associat com a color dins del tag d’html font.

La gràcia del PHP és que es pot barrejar amb el codi html i pot generar codi html, i així és capaç de retornar planes dinàmiques. El resultat final és el que s’envia al navegador que veuen les persones que naveguen per la nostra web.

Bé, tornant al nostre exemple, no funcionarà. No funcionarà perquè cal que anomenem l’extensió de .html a .php i que la executi el servidor web.

Això s’aconsegueix posant l’arxiu a la carpeta del nostre servidor web apache.

Si empres WAMP per a windows la ruta per defecte és C:\wamp\bin\http i per a Linux la ruta per defecta (documentRoot) per als arxius que serveix apache és: /var/www

Per a instal·lar apache en Linux feu:

sudo apt-get install apache2

Adreça curta Twitter: http://wp.me/pzeab-1Lp

Català-Catalunya English-USA Traduir a l'Anglès. Translate to English Compartir: La TafaneraIndependènciaCatosfera|FacebookTwitterFriend Feed|googleDeliciousDiggTechnoratiredditmixxyahoolivestumbleuponsimpy