quarta-feira, 5 de dezembro de 2007




Conteúdos Teóricos:
1. Introdução
1.1. Conceito de Sistema Operativo
1.2. Sistemas Batch Simples
1.3. Sistemas Batch Multiprogramados
1.4. Sistemas de Time-Sharing
1.5. Sistemas de Computação Pessoal
1.6. Sistemas Paralelos
1.7. Sistemas Distribuídos
1.8. Sistemas de Tempo Real 2. Estruturas do Sistema de Computação
2.1. Operação de sistemas computacionais
2.2. Estrutura de sistemas de E/S
2.3. Estrutura de sistemas de armazenamento
2.4. Hierarquia de armazenamento
2.5. Protecção pelo hardware
2.6. Arquitectura geral do sistema
3. Estruturas do Sistema Operativo
3.1. Componentes de um sistema
3.2. Serviços implementados por sistemas operacionais
3.3. Chamadas ao sistema
3.4. Programas de sistemas
3.5. Estruturas de sistemas
3.6. Máquinas virtuais
3.7. Projecto e implementação de sistemas
3.8. Configuração do sistema
4. Gestão de Processos
4.1. Conceito de processo
4.2. Selecção de processo
4.3. Operações sobre processos
4.4. Processos cooperativos
4.5. Fluxos execução
4.6. Comunicação entre processos
5. Alocação da CPU
5.1. Conceitos básicos
5.2. Critérios de alocação

5.3. Algoritmos de alocação
5.4. Alocação de vários processadores
5.5. Alocação em tempo real
5.6. Avaliação de algoritmos
6. Sincronização entre Processos
6.1. Fundamentos
6.2. O problema das regiões críticas
6.3. Hardware de sincronização
6.4. Semáforos
6.5. Problemas clássicos de sincronização

Conteúdos Práticos:
1. Comandos fundamentais da shell em Linux (revisões).
2. Programação concorrentes em Linux:
2.1. Gestão de processos: primitivas fork, getpid, getppid, exit, exec*, system, wait e waitpid;
2.2. sinais: primitivas kill, sgnal, pause, sleep e alarm;
2.3. memória partilhada: primitivas shmget, shmat, shmdt e shmctl;
2.4. semáforos: primitivas semget, semctl e semop;
2.5. mensagens: primitivas msgget, msgctl, msgsnd e msgrcv;

Bibliografia:

- “Sistemas Operacionais – 5ª edição” – Silberschatz & Galvin, Prentice Hall.
- “Operating System Concepts” – Silberschatz & Galvin, Addison-Wesley;
- “Operating System: A Design Oriented Approach” – Charles Crowley, McGraw Hill;
- “Fundamentos de Sistemas Operativos” – José Alves Marques & Paulo Guedes, Editorial Presença;
- “Sistemas Operacionais Modernos” – Andrew S. Tanenbaum, Prentice-Hall do Brasil;
- “Linux Programmer´s Reference” – Richard Petersen, Osborne McGraw-Hill;
- “Linux Application Development”, Michael K. Johnson, Erik W. Troan, Addison-Wesley.

terça-feira, 6 de março de 2007

Instalação e configuração de um servidor DNS (BIND) em Linux

Objectivo

Instalação e configuração de um servidor DNS.

Introdução

Uma das aplicações mais utilizados como servidores de DNS é o BIND. É esta aplicação, neste caso BIND 9, que será utilizado para configurar um servidor DNS.

