PDA

Visualizza la versione completa : Ubuntu 8.04 - Bind9 - VirtualHost


99eros9
14-11-2008, 12:43
Premetto di essere un programmatore .Net, quindi lo scopo di questa richiesta è fatto per pura conoscenza personale.
Ho una rete casalinga formata, essenzialmente, da 2 macchine nelle quali girano, rispettivamente, win2003 server e ubuntu 8.04 server.

Nelle mie prove, stò cercando di configurare un sistema di test, in cui 2 siti web che risiedono nella macchina server ubuntu, possano essere raggiunti in questo modo:
http://sito1.test
http://sito2.test

Mi sembra di aver capito, che per fare questa operazione occorre creare dei VirtualHost.
ho seguito vari HowTo e, in questo, mi sembra di aver capito abbastanza su come funziona la struttura di apache e i files da configurare

Il problema nasce dal fatto, che tutte le guide che ho letto, omettono la parte relativa alla configurazione del DNS che, in ubuntu 8.04, si regge sulla struttura denominata BIND9.

Anche quì ho seguito moltissime guide, howto, ma non riesco a capire se questa è la strada giusta da intraprendere perchè oltre a mancare di basi fondamentali, che nella confusione non capisco quali essere, gli esempi che mi studio, non sembrano funzionare nel mio sistema.

Esiste qualche volenteroso che conosca una guida completa o, quanto meno, sia capace di introdurmi in uno schema da seguire per configurare un sistema come quello che vorrei testare?

Questa è una delle risorse che ho seguito, ma francamente non sò se è la risorsa giusta:
https://help.ubuntu.com/community/BIND9ServerHowto

grazie

P.s.
ho anche letto questo thread: http://forum.html.it/forum/showthread.php?s=&threadid=1174169&highlight=bind9
..ma nulla.

sacarde
14-11-2008, 15:17
... con 2 pc..... a cosa ti serve Bind ?

99eros9
14-11-2008, 15:43
Francamente stò cercando di imparare qualcosa che esula dalle mie competenze... a titolo personale.
Detto questo, credo che il numero di pc non sia importante per il semplice fatto che il mio scopo sarebbe questo:
attraverso un unico indirizzo ip assegnato alla macchina server, vorrei che da questa fossero raggiungibili 2 diverse applicazioni web (che risiedono in essa), ma non con un indirizzo simile a questo:

http://nomeserver/applicazione1
http://nomeserver/applicazione2

ma direttamente:

http://applicazione1
http://applicazione2

Inizialmente ho provato a configurare apache2 creando i VirtualHost ed editanto il file hosts, ma non ha funzionato.
In alcune guide, ho letto che bisognerebbe configurare la macchina server in modo che possa instradare le richieste alla giusta applicazione web configurando il DNS: è un errore?

zoseppe
14-11-2008, 22:35
premettendo che configurare BIND non è proprio banale io farei così: nella macchina ubuntu, dove c'è apache, installerei anche bind. Ora bisogna configurarlo...supponiamo che la tua macchina ubuntu si chiami "ns.tuodominio.test" e che abbia come indirizzo IP 192.168.0.100 e la macchina WIN2003 si chiami win.tuodominio.test con IP 192.168.0.200: devi aggiungere in /etc/bind/named.conf qualcosa del tipo:

zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/0.168.192.rev";
};

zone "tuodominio.ltd" {
type master;
file "/etc/bind/tuodominio.test.host";
};

il primo per la risoluzione inversa e il secondo per il dominio "tuodominio.test"

i files /etc/bind/0.168.192.rev e /etc/bind/tuodominio.test.host dovranno contenere, rispettivamente, qualcosa del tipo:

/etc/bind/0.168.192.rev:
$ttl 86400
@ IN SOA tuodominio.test. hostmaster.tuodominio.test. (
2008111401 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400 ) ; Defaul TTL

@ IN NS ns.tuodominio.test.
100 IN PTR ns
200 IN PTR win

/etc/bind/tuodominio.test.host:
$ttl 86400
@ IN SOA tuodominio.test. hostmaster.tuodominio.test. (
2008111401 ; Serial
28800 ; Refresh
7200 ; Retry
604800 ; Expire
86400) ; Default TTL

@ IN NS ns

ns IN A 192.168.0.100
win IN A 192.168.0.200
www.applicazione1.tuodominio.test. CNAME 192.168.0.100
www.applicazione2.tuodominio.test. CNAME 192.168.0.100

ora configura sulla macchina ubuntu vai su /etc/resolv.conf, cancella tutto e scrivi

nameserver 127.0.0.1

e riavvia

mentre sulla macchina WIN configura come DNS primario 192.168.0.100 e da li fai le prove...
spero di non aver fatto errori di battitura se qualcosa non dovesse funzionare chiedi pure! Bada che bene i punti alla fine dei nomi a dominio non sono messi a caso servono per evitare che bind "appenda" alla fine del record il nome del dominio...

Fammi sapere

