Sei sulla pagina 1di 143

1

DNS: BIND
BIND un sistema software di tipo client/server La parte client di BIND chiamata resolver e si occupa di generare le query per le informazioni sul domain name da inviare al server. La parte server di BIND un demone chiamato named. Vedremo come:
configurare il resover di BIND configurare il name server di BIND (named) costruire i file di database del name server (zone files)

Configurazione di BIND (1)


Il resolver di BIND viene implementato su UNIX come una libreria, piuttosto che un programma client separato. Alcuni sistemi, chiamati resolver-only system, usano solo il resolver e non girano il name server. In sistemi di questo tipo basta configurare il solo file /etc/resolv.conf . Sistemi di questo tipo sono per inusuali e dovuti a limitazioni tecniche che non consentono di far girare localmente il name server.

Configurazione di BIND (2)


Gli altri tipi di configurazione di BIND riguardano tutti il software del server named:
CACHING-ONLY
Definiti anche come recursive-server delegano il compito della risoluzione ad un altro server, ma mantengono una copia locale (cache) dei lookup effettuati.

AUTHORITATIVE NAME SERVER


Contengono le informazioni su tutta la zona di loro competenza, per rendere il servizio fault-tolerant ce ne possono essere pi di uno nella stessa zona, distinguendosi in:

Primary Master

Slave Servers
Stealth Servers

Configurazione del Resolver

Ci sono due modi per gestire la configurazione del resolver: usare la configurazione di default
non usa alcun file di configurazione

creare una configurazione personalizzata


usa il file di configurazione resolv.conf

Configurazione di default del Resolver (1)


La configurazione di default del Resolver: usa il local host come name server di default Ricava il domain name di default dalla stringa restituita dal comando hostname togliendo la parte prima del primo punto.
hostname un comando UNIX usato per impostare o controllare il nome dell'host del local host. da superuser possibile impostare il nome dell'host con hostname peanut.nuts.com da user si pu controllare il nome dell'host con hostname (senza alcun parametro) peanut.nuts.com

Configurazione di default del Resolver (2)

Alcuni sistemi che usano il Network Information System (NIS) possono utilizzare anche il comando domainname disponibile per impostare il default DNS quando non presente il file resolv.conf

Il file di configurazione del Resolver (1)


Il vantaggio di usare il file /etc/resolv.conf rispetto ad usare la configurazione di default oltre che la chiarezza della configurazione dato dalla possibilit di definire server di backup da usare nel caso in cui il server di default non risponda. I comandi usati in /etc/resolv.conf possono essere di diverso tipo, ma due sono universalmente supportati: nameserver address domain name

Il file di configurazione del Resolver (2)


nameserver address serve per identificare, tramite l'indirizzo IP, i server che il resolver contatter per informazioni sui domini. I server saranno contattati nello stesso ordine in cui appaiono nel file (se il primo non risponde contatta il secondo, ecc.). Se nessun nameserver presente nel file o il file non esiste sar contattato il local host, al contrario se esiste resolv.conf e nelle varie definizioni di nameserver non appare il local host quest'ultimo non verr mai contattato. In un host configurato a girare come resolver-only, il file resolv.conf non conterr alcun comando nameserver con l'indirizzo del local host.

Il file di configurazione del Resolver (3)

domain name definisce il nome del dominio di default. Il resolver appende questo nome ad ogni host name che non contiene un punto.
Es se l'host name almond e nel file resolv.conf presente il comando domain nuts.com il resolver invier la query a almond.nuts.com.

10

Il file di configurazione del Resolver (4)


Esempio di configurazione in resolv.conf:
# # File di configurazione per il domain name resolver domain nuts.com # tenta se stesso prima (local host) nameserver 127.0.0.1 # tenta almond come secondo nameserver 128.66.12.1 # in ultimo tenta con filbert nameserver 128.66.1.2

11

Il file di configurazione del Resolver (5)


Esempio di configurazione per sistemi Resolver-only:
# # File di configurazione per il domain name resolver domain nuts.com # tenta almond per primo nameserver 128.66.12.1 # tenta poi con filbert nameserver 128.66.1.2 # (non c' nessun riferimento al local host! )

12

Configurazione di named
Nelle recenti versioni di BIND (faremo riferimento alla versione 9) la struttura dei file di configurazione stata molto semplificata: named.conf: l'unico file di configurazione del demone named che oltre alle impostazioni generali del server contiene le indicazioni sulla risoluzione delle varie zone del dominio/sottodominio servito Zone files: contengono le informazioni sulla risoluzione degli indirizzi e dei nomi per la corrispettiva zona, vengono creati dall'amministratore che ha quindi la possibilit di mantenere una strutura gerarchica dei file in linea con i ruoli che named deve svolgere nelle varie zone.

13

Sruttura del file named.conf (1)


Il file di configurazione di named composto di: Direttive
ogni direttiva termina con un ' ; ' una direttiva pu contenere altre direttive ed anche queste terminano con un ' ; ' le opzioni delle direttive (se pi di una) vengono racchiuse tra parentesi graffe in stile C