Implementação

  1. Instalar BIND 9.

    • sudo apt-get install bind9

  2. O Bind é composto por três componentes:

    • named – que é o daemon que correr no lado do servidor DNS.

    • resolver library – que é o resolver do lado do client do BIND. Faz as queries ao servidores DNS, de modo a traduzir os nomes.

    • tools for testing – ferramentas para testar o servidor de DNS.

  3. Como se instalou o pacote compilado do Ubuntu os ficheiros do BIND já estão pré-configurados.

  4. O ubuntu divide as configurações do ficheiro named.conf em named.conf.options, named.conf e named.conf.local.

    • O ficheiro named.conf contém as configurações por defeito comuns a todos os servidores de nomes. Isto é contém por exemplo as configurações referentes às zonas da raíz, loopbak e broadcast (não incluída nesta configuração).

    • O ficheiro /etc/bind/named.conf.options contém opções.

    • O ficheiro named.conf.local, será aquele onde serão configuradas as zonas que se pretende identificar no servidor de nomes.

  5. Ter em atenção que o conteúdo do ficheiro /etc/bind/named.conf deverá ser decomposto nos três ficheiros descritos anteriormente.

    • A secção options para o ficheiro /etc/bind/named.conf.options.

    • A secção zone root e zone loopbak para o ficheiro named.conf .

    • A secção zone ass.estgm.ipb.pt"

  1. Ficheiro de central de configuração do BIND - /etc/named.conf (ubuntu - /etc/bind/named.conf.local).

    • Informa quais as zonas sob a sua responsabilidade e respectivos ficheiros.

/etc/bind/named.conf

options {

forwarders {

193.136.195.220;

};

// pid-file "/var/run/bind/run/named.pid";

// query-source address * port 53;

// to listen for queries only on certain interfaces

listen-on { 127.0.0.1; 192.168.1.0/24; }

    };

//

// a master nameserver config

//

zone "." {

type hint;

file "db.root";

};


zone "localhost" IN {

// a master type means that this server needn't look

// anywhere else for information; the localhost buck stops here.

type master;

file "/etc/bind/zone.localhost";

// don't allow dynamic DNS clients to update info

// about the localhost zone

allow-update { none; };

};


zone "0.0.127.in-addr.arpa" {

type master;

file "/etc/bind/db.local";

allow-update { none; };

};


zone "1.168.192.in-addr.arpa" {

type master;

file "/etc/bind/zones/pri.1.168.192.in-addr.arpa";

also-notify { 192.168.1.2; }

};


zone "ass.estgm.ipb.pt" {

type master;

file "/etc/bind/zones/pri.ass.estgm.ipb.pt";

allow-transfer { 192.168.1.2; };

also-notify { 192.168.1.2; }

};



    • A secção options define o tipo de servidor, a directoria por defeito para o named.

    • A secção zone identifica a localização de hints, localhost, zone e reverse zone.

    • Na zona ass.estgm.ipb.pt a linha allow-transfer { 192.168.1.2; } define que:

      • Por questões de segurança apenas o servidor secundário poderá fazer fazer transferência da zona.

    • Ficheiro Hints

      • Este ficheiro contém os nomes e endereços dos servidores root da Internet. Estes conhecem onde os authoritative servers para o seu domínio existem.

    • Ficheiro Local

      • Os servidores DNS (Name servers) são mestres ou servidores principais do seu próprio domino loopback (127.0.0.1). O objectivo de criar ficheiros de zonas locais para cada aspecto do nosso localhost é reduzir o tráfego e permitir ao software do servidor .

    • Ficheiro Zone

      • Este ficheiro, é também de chamado de base de dados do domínio. Define a maior parte da informação necessária para resolver as queries do domínio que administramos. Mapeia os nomes em endereços IP e disponibiliza informação sobre os serviços fornecidos sobre os serviços oferecido pela organização incluído: servidor web, ftp, email, telnet, name servers, etc.

      • O ficheiro zone utiliza diversos record types incluindo o SOA or start of authority; NS ou name server; A or host name to address map; PTR ou apontador pra o endereço que mapeia os nomes; MX ou mail exchanger que identifica os servidor de mail do domínio; e o CNAME ou canonical nome que define um alias para o nome de um host.

    • Ficheiro Reverse zone

      • O ficheiro reverse zone mapeia os endereços IP aos nomes dos hosts.

    • O parâmetro allow-transfer { 192.168.1.2; }; indica que permite a transferência de zones para o servidor secundário.

    • O parâmetro also-notify { 192.168.1.2; } sempre que o número de série é incrementado e o servidor é reiniciado é enviada uma notificação ao servidor secundário. Este ao verificar que o serial foi incrementado faz a actualização.

  1. Como indica o ficheiro named.conf que na secção das zonas indica onde encontrar a informação sobre as diversas zonas.

    • Neste caso são cinco ficheiros db.root, zone.localhost, 0.0.127.in-addr.arpa, 1.168.192.in-addr.arpa, ass.estgm.ipb.pt.

    • O ficheiro db.root ao contrário dos outros é gerido pela The Internet's Network Information Center e caso não exista ou desconfie que esteja desactualizado faça o download de ftp://ftp.internic.net/domain/named.root.

    • O ficheiro zone.localhost, pode ter outro nome arbitrário, e indica ao named que o endereço de localhost é 127.0.0.1. Normalmente vêm configurado por defeito.