sacarde
14-11-2008, 22:37
no no... non avevo capito



ma i server sulla macchina locale funzionano?

zoseppe
14-11-2008, 22:40
dimenticavo la configurazione di Apache, è molto minimale... :D

<VirtualHost *>
DocumentRoot "/tua/directory/applicazione1"
ServerName www.applicazione1.tuodominio.test
</VirtualHost>


<VirtualHost *>
DocumentRoot "/tua/directory/applicazione2"
ServerName www.applicazione2.tuodominio.test
</VirtualHost>

buon lavoro!

99eros9
15-11-2008, 16:12
A me sembra che nel modo specificato da te, si venga a creare un ulteriore livello.
In realtà posso dire di aver risolto, conscio di averlo fatto con una accozzaglia di tentativi.
Resta un interrogativo non tanto sul Bind ma su apache.
In realtà non ho ben capito il funzionamento del file 000-default, mi spiego:
Se non sbaglio, i Virtual Host possono essere suddivisi in file di inclusione.
I file di inclusione sono contenuti nella cartella sites-available mentre nella cartella sites-enabled ci sono i collegamenti simbolici a ciascuno di questi file.
Pensando che aggiornare il file default in sites-available significasse anche aggiornare automaticamente il file 000-default in sites-enabled ho proseguito incappando in un mal funzionamento generale.

Detto questo, ho anche notato che se vengono creati tanti file di inclusione per quanti sono i virtual host, al riavvio apache2, sforna degli "avvisi" sul NameVirtualHost o l'overlaps se questo non è specificato.. insomma, a me non sembra che questo sistema sia incoraggiante.
Quindi ho messo tutto nel file default, ho dovuto aggiornare "a manina" il file 000-default (copia incolla del contenuto del file default), ho dovuto cancellare l'istruzione NameVirtualHost * nel file ports.conf, perchè altrimenti si andava a ripetere nel gioco delle inclusioni e alla fine mi ha funzionato tutto.

Praticamente, ecco che tipo di architettura mi premeva testare:
attraverso un servizio free di gestione dei DNS, disponibili su internet, ho scelto due indirizzi di test:
subdomain1.domain.com
subdomain2.domain.com
dove domain.com è un'opzione forzata, resa disponibile dal fornitore del servizio di gestione del DNS

All'interno del file /etc/bind/named.conf.local, ho aggiunto le seguenti istruzioni:
zone "subdomain1.domain.com" {
type master;
file "/etc/bind/db.subdomain1.domain.com";
};
zone "subdomain2.domain.com" {
type master;
file "/etc/bind/db.subdomain2.domain.com";
};

All'interno del file (ex novo) /etc/bind/db.subdomain1.domain.com ho aggiunto queste istruzioni
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA subdomain1.domain.com. hostmaster.subdomain1.domain.com. (
13 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Negative Cache TTL
;
@ IN NS subdomain1.domain.com.
@ IN A 192.168.1.101


All'interno del file (ex novo) /etc/bind/db.subdomain2.domain.com ho aggiunto queste istruzioni

;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA subdomain2.domain.com. hostmaster.subdomain2.domain.com. (
13 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Negative Cache TTL
;
@ IN NS subdomain2.domain.com.
@ IN A 192.168.1.101

dove 192.168.1.101 è l'indirizzo ip della macchina server dove girano le applicazioni web

All'interno del file /etc/resolv.conf ho inserito la riga:

nameserver 192.168.1.101

All'interno del file /etc/hosts ho inserito le due righe:

192.168.1.101 sito1.test
192.168.1.101 sito2.test

Infine ho eseguito i comandi:

sudo /etc/init.d/bind9 restart
sudo /etc/init.d/networking restart

Fatto ciò, sono passato ad apache e sia all'interno del file default (in sites-available) che all'interno del file 000-default (in sites-enabled), ho inserito questo codice:

NameVirtualHost 192.168.1.101:80

<VirtualHost subdomain1.domain.com:80>
ServerName subdomain1.domain.com
ServerAdmin indirizzo@email.it
DocumentRoot /var/www/sito1.test
<Directory /var/www/sito1.test>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>

<VirtualHost 192.168.1.101:80>
DocumentRoot /var/www
ServerName server1
ServerAdmin indirizzo@email.it
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>



<VirtualHost subdomain2.domain.com:80>
DocumentRoot /var/www/sito2.test
ServerName subdomain2.domain.com
ServerAdmin indirizzo@email.it
DocumentRoot /var/www/sito2.test
<Directory /var/www/sito2.test>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>


Fatto questo, ho riavviato apache, ho impostato i DNS sulle altre macchine, impostato il ruter ed ora le applicazioni sono raggiungibili sia dall'interno della rete che dall'esterno attraverso gli indirizzi:

http://subdomain1.domain.com
http://subdomain2.domain.com

Sono convinto che si possa fare molto meglio, questo esempio manca del reverse che ora testerò... ma se qualcuno sà come fare meglio tutta questa struttura, spero di poter avere notizie :)

Loading