Commenti
C style C++ style UNIX style (/* commento */) (// commento) (# commento)

14

Sruttura del file named.conf (2)


Le principali direttive sono:
acl: address match list, definisce delle liste di accesso assegnandogli un nome simbolico da riutilizzare nel file di configurazione acl acl-name { address_match_list };

include: include in quel punto del file un'altro file specificato, utile per semplificare la gestione include filename; options: definisce delle impostazioni globali di Bind e pu essere presente una sola volta. Zone: contiene le opzioni per le zone servite e indica quali sono i file di databease per la risoluzione e quale ruolo (type) riveste named nella zona stessa.

Configurazione di un name server caching-only (1)


Un server caching-only viene spesso utilizzare per velocizzare la navigazione dagli host di una rete locale ed la pi semplice configurazione possibile per named:
// definizione di due reti da autorizzare acl "our_net" { 192.168.4.0/24; 192.168.7.0/24; }; options { directory "/var/named"; // Working directory pid-file "named.pid"; // Put pid file in working dir allow-query { "our_net"; }; }; zone "." IN { type hint; file "named.ca"; };

15

Configurazione di un name server caching-only (2)


zone "loaclhost" IN { type master; file "localhost.zone"; allow-update { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "caching-example/named.local"; allow-update { none; }; };

16

Configurazione di un name server caching-only (3)

17

directory : viene definita la directory nella quale cercare ogni file a cui si far riferimento in seguito allow-query: Definisce in base alla acl specificata da quali host accettare query di risoluzione type: master/slave: named agisce da master/slave per quella zona hint: indica a named da quale punto iniziare a cercare all'avvio un root nameserver e reperire una lista aggiornata dei root nameserver file: specifica quale il file contenente i dati sulla risoluzione dei nomi/indirizzi

18

Standard Resource Records (1)


Nei file di configurazione di named vengono memorizzate informazioni per i domain database. Queste informazioni sono scritte in record che hanno formati standard questi formati vengono chiamati RRs (Standard Resource Records). Vediamo prima i vari tipi di record. Nome del RR Tipo Record Funzione Start of Autority SOA Marca l'inizio di un dato di zone e definisce i parametri cui deve sottostare l'intera zone Name Server NS Identifica il nome del server di dominio Address A Converte un host name in un indirizzo Pointer PTR Converte un indirizzo in un host name Mail Exchange MX Dice dove mandare la posta per un dato dominio Canonical Name CNAME Definisce un alias host name Host Information HINFO Descrive l'hw e il sist. operativo di un host Well Know Service WKS Annunci di servizi di rete

19

Standard Resource Records (2)


Il formato dei resource record del DNS : [name] [ttl] IN type data name
il nome del dominio che referenzia il resource record. Pu essere un singolo host o un intero dominio. Il nome relativo al dominio corrente a meno che non finisca con un punto. Se il name lasciato bianco si fa riferimento all'ultimo name impostato nei record precedenti.

ttl
Time-to-live definisce la lunghezza in secondi che le informazioni di questo resource record devono essere mantenute nella cache. In genere lasciato bianco e viene usato in questo modo il default ttl

IN
definisce il record come un Internet DNS resource record

20

Standard Resource Records (3)


type
identifica il tipo di resource record in base alla tabella precedente. Il campo type obbligatorio

data
questa la specifica informazione data dal tipo di record. Per esempio un record di tipo A conterr nel campo data un indirizzo IP.

21

Il file di inizializzazione della cache (1)


Esempio di un file named.ca:
; formerly NS.INTERNIC.NET ; . 3600000 A.ROOT-SERVERS.NET. 3600000 ; ; formerly NS1.ISI.EDU ; . 3600000 B.ROOT-SERVERS.NET. 3600000 ; ; formerly C.PSI.NET ; . 3600000 C.ROOT-SERVERS.NET. 3600000 ; ; formerly TERP.UMD.EDU . 3600000 D.ROOT-SERVERS.NET. 3600000 IN NS A A.ROOT-SERVERS.NET. 198.41.0.4

NS A

B.ROOT-SERVERS.NET. 128.9.0.107

NS A

C.ROOT-SERVERS.NET. 192.33.4.12

NS A

D.ROOT-SERVERS.NET. 128.8.10.90

...

22

Il file di inizializzazione della cache (2)


Il file contiene solo record di tipo NS (name server) e A (address). Prima vengono identificati i nomi di server per il root (.) domain, sotto i record A associano l'indirizzo ad ogni root server.

Una lista aggiornata dei root server disponibile via anonymous ftp dal sito FTP.RS.INTERNIC.NET nel file /domain/named.root o da altre sorgenti analoghe E' consigliabile scaricare questo file almeno una volta al mese ed aggiornare il nostro file locale named.ca con i cambiamenti riscontrati. Il file named.ca pu essere anche utilizzato per memorizzare server o semplicemente hosts utilizzati pi frequentemente

23

Il file named.local
Esempio di un tipico named.local:

$TTL @

86400 IN

SOA

IN IN

NS PTR

localhost. root.localhost. 2004110911 ; 28800 ; 14400 ; 3600000 ; 86400 ) ; localhost. localhost.

( Serial Refresh Retry Expire Minimum

il record di tipo NS non obbligatorio e specifica il nome dell'host il record PTR serve per attuare la conversione dell'indirizzo 127.0.0.1 nel nome localhost.

24

Il file localhost.zone
Esempio di un tipico localhost.zone:
$TTL 86400 $ORIGIN mydomain.org @

1D IN SOA

@ root ( 42 3H 15M 1W 1D ) @ 127.0.0.1

; ; ; ; ;

serial (d. adams) refresh retry expiry minimum

1D IN NS 1D IN A

La direttiva $ORIGIN serve ad appendere un nome di dominio di default a tutti gli indirizzi non pienamente qualificati.

25

Il record Start of Autority (SOA) (1)


Il formato di un record Start of Autority (SOA) : [zone] [ttl] IN SOA origin contact ( serial refresh retry expire minimum ) zone usualmente @ ad indicare il riferimento indietro al nome del dominio dichiarato nel comando primary del file named.boot origin l'host name del server master primary per quel dominio (almond.nuts.com.) contact l'indirizzo di E-mail del responsabile di quel dominio (la @ viene qui modificata in un punto) serial il numero della versione del zone file

26

Il record Start of Autority (SOA) (2)


refresh il tempo che il server secondario aspetta prima di controllare sul server primario se la zone stata aggiornata. retry definisce quanto un server secondario deve aspettare prima di tentare ancora se un server primario non ha risposto ad una richiesta di refresh di zone. expire definisce quanto a lungo i dati di zone devono essere conservati dal server secondario senza ricevere un refresh di zone minimum il valore impostato di default al campo ttl in tutti i record quando non specificato.

Configurazione di un Authoritative-only Name Server (1)


Il file named.conf pu essere:
options { directory "/etc/namedb"; // pid-file "named.pid"; // allow-query { any; }; // recursion no; // }; // Root server hints zone "." { type hint; file "named.ca"; }; Working directory Put pid file in working dir This is the default Do not provide recursive service

27

// Provide a reverse mapping for the loopback address 127.0.0.1 zone "0.0.127.in-addr.arpa" {type master;file "named.local";notify no;}; // We are the master server for domain1.com zone "domain1.com" { type master; file "domain1.com.db"; // IP addresses of slave servers allowed to transfer domain1.com allow-transfer { 202.18.4.14; 202.18.5.53; }; };

Configurazione di un Authoritative-only Name Server (2)


//reverse mapping zone "0.4.18.202.in-addr.arpa" { type master; file "0.4.18.202.in-addr.arpa.db"; // IP addresses of slave servers allowed to transfer rev-data allow-transfer {202.18.4.14;202.18.5.53;}; }; // We are a slave server for domain2.com zone "domain2.com" { type slave; file "domain2.com.bk"; // IP address of domain2.com master server masters { 202.18.5.12; }; }; zone "0.5.20.202.in-addr.arpa" { type slave; file "0.5.20.202in-addr.arpa.bk"; // IP address of 0.0.20.122in-addr.arpa master server masters { 202.18.5.12; }; };

28

Configurazione di un Authoritative-only Name Server (3)


A differenza delle vecchie versioni di Bind nello stesso file di configurazione, attraverso differenti direttive zone possibile specificare contemporaneamente il comportamento di named sia come primary master che come slave server per due o pi zone distinte Ad ogni zona, tramite la direttiva file possibile assegnare un file distinto per le mappe di conversione rendendo pi semplice la gestione di reti di grandi dimensioni e con una struttura articolata In una zona in cui named opera come slave si definisce il nome del primary master server da cui prelevare gli aggiornamenti delle cache

29

30

I map-files (1)
Per ogni zona viene specificato sia il file per la risoluzione diretta che per quella inversa Nei file di tramite le direttive viste in precedenza possibile configurare in modo molto flessibile il comportamento di named. Un esempio del file domain1.com nel server dns miko.domain1.org pu essere:
@ IN SOA dns1.domain1.org dnsAdmn.domain1.org. ( 2004110210 ; serial 43200 ; refresh 3600 ; retry after 1 hour 3600000 ; expire after 1000 hours 2592000 ; default ttl

) ; Definizione dei nameserver e dei server di mail IN NS .domain1.org. IN NS dns2.domain1.org. IN NS foo.army.com. IN MX 10 mail1.domain1.org. IN MX 20 mail2.domain1.org. ; Definizione del localhost localhost IN A 127.0.0.1 ...

31

I map-files (2)

; host in domain1.org pluto pippo paperino mail1 mail2 mailserver IN IN IN IN IN IN A A A MX MX CNAME 202.18.4.15 202.18.4.16 202.18.4.17 202.18.4.201 202.18.4.202 mail2.domain1.org

32

I map-files (3)
Il file per la risoluzione inversa presenta le stesse caratteristiche del precedente fatto salvo che dopo la direttiva SOA ci saranno le mappe per convertire gli indirizzi IP in hostname:
... 15 16 17 paperino 201 ... IN IN IN IN IN PTR PTR PTR PTR MX pluto.domain1.org pippo.domain1.org paperino.domain1.org 202.18.4.17 mail1.domain1.org

33

Il file del Reverse Domain (2)


Il file reverse ha una struttura analoga al file named.local, entrambi convertono indirizzi IP nei corrispettivi host name. I record di tipo PTR attuano la suddetta conversione per gli host 15, 16, 17, 201 della rete 202.18.4 e poich non finiscono con un punto i valori dei campi nomi saranno relativi al dominio corrente. Per esempio il valore 15 interpretato come 15.4.18.202.in-addr.arpa e named usando questo PTR lo convertir in pippo.domain1.org.

34

Come far partire named


Dopo aver costruito il file named.boot e i vari zone file, si pu inserire in una startup script il comando: # named per far partire named ad ogni bootstrap del sistema. Le prime volte che parte controllare se ci sono errori nei file di log del sistema in /var/log/.... Quando named "gira" si pu controllare con nslookup il name server per essere sicuri che fornisca informazioni corrette.

35

L'uso di nslookup (1)


Il programma nslookup fa parte del pacchetto sw BIND e permette di sottoporre query al name server in maniera interattiva o da linea comandi. E' il modo per interrogare i vari database distribuiti del sistema DNS Il modalit comando nslookup pu essere usato per richiedere l'indirizzo IP di un host. Esempio:
nslookup almond.nuts.com Server: peanut.nuts.com (nome del server usato per la query) Address: 128.66.12.2 (indirizzo del server usato per la query) Name: almond.nuts.com (nome dell'host soggetto della richiesta) Address: 128.66.12.1 (indirizzo dell'host richiesto)

36

L'uso di nslookup (2)


La potenza di nslookup sta per nel modo interattivo. Per far partire nslookup in maniera interattiva basta dare dalla linea comandi: nslookup senza alcun tipo di parametro. Per chiudere una sessione interattiva di nslookup basta dare: > exit dal prompt interattivo (>) . Solo in sistemi SCO con ^D. Per default nslookup interroga i record di tipo A per la risoluzione da nomi a indirizzi IP, ma con il comando set type si pu indirizzare la query agli altri tipi di record.

37

L'uso di nslookup (3)


Esempi si uso interattivo di nslookup: nslookup Default Server: peanut.nuts.com Address: 128.66.12.2 > almond.nuts.com Server: peanut.nuts.com Address: 128.66.12.2 Name: almond.nuts.com Address: 128.66.12.1 > exit

38

L'uso di nslookup (4)


nslookup Default Server: peanut.nuts.com Address: 128.66.12.2 > set type=MX > almond.nuts.com Server: peanut.nuts.com Address: 128.66.12.2 almond.nuts.com preference = 5, mail excharger = almond.nuts.com almond.nuts.com inet address = 128.66.12.1 > peanut.nuts.com Server: peanut.nuts.com Address: 128.66.12.2 peanut.nuts.com preference = 5, mail excharger = peanut.nuts.com peanut.nuts.com inet address = 128.66.12.2 > exit

39

L'uso di nslookup (5)


Il comando server permette di impostare il server a cui fare le proprie query in modo interattivo (usato in particolare per porre le query ad un authoritative server. Una volta collegati con questi tipi di server possibile richiedere un trasferimento di zone file (comando ls) ed ottenere una visualizzazione del file zone ricevuto (comando view). Il comando set domain serve per impostare il dominio di default per gli host name specificati nelle query che seguono tale comando.

40

L'uso di nslookup (6)


nslookup Default Server: peanut.nuts.com Address: 128.66.12.2 > set type=NS > umd.edu Server: peanut.nuts.com Address: 128.66.12.2 Non-authoritative answer: umd.edu nameserver = NOC.UMD.EDU umd.edu nameserver = NI.UMD.EDU umd.edu nameserver = NAMESERVER.ARC.NASA.GOV Authoritative answers can be found from: NOC.UMD.EDU inet address = 128.8.2.200 NI.UMD.EDU inet address = 128.8.2.240 NAMESERVER.ARC.NASA.GOV inet address = 128.102.18.31 > server NOC.UMD.EDU Default Server: NOC.UMD.EDU Address: 128. 8.2.200

41

L'uso di nslookup (7)


> set domain=umd.edu > set type=any > mimsy Server: NOC.UMD.EDU Address: 128.8.2.200 mimsy.umd.edu mimsy.umd.edu mimsy.umd.edu mimsy.umd.edu inet address = 128.8.128.8 preference = 10, mail exchanger = mimsy.UMD.EDU CPU=VAX-11/785 OS=UNIX inet address = 128.8.128.8, protocol = 6 7 21 23 25 79 mimsy.UMD.EDU inet address = 128.8.128.8 inet address = 128.8.2.240 > exit A MX HINFO WKS

42

L'uso di nslookup (8)


nslookup Default Server: peanut.nuts.com Address: 128.66.12.2 > server minerals.big.com Default Server: minerals.big.com Address: 199.82.20.1 > ls big.com > temp.file [minerals.big.com] ####### Received 406 records > view temp.file acmite 199.82.20.28 adamite 199.82.20.29 adelite 199.82.20.11 agate 199.82.20.30 alabaster 199.82.20.31
.... . .

---- More ---> exit

43

L'uso di nslookup (9)


E' possibile vedere tutte le feature di nslookup dando il comando help dal prompt interattivo di nslookup. Settando set debug si hanno ulteriori feature per esaminare le impostazioni effettuate.

44

Servizi di rete
Ci sono servizi di rete che non richiedono alcuna configurazione, basta includerli nel file /etc/inetd.conf e sono direttamente abilitati all'uso, tra questi ricordiamo ftp e telnet. Altri servizi richiedono al contrario una appropriata configurazione e sono: i comandi UNIX di tipo r (rlogin, rsh e rcp) il Network File System (NFS) il Network Information Service (NIS) chiamato anche Yellow Pages il sendmail

45

I comandi UNIX di tipo r (1)


rlogin il comando remote login fornisce ad host remoti. E' una funzione molto simile al telnet rcp il comando remote copy permette di copiare file da sistemi remoti. La sintassi molto simile al copy (cp) eccetto che si pu includere il nome di un host remoto. E' un comando che per funzionalit pu essere paragonato a ftp, solo che ftp un programma interattivo mentre rcp un semplice comando rsh il comando remote shell permette di passare un qualsiasi comando ad un host remoto per l'esecuzione. Lo standard output e lo standard error dell'esecuzione remota vengono riportati nell'host locale.

46

I comandi UNIX di tipo r (2)


Esempi dei comandi r: peanut> rlogin almond Last login:Sat Apr 26 15:23:00 from peanut.nuts.com almond>logout Connection closed
si collega da peanut all'host almond

peanut> rcp almond:/etc/gated.conf sample.conf


copia il file gated.conf dall'host almond e lo porta su peanut nel file sample.conf

peanut> rsh almond ls -l /etc/named.boot -rw-r--r-- 1 root 1496 Sep 12 09:05 /etc/named.boot
richiede la lista della directory del file /etc/named.boot nell'host almond

47

I comandi UNIX di tipo r (3)


Nessuno dei comandi di tipo r richiede il controllo della password: ci pu essere pericoloso in termini di sicurezza. Se si vuole eliminare l'uso dei comandi r basta commentarli nel file /etc/inetd.conf . Altrimenti si pu richiedere sempre la password per tutti gli utenti cancellando il file /etc/hosts.equiv e assicurandoci che nessun utente crei file di tipo ~ /.rhosts .

48

I comandi UNIX di tipo r (4)


Se al contrario si decide di non richiedere password per i comandi r ci si basa su trusted host (host fidati) e trusted user (utenti fidati). I trusted host sono anche chiamati equivalent host, perch il sistema assume che l'accesso dato ad un utente di un trusted host sia equivalente a quello sul host locale. Per fare ci occorre comunque configurare i seguenti file: /etc/hosts.equiv
che definisce i trusted host e i trusted user per l'intero sistema

.rhosts
che definisce i trusted host e i trusted user per una singola utenza.

49

Il file /etc/host.equiv (1)


Il formato base dei record presenti in hosts.equiv :
[+|-][hostname] [username]

dove hostname il nome di un trusted host , che pu essere preceduto da un segno + . Se lasciamo solo il segno + senza l'hostname significa ogni host. Se viene specificato anche lo username significa che a quell'utente non verr richiesta password per tutti gli account! Se l'hostname preceduto dal segno - significa che l'host non un equivalent system e quindi su ogni user per quell'host verr richiesta la password.

50

Il file /etc/host.equiv (2)


Pi in particolare:
host user
fornisce un accesso senza password allo user sull'host

+ user
fornisce accesso allo user su ogni host

host -user
nega l'accesso libero allo user sull'host

-host
nega l'accesso libero a tutti gli user su quell'host

-@group nega l'accesso a tutti gli user su tutti gli host del group +@group1 +@group2
fornisce l'accesso a tutti gli user nel group2 sugli host del group1

51

Il file .rhosts
E' un file che messo sulla user home directory e contiene i record di definizione dei trusted host e dei trusted user per quell'utenza. Il formato il seguente: hostname username dove hostname il nome dell'host fidato da cui possibile connettersi tramite l'utenza username all'utenza locale in maniera diretta senza controllo sulla password. In questo caso il singolo utente che abilita l'accesso locale anche quando il file hosts.equiv non esiste: ci pu essere pericoloso, per questo l'amministratore di sistema dovrebbe controllare e ripulire periodicamente i file .rhosts delle varie utenze.

52

L'accesso di root
Per l'utenza generica ogni richiesta di accesso remoto subisce i controlli seguenti: ricerca sul file hosts.equiv ricerca sul file .rhost dell'utente se esiste se non presente in nessuno dei due file viene richiesta la password. Per l'utenza root la richiesta di accesso remoto libero subisce il solo controllo: ricerca sul file /.rhosts ma comunque sarebbe meglio non definire neppure questo file per l'utenza root per motivi di sicurezza.

53

La directory /usr/hosts
La directory /usr/hosts permette di usare in modo veloce i comandi rlogin e rsh. Occorre andare sulla directory /usr/hosts e creare un link con /usr/ucb/rsh usando come linkname l'hostname, in questo modo baster chiamare l'hostname al posto di rlogin o rsh.
Esempio: da peanut
# cd /usr/hosts # ln /usr/ucb/rsh almond

Se poi voglio fare un rlogin su almond basta dare


almond

Se invece voglio fare una rsh su almond basta dare


almond ls -l /etc/gated.conf

54

Network Information Service (1)


Il NIS un database amministrativo che fornisce un controllo centrale e una distribuzione automatica di importanti file amministrativi. NIS converte vari file standard UNIX in database che possono essere interrogati sulla rete. I database cos fatti sono detti NIS maps. Alcune map sono create da file di sistema quali: /etc/passwd /etc/group

55

Network Information Service (2)


Altre map sono costruite da file di amministrazione di rete quali: /etc/ethers crea le NIS map ethers.byaddr e ethers.byname /etc/hosts crea le NIS map hosts.byname e hosts.byaddr /etc/networks crea le NIS map networks.byname e networks.byaddr /etc/netmasks crea la NIS map netmasks.byaddr /etc/protocols crea le NIS map protocols.byname e protocols.byaddr /etc/services crea la NIS map services.byname /etc/aliases crea le NIS map mail.aliases e mail.byaddr netgroup (che definisce gruppi di host e user) crea le NIS map netgroup.byhost e netgroup.byuser. Questi gruppi possono essere referenziati nei file /etc/hosts.equiv e .rhosts e nella conf. di NFS.

56

Network Information Service (3)


Il vantaggio di usare NIS che i file amministrativi pi importanti possono essere mantenuti su un server centrale e accessibili da ogni workstation della rete. Tutte le mappe create sono memorizzate in un master server su cui gira il processo server di NIS chiamato ypserv. Tali mappe possono essere consultate a livello remoto usando il processo client di NIS chiamato ypbind. Il NIS server e i suoi NIS client vengono chiamati un NIS domain. Un NIS domain ben diverso da un DNS domain! NIS usa il suo domain name per creare una sottodirectory di /var/yp in cui vengono memorizzate le mappe NIS.

57

Network Information Service (4)


Il comando domainname controlla o imposta il NIS domain name. Es: Un superuser pu creare su almond il NIC domain chiamato nuts.com dando: #domainname nuts.com Il NIS domain normalmente configurato allo startup inserendo il comando domainname in uno dei file di startup. NIS una possibile alternativa al DNS per reti non connesse ad Internet.

58

Network Information Service (5)


Per inizializzare il master server e costruire le mappe iniziali occorre usare il comando ypinit con l'opzione -m. Dopo aver inizializzato le mappe si pu far partire il processo del server con ypserv. Quindi far partire il demone di trasferimento delle mappe, ypxfrd, che gira sempre sul master server. Far partire il demone del client NIS dando ypbind.

59

Network Information Service (6)


ES: su almond (master server) dare i seguenti comandi # cd /var/yp # /usr/etc/yp/ypinit -m # ypserv # ypxfrd # ypbind per far partire invece peanut come NIS client basta dare # domainname nuts.com # ypbind

60

Il file /etc/netgroup (1)


Il file /etc/netgroup definisce i gruppi di host e di user che possono essere referenziati in qualsiasi parte si possa utilizzare hostname e username Il file /etc/netgroup pu essere usato solo in sistemi su cui gira NIS, perch solo accessibile dalle NIS map netgroup.byhost e netgroup.byuser.

61

Il file /etc/netgroup (2)


Il formato base di un record in netgroup : groupname member [member] ...
groupname un qualsiasi nome che si vuole assegnare al gruppo member pu essere il nome di un altro gruppo (definizione ricorsiva) o una definizione individuale formata dalla tripla: a - (hostname, username, domainname)

Esempio: admin (almond, kathy,) (peanut,craig,) notare che il NIS domainname quando vuoto significa ogni possibile valore.

62

Il Network File System (1)


Il Network File System (NFS) permette di condividere su una rete directory e file. Con NFS utenti e programmi possono accedere file memorizzati su sistemi remoti come se fossero file locali. I vantaggi di NFS sono: riduzione spazio disco locale semplificazione dei task di supporto (aggiornamento in rete dei file) manipolazione dei file remoti con comandi UNIX locali

63

Il Network File System (2)


Esistono due parti di NSF la parte client che utilizza le directory remote come se fossero parte del sistema locale la parte server che mette a disposizione le proprie directory per l'uso Attaccare una directory remota al filesystem locale (funzione client) viene chiamato mounting. Offrire una directory per l'accesso remoto (funzione server) viene chiamato exporting.

64

Demoni NFS (1)


nfsd [nservers] il demone nfsd gira su server NFS e soddisfa le richieste dei client NFS. L'opzione nservers specifica quanti demoni devono essere fatti partire, in generale 8. biod [nservers] Il demone block I/O gira su client NFS e gestisce la parte cliente del NFS I/O. Anche qui l'opzione server impostata di solito a 8 rpc.lockd Il demone di lock gestisce le richieste di lock dei file e gira sia su client che su server NFS. I client richiedono i lock dei file e i server li garantiscono. rpc.statd Il demone di monitoraggio dello stato della rete richiesto da rpcd.lockd per fornire servizi di monitoraggio. In particolare permette di resettare i lock dopo un crash. Gira sia su client che su server NFS rpc.mountd Il demone di mount NFS gestisce le richieste di mount dei client e gira su server

65

Demoni NFS (2)


I demoni necessari per far partire NFS devono essere inseriti nella script di boot del sistema. Per far partire un NFS:
# Partenza di un client NFS if [ -f /usr/etc/biod -a -f /usr/etc/rpcstatd -a -f /usr/etc/rpc.loackd ]; then biod 8; echo -n 'biod' rpc.statd & echo -n 'statd' rpc.lockd & echo -n 'lockd' fi controlla l'esistenza dei vari demoni e poi li fa partire.

66

Demoni NFS (3)


Per far partire un server NFS:
# Partenza di un server NFS if [ -f /etc/exports ]; then > /etc/xtab exportfs -a nfsd 8; echo -n 'nfsd' rpc.mountd fi controlla l'esistenza del file /etc/exports che contiene le informazioni sulle directory da esportare verso i client NFS. Se trovato svuota /etc/xtab e fa partire exportfs che legge il file /etc/exports e prende le informazioni sulle directory da esportare e le mette su /etc/xtab (l'opzione -a specifica tutte le directory presenti nel file /etc/exports). Fa poi partire 8 copie di nfsd e una copia di rpc.mountd, quest'ultimo determina leggendo il file /etc/xtab per quali directory si possono processare richieste di mount.

67

Demoni NFS (4)


etc/exports Definisce le directory che devono essere esportate e le condizioni da applicare al loro export

exportfs

Rende le directory disponibili al mounting, legge /etc/exports e scrive /etc/xtab

etc/xtab

Contiene informazioni circa le directory attualmente esportate

mountd

Soddisfa le richieste di mount dei client verificando prima se sono accettabili leggendo il file /etc/xtab

68

Esportare filesystem
Il primo passo nella configurazione di un server decidere quali filesystem saranno esportati e quali restrizioni devono essere applicate per la loro esportazione. Alcune ragioni per cui si esporta un filesystem sono: per fornire spazio disco a client senza dischi per evitare duplicazioni superflue di dati su sistemi multipli per fornire programmi e dati gestiti centralmente per condividere dati tra utenti di uno stesso gruppo.

69

Il file /etc/exports (1)


Dopo aver scelto quali filesystem sono da esportare, occorre definirli nel file /etc/exports. Il file /etc/exports un file di configurazione del server di NFS e oltre a definire i file e le directory da esportare determina quali host possono accedervi e che tipo di accesso permesso.

70

Il file /etc/exports (2)


Un esempio di /etc/exports :
/usr/public /usr/man /usr/local /home/research -rw=almond:pecan -ro -access=peanut:almond:pecan:walnut

dove: /usr/public pu essere montata da ogni client sulla rete ed essere usata come se fosse una directory locale del client /usr/man pu essere montata da ogni client della rete, ma pu essere acceduta in scrittura solo da almond e da pecan. Gli altri hanno solo /usr/local pu essere montata da ogni client con solo accesso in lettura /home/research pu essere solo montata dagli host peanut, almond, pecan e walnut e tutti e quattro hanno accesso in lettura-scrittura

71

Il file /etc/exports (3)


Il formato generale dei record del file exports : directory [-option][,option] dove: directory il nome della directory messa a disposizione per l'export option specifica una condizione per l'export di quella directory. Le opzioni usate possono essere: ro (read-only) se non specificato i client possono leggere e scrivere sulla directory rw[=hostname][:hostname]... permette ai client di leggere e scrivere sulla directory. Quando non specificato alcun host, tutti i client NFS possono leggere e scrivere sulla directory. Se viene specificato uno o pi host solo quegli host possono avere accesso in scrittura, gli altri solo in lettura.

72

Il file /etc/exports (4)

access=hostname[:hostname]... limita ai soli host specificati il permesso di montare la directory. Se questa opzione non usata tutti gli host possono montare la directory. In entrambe le ultime opzioni si possono usare nomi di gruppi (netgroup) al posto di nomi di host.

73

Montare filesystem remoti (1)


Una directory (o filesystem) pu essere montata su un sistema se stata prima esportata da un server. Per vedere quali directory sono state esportate da un certo server si pu utilizzare il comando:
showmount -e hostname
Es: showmount -e filbert export list for filbert: /usr/man (everyone) /usr/pubblic (everyone) /home/research peanut, almond, walnut, pecan

74

Montare filesystem remoti (2)


Per montare una directory via NFS si usa il comando: mount hostname:remote-directory local-directory dove: hostname identifica un server NFS remote-directory identifica tutta o parte della directory esportata dal server local-directory la directory utilizzata localmente per montare la remote-directory

75

Montare filesystem remoti (3)


Es: mkdir /home/research mount filbert:/home research /home/research Per "smontare" localmente un filesystem importato basta dare il comando:
umount directory

Es:

umount /home/research oppure umount filbert:/home/research

76

Montare filesystem remoti (4)


Il file /etc/fstab fornisce l'informazione che viene utilizzata per effettuare il remount delle directory NFS dopo una ripartenza del sistema Dopo aver dato i vari mount delle directory occorre dare: mount -p > /etc/fstab in questo modo l'output del comando va a finire in fstab, quindi fstab contiene ora le informazioni dei mount NFS correnti.

77

Montare filesystem remoti (5)


Se infatti controlliamo che cosa contiene fstab relativamente a nfs, nell'es. precedente si ha:
Es: grep nfs /etc/fstab filbert:/home/research/home/research nfs rw 0 0

In questo caso si usa una grep perch il file fstab non contiene solo informazioni relative al NFS.

Infine il codice posto in una script di boot per montare le directory specificate da /etc/fstab.

78

Montare filesystem remoti (6)


In genere questo codice gi esiste nelle script di startup, se cos non fosse occorre aggiungere il comando: mount -vat nfs Le opzioni di questo comando dicono al sistema di montare tutte le directory trovate nel file /etc/fstab. Cio: -v dice di visualizzare un messaggio per ogni directory che si monta -a completa il comando mount con tutte le directory che trova in etc/fstab -t nfs limitatamente alle directory di tipo filesystem NFS

79

Sendmail (1)
Esistono molti programmi per il trasporto della posta elettronica, uno di questi sendmail. Sendmail elimina diverse confusioni causate dai vari programmi di gestione della posta. Sendmail riceve da un programma di posta dell'utente un messaggio, interpreta l'indirizzo di posta elettronica, riscrive tale indirizzo in un formato apposito per il programma di spedizione e instrada il messaggio al programma di spedizione appropriato.

80

Sendmail (2)
/bin/mail /usr/ucb/mail /usr/new/mh

sendmail

UUCP

TCP/IP

Local

81

Sendmail (3)
Sendmail completamente trasparente all'utente finale Oltre che ad instradare posta tra programmi di utenti e programmi di spedizione, sendmail: riceve e spedisce posta SMTP (Simple Mail Transfer Protocol) (internet) fornisce alias di posta molto grandi che permettono l'inserimento di mailing list Prima vedremo come sendmail riceve posta SMTP

82

Far girare sendmail come demone


Occorre far girare il demone sendmail gi in fase di startup del sistema. Dopo di che il demone presta ascolto alla porta 25 del TCP e processa i mail in arrivo. Per far partire da una script iniziale il demone si pu inserire: if [ -f /usr/lib/sendmail ]; then (cd /usr/spool/mqueue; rm -f lf*) /usr/lib/sendmail -bd -q1h; echo -n 'sendmail' > /dev/console fi I comandi controllano prima l'esistenza del programma sendmail, poi se viene trovato il programma si va nella directory delle code di mail e si cancellano tutti i file di lock trovati. Successivamente si fa partire il programma sendmail con l'opzione -bd per dirgli che deve essere un demone e con l'opzione -q1h per fargli controllare ogni ora le code delle mail non spedite (per vari motivi)

83

Alias di sendmail (1)


Senza gli alias il sistema sendmail non potrebbe funzionare da server centrale di posta. Gli alias permettono di: definire nomi alternativi (nickname) per i singoli utenti effettuare il reindirizzamento della posta su altri host (forwarding) gestire delle mailing list.

84

Alias di sendmail (2)


Gli alias di mail sono definiti nel file /etc/aliases (oppure in molti sistemi in /usr/lib/aliases) Il formato base dei record :
alias: recipient[, recipient, ....] dove: alias il nome a cui la mail indirizzata recipient nome cui la mail viene rispedita: pu essere uno user name o il nome di un altro alias o un indirizzo di posta elettronica completo (username@hostname). Possono esiste pi recipient per lo stesso alias, in tal caso la posta verr spedita a tutti i nomi (in questo modo si crea una mailing list)

85

Alias di sendmail (3)


Esempio:
# nomi speciali postmaster: clark root: norman # alias di nuts.com rhunt: becky@peanut jmccafferty: jessi@walnut aresnick: anthony@pecan awright: andy@filbert # una mailing list admin: kathy, david@peanut, sara@pecan, becky@peanut, craig, anna@peanut, jane@peanut, christy@filbert owner-admin: craig

86

Alias di sendmail (4)


Sendmail non usa il file aliases direttamente. Il file aliases deve essere prima processato con il comando: newaliases (oppure con sendmail -bi) che crea i file di database di tipo dbm che vengono usati da sendmail per ricercare gli alias. Se si invoca newaliases dopo aver aggiornato il file /etc/aliases occorre essere sicuri che sendmail accetti l'utilizzo di nuovi alias (opzione D che vedremo in seguito)

87

Forwarding di posta9* personale


Per effettuare il forwarding di posta di un user name si pu utilizzare il file /etc/aliases, ma necessita l'intervento del responsabile del sistema In ambito utente possibile attuare il forwarding creando sulla propria home directory il file .forward e inserendovi l'indirizzo completo di e-mail a cui reindirizzare la propria posta. .forward viene consultato da sendmail dopo aver visto /etc/aliases.

88

Il file sendmail.cf
Il file vero e proprio di configurazione di sendmail /etc/sendmail.cf sendmail.cf contiene oltre i parametri di configura-zione di sendmail, anche informazioni per effettuare l'instradamento di posta tra programmi di posta a livello utente e programmi di spedizione di posta. Il file sendmail.cf ha tre funzioni principali: definire l'ambiente di sendmail riscrivere gli indirizzi nella sintassi appropriata al sistema ricevente mappare gli indirizzi nelle istruzioni necessarie per spedire la mail

89

Come reperire un semplice file sendmail.cf


Un esempio del file sendmail.cf pu essere scaricato via anonymous ftp dal sito ftp.uu.net come file di tipo tar (mail/sendmail/sendmail.5.65.tar.Z). La directory sendmail.5.65/cf/cf contiene diversi esempi di sendmail.cf. Tre prototipi di sendmail.cf sono: tcpuucpproto.cf (per sistemi che hanno sia collegamenti di rete diretti di tipo TCP/IP che UUCP) tcpproto (per sistemi con soli collegamenti diretti di tipo TCP/IP) uucpproto.cf (per sistemi che hanno solo collegamenti diretti di tipo UUCP)

90

Struttura generale di sendmail.cf (1)


Le sezioni in cui diviso il file di configurazione sendmail.cf sono: Local Information
Definisce le informazioni che sono specifiche per il singolo host. Per esempio in tcpuucpproto.cf specifica l'host name su Internet, l'host name su UUCP e i collegamenti locali UUCP. Questa sezione di solito personalizzata in fase di configuraz.

General Macros
Specifica le informazioni proprie di quella rete locale. In genere contiene il nome ufficiale (con dominio) dell'host e gli host di ritrasmissione della mail. Questa sezione di solito personaliz-zata in fase di configurazione.

91

Struttura generale di sendmail.cf (2)


Classes
Definisce i gruppi di host name o domain name usati per instradamenti speciali di posta. In genere non sono richieste modifiche.

Version Number
Identifica il numero della versione di sendmail.cf. Occorre incrementare tale numero ogni qualvolta si aggiorna il file.

Special Macros
Definisce alcune macro speciali usate da sendmail. Nel file tcpuucpproto.cf la sez. contiene anche il nome che sendmail utilizza per identificare se stesso quando rimanda messaggi di errore e inoltre la sezione contiene il messaggio inviato durante un login SMTP. Questa sezione non viene modificata.

92

Struttura generale di sendmail.cf (3)


Options
Definisce le opzioni di sendmail. In genere non viene modificata.

Message Precedence
Definisce i valori di precedenza dei vari messaggi usati da sendmail. Questa sezione non va modificata.

Trusted user
Definisce gli utenti fidati che possono riscrivere l'indirizzo del mittente quando inviano posta. Aggiungere utenti in questa lista pu generare problemi alla sicurezza.

Format of Header
Definisce il formato delle intestazioni aggiunte alla posta.

93

Struttura generale di sendmail.cf (4)


Rewriting Rules
Definisce le regole usate per riscrivere gli indirizzi di e-mail. Queste regole contengono regole generali invocate da sendmail o altre regole di riscrittura. Tali regole possono essere modificate solo per correggere problemi o per aggiungere un nuovo servizio.

Mailers
Definisce le istruzioni usate da sendmail per invocare i programmi di spedizione della posta. Regole di riscrittura relative al singolo mailer possono comparire anche qui. In genere comunque questa sezione non viene modificata.

94

Struttura generale di sendmail.cf (5)


Rule Set Zero
Definisce un insieme speciale di regole, chiamate rule set zero, che viene applicato all'indirizzo di spedizione. Questa sezione non va modificata, pu essere modificata solo la sua parte di intestazione (section heading).

Machine-dependent Part of Rule Set Zero


Definisce quelle parti delle Rule Set Zero che sono specifiche per questa configurazione. In genere, se scegliamo tra le tre possibili configurazioni di esempio quella che fa al caso nostro, non dobbiamo cambiare mai questa sezione.

95

Struttura generale di sendmail.cf (6)


Non detto che le sezioni del vostro file sendmail.cf siano chiamate proprio cos, ma il loro contenuto dovrebbe essere cos raggruppato: Le informazioni di personalizzazione relative al singolo host stanno probabilmente all'inizio del file Tipi di comandi simili (per es: comandi options e comandi di tipo header) vengono di solito raggruppati insieme. La maggior parte del file consiste nelle rewrite rules. L'ultima parte del file probabilmente contiene le definizioni dei mailer inframmezzate con le rewrite rule relative al singolo mailer.

96

Configurazione di sendmail (1)


Le regole di sintassi dei comandi di sendmail.cf sono molto concise e possono risultare ostiche. Il primo carattere della linea identifica il comando.
Comando Define Macro Define Class Define Class Set Option Trusted Users Set Precedence Define Mailer Define Header Set Ruleset Define Rule Sintassi Dxvalue Ccword1[ word2].. Fcfile Oovalue Tuser1[ user22].. Pname=number Mname, field=value H[?mflag?]name:format Sn Rlhs rhs comment Significato Imposta la macro x al value Imposta la classe c a word1 word2... Carica la classe c da file Imposta l'opzione o al value Utenti fidati sono user1 user2... Imposta name alla preced. number Definisce il mailer name Imposta l'header format Comincia il ruleset numero n Riscrive i modelli lhs per il formato rhs

97

Comando Define Macro (1)


Il comando Define Macro (D) permette di definire una macro e di memorizzarvi un valore. Tali valori possono essere utilizzati da altri comandi di sendmail.cf. E' quindi un modo per parametrizzare completamente la configurazione, riuscendo cos a far calzare perfettamente una stessa configurazione fra molti sistemi cambiando soltanto pochi parametri (i valori delle macro) Il nome della macro pu essere un qualsiasi carattere ASCII. Le lettere minuscole sono usate per macro interne proprie di sendmail. Le macro create dall'utente hanno nomi con lettera maiuscola

98

Comando Define Macro (2)


Alcune macro interne devono obbligatoriamente comparire in sendmail.cf e queste sono:
Macro e j l n o q Valore assegnato alla macro Messaggio iniziale di SMTP nome del dominio ufficiale del sito formato della Unix from line nome usato nei messaggi di errore insieme di operatori negli indirizzi formato dell'indirizzo di default del mittente Esempio De$j Sendmail $v ready at $b Dj$w.$D DlFrom $g $d DnMAILER-DAEMON Do.:%\@!^=/ Dq$g$?x ($x)$.

Esempio: Dwalmond DDnuts.com Dj$w.$D

99

Comando Define Macro (3)


Altre macro interne non necessariamente sono impostate in sendmail.cf, ma possono essere assegnate internamente da sendmail, la lista di tutte le macro interne :
Macro a b c d e Funzione data di partenza in formato RFC 822 data corrente in formato RFC 822 hop count (contatore di salto) data in formato UNIC (ctime)

f g h i j l

messaggio iniziale SMTP indirizzo "from" del mittente indirizzo del mittente relativo al recipient host del recipient id della coda nome ufficiale del dominio per questo sito formato della UNIX from line

100

Comando Define Macro (4)


Macro n o p q Funzione nome del demone (per messaggi di errore) insieme di operatori (caratteri speciali) nell'indirizzo sendmail pid (numero identificativo del processo)

r s t u v w x z

formato dell'indirizzo di default del mittente protocollo usato nome dell'host del mittente rappresentazione numerica dell'ora attuale utente del recipient numero di versione del sendmail hostname di questo sito nome completo del mittente home directory del recipient

101

Comando Define Macro (5)


Costrutto condizionale:
Nella definizione della macro q:
Dq$g$?x ($x)$.

compare il costrutto condizionale $?x . La sintassi del costrutto : $?x text1 $ | text2 $. che pu essere cos interpretato: if ($?) x impostato; usa text1; else ($ | ) usa text2; end if ($.) La definizione della macro q ha quindi questo significato: assegna il valore di g poi se x impostato assegna uno spazio bianco, una parentesi aperta, il valore di x e una parentesi chiusa. Se per es: g contiene sergio@unipg.it e x contiene Sergio Tasso allora q conterr: sergio@unipg.it (Sergio Tasso)

102

Comandi Define Class (1)


I due comandi C e F definiscono le classi di sendmail. Una classe un array di valori. Le classi vengono usate per gestire valori multipli (per esempio pi nomi per lo stesso local host) Le classi permettono a sendmail di trattare una lista di valori al posto di un singolo valore. Caratteri speciali permettono di trattare i valori di una classe: $= significa tutti i valori di una classe $~ significa tutti i valori non in quella classe

103

Comandi Define Class (2)


Come per le macro le classi hanno nomi di un solo carattere e le classi create dall'utente hanno nomi con lettera maiuscola. I valori delle classi possono essere definiti su una linea singola o su pi linee (C) o caricati da un file (F).
Es: CVbronson ora oppure CVbronson CVora oppure Fw/etc/sendmail.cw (assegna alla classe w tutte le stringhe trovate in /etc/sendmail.cw)

104

Comandi Set Option (1)


L'insieme di comandi set option (O) assegnano valori alle opzioni di sendmail. Non sono per le opzioni date dalla command line alla partenza del sendmail.
Il valore assegnato ad una opzione pu essere una stringa, un intero, un booleano o un intervallo di tempo a seconda della singola opzione. Tutte le option definiscono valori usati direttamente da sendmail Non ci sono option create dall'utente. Di seguito viene riportata la tabella di tutte le option.

105

Comandi Set Option (2)


Option Afile sN Bc D db di dq ee em ep eq ew Fn f gn Funzione Definisce il nome del file degli alias Aspetta N minuti per @:@; poi ricostruisce il file degli alias Definisce il carattere di sostituzione del blank Ricostruisce il database degli alias Spedisce in modalit background Spedisce in modalit interattiva Spedisce durante il prossimo utilizzo della coda Invia i messaggi di errore e restituisce sempre codice di ritorno 0 Invia indietro i messaggi di errore Stampa i messaggi di errore Restituisce solo il codice di ritorno, non il messaggio di errore Scrive indietro i messaggi di errore Imposta i permessi per i file temporanei a n Trattiene le linee "From" di tipo UNIX Imposta l'id del gruppo di default a n

106

Comandi Set Option (3)


Option Hfile I i Ln Mxval m Nnet o Qdir qn rt Sfile s Tt un Funzione Definisce il nome del file di help SMTP Usa il server dei nomi BIND per risolvere tutti i nomi degli host Ignora i punti nei messaggi in arrivo Imposta il livello di logging a n Imposta la macro x a val Invia anche a me Definisce il nome della home network Accetta header vecchio formato Definisce il nome della directory delle code Definisce il fattore n usato per decidere quando accodare i job Imposta l'intervallo t per il timeout di lettura Definisce il nome del file di log statistici Crea sempre il file di coda prima di tentare la spedizione Imposta il timeout delle code a t Imposta la userid di default per i mailers a n

107

Comandi Set Option (4)


Option v Wpass Xl xl Y yn Zn zn Funzione Gira in modalit verbose Definisce la password usata per il debugging remoto Rifiuta collegamenti SMTP se la media del carico pi grande di n Accoda i messaggi se la media del carico pi grande di l Spedisce ogni job in coda in un processo separato Abbassa la priorit dei job di n per ogni recipient Decrementa la priorit dei job di n ogni volta che gira Fattore usato con precedence per determinare la priorit dei messaggi

Esempio di option: # Determina il file di alias OA/etc/aliases # Imposta il permesso per i file temporanei OF0600 # Definisce l'intervallo di timeout OT3d

108

Definizione di utenti fidati


Il comando T definisce una lista di utenze fidate che possono cambiare l'indirizzo del mittente usando il flag -f. Generalmente gli utenti fidati sono solo root, uucp e daemon. Se viene definito un utente fidato questi pu mascherare il proprio nome, ci pu provocare problemi all'organizzazione di appartenenza.
Esempio di comandi T: Troot Tdaemon Tuucp

109

Definizione della precedenza di mail


Precedence (P) uno dei fattori usati da sendmail per assegnare una certa priorit ai messaggi presenti in coda. Pi alto il numero di precedence, pi alta la precedenza del messaggio. Il valore di default di precedence 0. Valori negativi di precedence indicano una bassa priorit di spedizione. I valori comunemente usati per precedence sono:
Pfirst-class=0 Pspecial-delivery=100 Pbulk=-60 Pjunk=-100

110

Definizione degli header di mail (1)


Il comando H definisce il formato delle linee di intestazione che sendmail inserisce dentro i messaggi. Il formato del comando : H[?mflag?]name:format Il format una combinazione di lettere e macro che vengono incluse nella riga di intestazione. Le macro vengono risolte prima di inserire l'header nel messaggio. Gli mflag controllano se l'header all'interno di un mail bound per lo specifico mailer oppure no. Se non viene specificato alcun flag l'header usato per tutti i mailer. Se viene specificato un flag, l'header verr usato per tutti quei mailer che hanno tale flag nella loro definizione di mailer.

111

Definizione degli header di mail (2)


La definizione di un header pu essere cos fatta:
H?P?Return-Path: <$g> HReceived: $?sfrom $s $.by $j ($v/$Z) H?D?Resent-Date: $a H?D?Date: $a H?F?Resent-From: $q H?F?From: $q H?x?Full-Name: $x HSubject: H?M?Resent-Message-Id: <$t.$i@$j> H?M?Message-Id: <$t.$i@$j>

112

Definizione dei mailer (1)


I comandi M definiscono i programmi di spedizione della posta usati da sendmail. La sintassi dei comandi M :

Mnome, {campo=valore}
dove: nome un nome arbitrario usato internamente da sendmail per identificare quel mailer. La scelta dei nomi arbitraria eccetto che per il mailer che spedisce posta localmente agli utenti dello stesso host, in tal caso deve essere chiamato local, mentre il mailer che spedisce posta ai programmi deve essere chiamato prog. la lista campo=valore definisce le caratteristiche del mailer. Di seguito viene riportata una tabella di possibili campi e valori.

113

Definizione dei mailer (2)


Campo Significato P Path F Flags S Sender R Recipient A Argv E Eol M Maxsize M=100000 Spiegazione Esempio Path del mailer P=/bin/mail Flag di sendmail per questo mailer F=lsDFMe Ruleset per gli indirizzi dei sender S=10 Ruleset per gli indirizzi dei recipient R=20 Il vettore degli argomenti del mailer A=sh -c $u Stringa End-of-line per il mailer E=\r\n lunghezza massima del messaggio

Il campo P contiene o il path del programma di spedizione o la stringa di lettere [IPC] che sta per interprocess communication. Le definizioni di mailer che hanno P=[IPC] usano sendmail per spedire posta via SMTP. Il campo Flag (F) contiene i flag di sendmail usati per lo specifico mailer. Sono quei flag che vengono referenziati anche della Definizione del header. Segue tabella di tutti i flag di mailer.

114

Definizione dei mailer (3)


Nome flag C D E e F f h I L l M m n P Funzione Aggiunge @domain all'indirizzo che non ha una @ Il mailer ha bisogno di una linea del header Date: Aggiunge > alle linee del messaggio che cominciano con From: Questo un mailer costoso. Vedi opzione c di sendmail Il mailer ha bisogno di una linea del header From: Il mailer accetta un flag -f da utenti fidati Conserva il maiuscolo nei nomi di host Il mailer comunicher in SMTP con altri sendmail Limita la lunghezza delle linee come specificato in RFC821 Questo un mailer locale Il mailer ha bisogno di una linea del header Message-Id: Il mailer pu inviare a pi utenti in un'unica transazione Non inserisce una linea nel messaggio From: UNIX-style Il mailer ha bisogno di una linea Return-Path:

115

Definizione dei mailer (4)


Nome flag R r S s U u X x Funzione Usa il return-path MAIL FROM: piuttosto che il return address Il mailer accetta il flag -r da utenti fidati Non resettare la userid prima di chiamare il mailer Togliere le virgolette dall'indirizzo prima di chiamare il mailer Il mailer ha bisogno delle linee From: Unix-style Conserva le maiuscole nei nomi degli utenti Premetti un punto a linee che cominciano con un punto Il mailer ha bisogno di una linea del header Full-Name:

116

Definizione dei mailer (5)


I campi Sender (S) e Recipient (R) identificano gli insiemi di regole usate per riscrivere gli indirizzi del sender e del recipient per questo mailer. Ogni ruleset identificato da un numero. Il campo Argv (A) definisce il vettore degli argomenti passato al mailer. Questo contiene, tra l'altro, le espansioni delle macro che forniscono il nome dell'utente destinatario ($u), l'hostname del destinatario ($h) e l'indirizzo from del mittente ($f). Le macro sono risolte prima di passare il vettore argomenti al mailer. Il campo End-of-line (E) definisce i caratteri usati per marcare la fine di una riga. Per default si usa newline. Il campo Maxsize (M) definisce, in byte, il pi grande messaggio che questo mailer pu gestire.

117

Definizione dei mailer (6)


Definizioni frequenti di mailer sono: Mlocal, P=/bin/mail, F=rlsDFMmn, S=10, R=20, A=mail -d $u Mprog, P=/bin/sh, F=lsDFMe, S=10, R=20, A=sh -c $u Mtcpld, P=[ICP], F=mDFMueXLC, S=17, R=27, A=IPC $h, E=\r\n Mtcp, P=[ICP], F=mDFMueXLC, S=14, R=24, A=IPC $h, E=\r\n Muucp, P=/usr/bin/uux, F=DFMhuU, S=13, R=23, M=100000, A=uux - -r -z -a$f -gC $h!rmail ($u) che in sequenza sono:
definizione di spedizione di posta locale, sempre chiamata local. Obbligatoria. definizione di spedizione a programmi, sempre chiamata prog. Obbligatoria. definizione per posta TCP/IP al dominio local, qui chiamata tcpld. definizione per posta TCP/IP a Internet, qui chiamata tcp. definizione per posta uucp, in genere chiamata uucp

118

Riscrivere gli indirizzi di mail (1)


Le ruleset sono gruppi di regole di riscrittura individuale usate per analizzare gli indirizzi e-mail dei programmi utente di posta e per riscrivere tali indirizzi nella forma richiesta dai programmi di spedizione. Le regole di riscrittura sono definite usando il comando : Rpattern transformation comment

(i campi sono separati da tabulatori) Il campo comment viene ignorato dal sistema. Le regole di riscrittura paragonano l'indirizzo in input a un modello (pattern), se indirizzo e modello combaciano l'indirizzo viene riscritto in un nuovo formato usando le regole definite in transformation.

119

Riscrivere gli indirizzi di mail (2)


Pattern
Il modello definito usando macro, classi, testi che forniscono i valori che sono da confrontare con l'input, e usando metasimboli per abbinare i modelli. Simbolo Significato $* confronta zero o pi pezzi $+ confronta uno o pi pezzi $confronta esattamente un pezzo $=x confronta ogni pezzo nella classe x $~x confronta ogni pezzo non nella classe x $x confronta tutti i pezzi nella macro x $%x confronta ogni pezzo nella NIS map menzionato nella macro x * $!x confronta ogni pezzo non nella NIS map menzionato nella macro x * $%y confronta ogni pezzo nella map hosts.byname di NIS * * simboli specifici per sistemi di tipo Sun OS.

120

Riscrivere gli indirizzi di mail (3)


Esempio:
Input: becky@peanut.nut.com i pezzi dell'indirizzo sono sette: becky, @, peanut, ., nut, . e com. Questo indirizzo potrebbe combaciare con il modello $-@$+ Infatti: ha esattamente un pezzo prima di @ (simbolo $-) ha un @ (modello testuale @) ha uno o pi pezzi dopo la @ (simbolo $+) In fase di analisi le stringhe dell'indirizzo che vengono associate a metasimboli vengono assegnate a pezzi indefiniti (indefinite tokens), che vengono identificati dal simbolo $ seguito da un numero progressivo. Nel nostro caso quando becky@peanut.nut.com viene confrontato con $-@$+ produce 2 pezzi indefiniti: $1 che contiene becky e S2 che contiene peanut, ., nut, . e com

121

Riscrivere gli indirizzi di mail (4)


Trasformazione dell'indirizzo Il campo transformation, definisce il formato usato per riscrivere l'indirizzo. Il campo transformation definito usando le stesse cose utilizzate per i pattern: lettere, macro e metasimboli speciali. Le lettere vengono riscritte esattamente come mostrato. Le macro vengono risolte e scritte. I metasimboli invece necessitano dell'implementazione di funzioni speciali.
Simbolo $n $[name$] $>n $@ $: Significato Sostituisce il pezzo indefinito n Sostituisce il canonical name Chiama la ruleset n Termina la ruleset Termina la regola di riscrittura

122

Riscrivere gli indirizzi di mail (5)


Esempio: address tokens pattern hunt < @ nbsenh . bitnet > $+ < @ $+ nbsenh % $2 < @ $B > . bitnet >

indefinite tokens hunt transformation $1

rewritten address hunt %

nbsenh < @ cunyvm.cuny.edu >

123

Riscrivere gli indirizzi di mail (6)


Il simbolo $[name$] converte il nickname di un host o il suo IP address al suo canonical name passando il valore name al name server per la risoluzione. Esempio: usando i server di nuts.com, $[mil-gw$] restituisce almond.nuts.com e $[[128.66.12.2]$] restituisce peanut.nuts.com. Il simbolo $>n chiama i ruleset n e passa l'indirizzo definito dal ritorno della trasformazione al ruleset n per essere processato. Esempio: $>9$1%2 la trasformazione chiama il ruleset 9 e passa il contenuto di $1, il carattere % e il contenuto di $2 al ruleset 9 per essere processati.

124

Riscrivere gli indirizzi di mail (7)


Esiste una speciale regola di riscrittura usata solo nella ruleset 0. Ruleset 0 definisce la tripla (mailer, host, user) che specifica il programma di spedizione della posta, l'host destinatario e l'utente destinatario. La speciale regola : $#mailer$@host$:user. Una variante di quest'ultima regola viene usata per inviare i messaggi di errore all'utente: $#error$:message.

125

Riscrivere gli indirizzi di mail (8)


Il commando Set Ruleset (Sn)

Il comando Sn indica l'inizio di un ruleset identificato da un numero (n). I ruleset possono essere visti come subroutine o funzioni designate a processare gli indirizzi di e-mail. I ruleset possono essere chiamati da definizione di mailer, da regole di riscrittura o direttamente da sendmail.

126

Riscrivere gli indirizzi di mail (9)


Cinque ruleset vengono chiamate direttamente da sendmail e sono:
Ruleset 3 il pi grande e complicato ruleset ed il primo ad essere applicato all'indirizzo. Il ruleset 3 converte un indirizzo nella forma canonica: local-part@host.domain. Ruleset 0 applicato, dopo ruleset 3, agli indirizzi destinazione attualmente usati per la spedizione della posta. Risolve la tripla (mailer, host, user). Ruleset 1 applicato a tutti gli indirizzi mittente nel messaggio Ruleset 2 applicato a tutti gli indirizzi destinatari del messaggio Ruleset 4 applicato a tutti gli indirizzi nel messaggio ed usato per tradurre formati di indirizzi interni in formati di indirizzi esterni.

127

Sequenza di ruleset
delivery address

sender address

all addresses

D
recipient address

4 2

all addresses

D S R

Sender domain information added Mailer-specific sender rewriting Mailer-specific recipient rewriting

128

Diagnostica del TCP/IP


I compiti di un amministratore di rete si dividono in due principali categorie: configurazioni diagnostica I problemi di rete sono spesso unici e difficili da individuare. Esistono comunque alcuni comandi di sistema che possono aiutare nella scoperta delle anomalie e nella loro soluzione.

129

Approccio al problema (1)


Un giusto approccio ai problemi di rete pu essere quello illustrato dai seguenti passi:
Raccogliere informazioni dettagliate su cosa succede di anomalo Scoprire quale applicazione fallisce Stabilire il nome e l'indirizzo IP dell'host remoto Stabilire il nome e l'indirizzo IP dell'host utente Quale errore viene riportato Se possibile cercare di far girare l'applicazione all'utente mentre sta parlando con noi Se possibile cercare di ripetere il problema nel nostro sistema

130

Approccio al problema (3)


Testare il sistema dell'utente e/o gli altri sistemi per scoprire se:
Il problema accade in altre applicazioni sull'host dell'utente o solo in quella applicazione. Nel secondo caso l'applicazione pu essere mal configurata o disabilitata (anche per soli motivi di sicurezza) sull'host Il problema si verifica solo su quel host remoto, su tutti gli host remoti, o solo su certi gruppi di host remoti. Se solo un host coinvolto il problema pu essere semplicemente con quel host. Se invece tutti gli host remoti sono implicati, il problema probabilmente con il sistema dell'utente (specialmente se gli altri host locali non hanno riscontrato nulla). Se solo certi host o certe sottoreti o reti esterne hanno l'anomalia allora probabilmente un problema di routing. Il problema accade su altri sistemi locali. Controllare gli altri sistemi nella stessa sottorete. Se il problema si verifica solo nel host dell'utente occorre concentrarsi nel test di quel sistema. Se il problema si allarga a tutti i sistemi di una sottorete, bisogna testare il router per quella sottorete.

131

Cenni di diagnostica (1)


Non esiste una metodologia di diagnostica , ma solo alcune buone idee da tenere a mente: Approccio ai problemi in maniera metodica. Farsi guidare dalle informazioni scoperte in ogni test nel proseguire in test successivi. Non cambiare scenario, conserva il pi possibile quello originale. Conservare i risultati dei test svolti e la loro sequenza cronologica. Mantenere una mente aperta. Non dare per scontata la causa del problema. Non detto che un problema a livello applicazioni non abbia cause ad un livello pi basso. Presta attenzione ai messaggi di errore. Spesso i messaggi di errore sono vaghi, ma a volte contengono indizi importanti per la risoluzione del problema. Duplica il problema riscontrato da un utente. Se necessario cerca di ottenere dall'utente i file necessari per tale duplicazione.

132

Cenni di diagnostica (2)


Molti problemi sono causati da errori umani. Si pu evitarne alcuni fornendo informazioni e/o corsi sulla configurazione e sull'utilizzo della rete. Mantieni informati i tuoi utenti. Non azzardare ipotesi sulle cause del problema mentre parli con l'utente. Parlane semmai con colleghi. Gli utenti vogliono veder risolto il problema e a loro non interessano le discussioni sulle cause che l'hanno generato. Resta fedele a pochi semplici tools di diagnostica. Testa il problema ai confini della rete prima di localizzare il proprietario del sistema remoto e di coordinare con lui un test congiunto. Non tralasciare le cose ovvie. Lo stacco di un cavo Ethernet uno dei pi diffusi problemi. Controlla cavi, connettori e switch.

133

Tool di diagnostica (1)


Alcuni tools di diagnostica riportati di seguito sono gi stati incontrati in altre parti del corso:
ifconfig
fornisce informazioni sulla configurazione di base dell'interfaccia. Viene usato per scoprire indirizzi IP sbagliati, subnet mask non corrette e indirizzi broadcast impropri.

arp
fornisce informazioni sulla conversione degli indirizzi Ethernet/IP. Pu essere usato per scoprire sistemi nella rete locale che sono stati configurati con indirizzi IP sbagliati.

netstat
fornisce una variet di informazioni. Viene comunemente usato per riportare statistiche dettagliate su ogni interfaccia di rete, su ogni sockets di rete e sulla routing table della rete.

134

Tool di diagnostica (2)


ping
indica se un host remoto pu essere raggiunto. Pu anche essere utilizzato per riportare statistiche sui pacchetti persi e sul tempo di spedizione.

nslookup
fornisce informazioni sul servizio dei nomi DNS.

dig
fornisce informazioni sul servizio dei nomi ( simile a nslookup); dig disponibile via anonymous ftp su venera.isi.edu nel file pub/dig.2.0.tar.Z.

ripquery
fornisce informazioni sul contenuto dei pacchetti di aggiornamento RIP inviati o ricevuti dal nostro sistema. E' parte integrante del pacchetto software gated, ma non richiede necessariamente di far girare gated. Lavora con tutti i sistemi che fanno girare RIP.

135

Tool di diagnostica (3)


traceroute
dice quale instradamento prendono i pacchetti in uscita dal nostro sistema verso un sistema remoto. traceroute disponibile via via anonymous ftp su ftp.ee.lbl.gov nel file traceroute.tar.Z.

etherfind
analizza i singoli pacchetti scambiati tra gli host di una rete. etherfind un analizzatore di protocollo TCP/IP che pu esaminare il contenuto di pacchetti incluse le loro intestazioni. E' la versione SunOS di un programma chiamato tcpdump. tcpdump disponibile via anonymous ftp su ftp.ee.lbl.gov.

136

Testare il collegamento di base (1)


In genere si usa il comando ping.
se il nostro comando ping ha successo e anche il ping dell'utente a noi ha successo, allora occorre concentrare l'attenzione sulle specifiche applicazioni dell'utente. se il nostro ping ha successo, ma il ping dell'utente a noi fallisce, allora occorre testare la configurazione del sistema dell'utente e confrontare le diversit sui path dell'utente all'host remoto e viceversa il nostro path al suo host remoto. se il nostro ping fallisce, e/o il ping dell'utente fallisce occorre prestare attenzione al messaggio di errore: unknown host
a - il

nome dell'host remoto non pu essere convertito dal servizio dei nomi in un indirizzo IP. Il server dei nomi pu essere gi, il nome dell'host pu essere sbagliato, qualcosa potrebbe essere in errore nella rete tra noi e il server remoto.

137

Testare il collegamento di base (2)


network unreachable a - il sistema locale non ha una route al sistema remoto. Se stato fatto un ping con un indirizzo IP, ritentarlo subito col nome dell'host, si evitano errori di scrittura. Controllare con il comando netstat il funzionamento e le impostazioni del protocollo di routing. Se si usa RIP si pu ricorrere a ripquery per controllare il contenuto degli aggiornamenti RIP ricevuti. Se si usa una route di default statica, reinstallarla. Se tutto sembra a posto sull'host controllare il suo gateway di default per eventuali problemi di routing. no answer a - il sistema remoto non risponde. alcune implementazioni di ping stampano il messaggio "100% packet loss", telnet stampa invece "Connection timed out" oppure sendmail restituisce l'errore "cannot connect". L'errore sempre lo stesso. Le cause potrebbero essere: il sistema remoto gi, il sistema locale o quello remoto sono mal configurati, un gateway del circuito fra i due gi. Controllare sia la configurazione locale con netstat e ifconfig sia la route con traceroute.

138

Controllo del routing (1)


Un messaggio tipo "network unreachable" indica chiaramente un problema di routing.
Se il problema nella routing table dell'host locale facile trovarlo e risolverlo. Usa prima netstat -nr e grep per vedere se stata installata una route valida per la destinazione. Es:
netstat -nr | grep '192.112.36.0' netstat -nr | grep "default" oppure

Se si ha un routing dinamico bisogna assicurarsi che il demone gated stia girando: ps `cat /etc/gated.pid` se non gira occorre farlo ripartire specificando tracing, in questo modo si pu controllare eventuali problemi che fanno terminare in modo anomalo il demone.

139

Controllo del routing (2)


Se tutto a posto e si usa RIP occorre controllare gli aggiornamenti ricevuti dai fornitori RIP. Il controllo pu essere effettuato usando il comando ripquery. Es: ripquery -n almond pecan
44 bytes from almond.nuts.com(128.66.12.1): 0.0.0.0, metric 3 26.0.0.0, metric 0 264 bytes from pecan.nuts.com(128.66.12.3) 128.66.5.0, metric 2 128.66.3.0, metric 2 ... 128.66.13.0, metric 2

che mostrano le route consigliate da almond e da pecan l'opzione -n permette di ottenere il display in forma numerica, altrimenti da i nomi

140

Controllo del routing (3)


Se le route riportate non sono quelle aspettate oppure non viene riportata nessuna route allora occorre controllare la configurazione del fornitore di RIP. Se tutto apparentemente a posto i problemi possono essere sorti ad una certa distanza dall'host locale. Per rilevare questo tipo di anomalie occorre usare il programma traceroute che permette di tenere traccia di quali route un certo pacchetto sta prendendo per arrivare a destinazione.

141

Controllo del routing (4)


Es1: traceroute nic.ddn.mil
traceroute to nic.ddn.mil (192.112.36.5), 30 hops max, 40 byte packets 1 * pgw (129.6.80.254) 4 ms 3ms 2 129.6.1.245 (129.6.1.245) 4 ms 4 ms 3 ms 3 129.6.2.252 (129.6.2.252) 5 ms 5 ms 4 ms 4 128.167.122.1 (128.167.122.1) 50 ms 6 ms 6 ms 5 * 192.80.214.247 (192.80.214.247) 96 ms 18 ms 6 129.140.9.10 (129.140.9.10) 18 ms 25 ms 15 ms 7 nsn.sura.net (192.80.214.253) 21 ms 18 ms 23 ms 8 GSI.NSN.NASA.GOV (128.161.252.2) 22 ms 34 ms 23 ms 9 NIC.DDN.MIL (192.112.36.5) 37 ms 29 ms 34 ms in questo caso la trace andata a buon fine, vengono segnalati con un * quei gateway da cui non si avuta risposta in un pacchetto se ricevuta una risposta, traceroute riporta il nome e l'indirizzo del gateway che ha risposto e il tempo di ricezione del pacchetto in millisecondi.

142

Controllo del routing (5)


Es2: traceroute nic.ddn.mil
traceroute to nic.ddn.mil (192.112.36.5), 30 hops max, 40 byte packets 1 * pgw (129.6.80.254) 3 ms 3ms 2 129.6.1.245 (129.6.1.245) 4 ms 4 ms 4 ms 3 129.6.2.252 (129.6.2.252) 5 ms 5 ms 4 ms 4 128.167.122.1 (128.167.122.1) 6 ms 6 ms 10 ms 5 nsn.sura.net (192.80.214.253) 9 ms 6 ms 8 ms 6 t3-1.cnss58.t3.nsf.net (140.222.58.2) 10 ms 15 ms 13 ms 7 t3-0.cnss145.t3.nsf.net (140.222.145.1) 13 ms 12 ms 12 ms 8 GSI.NSN.NASA.GOV (128.161.252.2) 22 ms 34 ms 23 ms 9* * * 10 * * * .... 29 * * * 30 * * *

in questo caso la trace si invece bloccata al gateway GSI.NSN.NASA.GOV, occorre quindi contattare il suo amministratore e l'amministratore della nostra destinazione (nic.ddn.mil).

143

Controllo del protocollo


Per una analisi approfondita dei programmi etherfind e tcpdump si rimanda al libro di testo TCP/IP Network Administration

Potrebbero piacerti anche