/etc/bind/zone.localhost

; loopback/localhost zone file

;

$TTL 1D

$ORIGIN localhost.

@ IN SOA @ root (

1 ; Serial

8H ; Refresh

15M ; Retry

1W ; Expire

1D) ; Minimum TTL

IN NS @

IN A 127.0.0.1

    • O ficheiro 0.0.127.in-addr.arpa, indica o named que o nome associado ao IP 127.0.0.1 é localhost. Normalmente vêm configurado por defeito.

/etc/bind/0.0.127.in-addr.arpa

; reverse pointers for localhost

;

$TTL 1D

$ORIGIN 0.0.127.in-addr.arpa.

@ IN SOA localhost. root.localhost. (

1 ; serial

8H ; refresh

15M ; retry

1W ; expire

1D ) ; minimum

IN NS localhost.

1 IN PTR localhost.



    • Os restantes são explicados de seguida.

  1. Ficheiro zone pri.ass.estgm.ipb.pt

/etc/bind/zones/pri.ass.estgm.ipb.pt


@ IN SOA server1.ass.estgm.ipb.pt. administrador.ass.estgm.ipb.pt. (

2006012103; serial

28800; refresh, seconds

7200; retry, seconds

604800; expire, seconds

86400 ); minimum, seconds

;

NS server1.ass.estgm.ipb.pt.;

NS ns0.ass.estgm.ipb.pt. ;

;

MX 10 mail.ass.estgm.ipb.pt.;

;

ass.estgm.ipb.pt. A 192.168.1.1

www A 192.168.1.1

server1 A 192.168.1.1

ns0 A 192.168.1.2

ftp A 192.168.1.3

webdav CNAME www

ass.estgm.ipb.pt. TXT "v=spf1 a mx ~all"

mail.ass.estgm.ipb.pt. TXT "v=spf1 a -all"


    • SOA - refere-se a "Start of Authority"

    • Assim o nosso ficheiro zona indica onde começa a autoridade. A nossa autoridade começa no ficheiro zone. Os servidor Top Level Domain estão agora à espera que o nosso servidor faça parte do trabalho.

    • A primeira linha do ficheiro zone.

      • O "@" refere-se à origem deste ficheiro de zona que é o server1.ass.estgm.ipb.pt. O DnS utiliza esta label para designar o registo Start Of Authority (SOA) que aparece no inicio de qualquer ficheiro zona definindo o domínio.

      • o próximo item "IN" indica que é Internet. Existem outras classes mas são pouco utilizadas.

      • o próximo é o email do administrador neste caso administrador@ass.estgm.ipb.pt.

      • seriel – numero de série da zona. É incrementado cada vez que a zona é alterada, assim o servidor de secundário sabe quando a zona foi alterada.

      • refresh – número de segundo que o servidor secundário deverá esperar antes de verificar novas actualizações.

      • retry – número de segundos que o servidor secundário ir esperar para fazer um novo pedido depois do seu último pedido falhado.

      • expire – o número de segundo que o o servidor secundário irá esperar antes de considerar que os seus dados expirados se não conseguir contactar o servidor primário.

      • ninimum – usado para determinar o mínimo TTL.

    • Registos NS

      • Especificam os servidores de nomes responsáveis pelo domínio. É necessário pelo menos um, no entanto é comum ter dois (primário e secundário).

    • Registos MX

      • Necessário para recebermos mails em ass.estgm.ipb.pt. Este registo indica que os mails para ass.estgm.ipb.pt devem ser entregues em server1.ass.estgm.ipb.pt, com uma prioridade de 10. Pode-se colocar mais de que um servidor de mail.

      • Quanto maior for o número menor é a prioridade. Os servidores serão contactados pela ordem de prioridade.

      • Se quisemos que o servidor server1.ass.estgm.ipb.pt, trata-se endereços de email do um subdomínio (e.g. user@sub.ass.estgm.ipb.pt), então bastaria colocar:

        • subdomain.ass.estgm.ipb.pt. MX 10 mail.ass.estgm.ipb.pt. (ou)

        • subdomain MX 10 mail.ass.estgm.ipb.pt.

    • Registos A

      • São os registo mais importantes de DNS. Permitem mapear nomes em endereços IP

      • Especificar que o ass.estgm.ipb.pt tem o endereço IP 192.168.1.1. Dois modos:

        • ass.estgm.ipb.pt. A 192.168.1.1 ou

        • A 192.168.1.1

      • O servidor www tem o mesmo IP, isto é www.ass.estgm.ipb.pt e ass.estgm.ipb.pt apontam para o mesmo servidor.

        • www A 192.168.1.1

      • Por fim os servidores server1.ass.estgm.ipb.pt e ns0.ass.estgm.ipb.pt, em que o segundo tem um IP diferente do primeiro porque é um servidor DNS secundário.

    • Registos CNAME

      • Mnemónica para “canonical name”.

        • webdav CNAME www

      • Significa que webdav.ass.estgm.ipb.pt é um alias para ftp.ass.estgm.ipb.pt e por isso aponta para o mesmo host.

      • Um CNAME tem sempre que apontar para o registo A. Não devem ser usados registos CNAME com registos SOA.

      • Os CNAME são benéficos em determinados casos. Imagine que tem centenas de máquinas como registos A apontar para o mesmo IP. Se um dia alterar esse IP terá que alterar todos os registo A. Isso não se passava se utilizasse o CNAME. Só se faria a actualização de um registo A.

    • Registo TXT

      • Permitem atribuir informação adicional a uma zona. Estes contém registos SPF (Sender Policy Framework), que especificam que hosts estão permitidos enviar mail com o domínio ass.estgm.ipb.pt. Tecnicamente é possível enviar mail de qualquer host, no entanto, provedores de mail (yahoo, hotmail), utilizam actualmente registos SPF. Isto é se o emissor do domínio não tiver um registo SPF ou enviar de uma máquina que não esteja na lista de registos SPF, o mail é classificado como spam.

      • Existe um wizard para criar um registos SPF em http://www.openspf.org/wizard.html?mydomain=&x=26&y=8 e em seguida adicionar isso no ficheiro da zona :

        • ass.estgm.ipb.pt. TXT "v=spf1 a mx ~all"

        • mail.ass.estgm.ipb.pt. TXT "v=spf1 a -all"

  1. Ficheiro Reverse Zone

    • Agora os programas pode procurar ass.estgm.ipb.pt e o todos os seu subdomínios no DNS, mas é necessário a reverse zone que mapeia os IP em ass.estgm.ipb.pt. O reverse lookup é utilizado pr diversos programas que irão recusar se o reverse lookup e o forward lookup (o lookup normal do ass.estgm.ipb.pt) não corresponderem um com o outro (também utilizado para classificar os mail como spam).

    • O início do ficheiro pri.1.168.192.in-addr.arpa é exactamente igual ao pri.ass.estgm.ipb.pt.

/etc/bind/zones/pri.1.168.192.in-addr.arpa

    @ IN SOA server1.ass.estgm.ipb.pt. administrador.ass.estgm.ipb.pt. (

2006012103; serial

28800; refresh, seconds

7200; retry, seconds

604800; expire, seconds

86400 ); minimum, seconds

;

NS server1.ass.estgm.ipb.pt.;

NS ns0.ass.estgm.ipb.pt. ;

1 PTR ass.estgm.ipb.pt.

2 PTR ns0.ass.estgm.ipb.pt.

3 PTR ftp.ass.estgm.ipb.pt.


  1. Agora pode-se testar fazendo o lookup como o comando dig, tentando descobrir o endereço de IP de ass.estgm.ipb.pt (dig ass.estgm.ipb.pt):

; <<>> DiG 9.3.2 <<>> ass.estgm.ipb.pt

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58609

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2


;; QUESTION SECTION:

;ass.estgm.ipb.pt. IN A


;; ANSWER SECTION:

ass.estgm.ipb.pt. 86400 IN A 192.168.1.1


;; AUTHORITY SECTION:

ass.estgm.ipb.pt. 86400 IN NS ns0.ass.estgm.ipb.pt.

ass.estgm.ipb.pt. 86400 IN NS server1.ass.estgm.ipb.pt.


;; ADDITIONAL SECTION:

ns0.ass.estgm.ipb.pt. 86400 IN A 192.168.1.3

server1.ass.estgm.ipb.pt. 86400 IN A 192.168.1.1


;; Query time: 29 msec

;; SERVER: 192.168.123.128#53(192.168.123.128)

;; WHEN: Mon Mar 5 18:04:28 2007

;; MSG SIZE rcvd: 122

  1. E agora fazer o reverse lookup, (dig -x 192.168.1.1):

; <<>> DiG 9.3.2 <<>> -x 192.168.1.1

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40943

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2


;; QUESTION SECTION:

;1.1.168.192.in-addr.arpa. IN PTR


;; ANSWER SECTION:

1.1.168.192.in-addr.arpa. 86400 IN PTR ass.estgm.ipb.pt.


;; AUTHORITY SECTION:

1.168.192.in-addr.arpa. 86400 IN NS ns0.ass.estgm.ipb.pt.

1.168.192.in-addr.arpa. 86400 IN NS server1.ass.estgm.ipb.pt.


;; ADDITIONAL SECTION:

ns0.ass.estgm.ipb.pt. 86400 IN A 192.168.1.3

server1.ass.estgm.ipb.pt. 86400 IN A 192.168.1.1


;; Query time: 99 msec

;; SERVER: 192.168.1.1#53(192.168.1.1)

;; WHEN: Mon Mar 5 18:05:26 2007

;; MSG SIZE rcvd: 148

    • Repare nas secções de questão e resposta em ambas as pesquisas. Como se pode verificar as o forward e o reverse lookup corresponderem.

  1. Configurar o Servidor DNS secundário:

    • De notar que nas configurações do servidor primário está definido que o servidor DNS secundário é ns0.ass.estgm.ipb.pt. Este servidor irá funcionar como servidor de backup caso o servidor principal falhe, permitindo que o serviço de nomes continue a disponibilizar o seu serviço para o domínio e subdomínio de ass.estgm.ipb.pt.

    • Ficheiro named.conf

options {

//pid-file "/var/run/bind/run/named.pid";

//directory "/etc/bind";

// query-source address * port 53;

};

zone "." {

type hint;

file "db.root";

};

zone "localhost" IN {

type master;

file "/etc/bind/zone.localhost";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" {

type master;

file "db.local";

allow-update { none; };

};

zone "ass.estgm.ipb.pt" {

type slave;

file "/etc/bind/zones/sec.ass.estgm.ipb.pt";

masters { 192.168.1.1; };

};

    • Escrevendo slave, define-se que se trata de uma slave zone e na linha masters especifica-se o IP do servidor primário. Na linha file especifica-se nome do ficheiro em que a slave zone que deve deve ser guardada.

    • Reinicie o servidor e brevemente deverá encontrar o ficheiro /etc/bind/sec.ass.estgm.ipb.pt no servidor secundário. Isto aconteceu porque o servidor secundário contactou o primário e este último transferiu a zona para o secundário.

    • De lembrar que cada vez que é feito um update à zona no servidor primário, deve ser incrementado o número serial, doutro modo a zona não será transferida.

  1. Ter em atenção que se houver firewall em alguns dos servidores primário ou secundário que bloqueie a porta 53 o zona não será transferida.

Bibliografia

quarta-feira, 24 de janeiro de 2007

Trabalhos da Unidade Curricular de Serviços de Internet

Alguns dos trabalhos da UC de Serviços de Internet: