dnsmasq
Breve introduzione al protocollo
DHCP e DNS:
Il protocollo DHCP (Dynamic Host Configuration Protocol, RFC
1533, 1534, 1541 e 1542) permette di negoziare dinamicamente i parametri di
rete da assegnare alle macchine di una rete.
I parametri di rete che un DHCP server è in grado di assegnare possono essere, in genere, indirizzo IP, subnetmask indirizzo del gateway, dns
server, indirizzo di broadcast ecc...
I client che faranno richiesta di tali parametri monteranno un DHCP
client che effettuerà una richiesta UDP in broadcast (255.255.255.255)
alla quale risponderà il DHCP server posto nelle immediate
vicinanze.
L'indirizzo IP assegnato ai client sarà uno di quelli compresi
nel valore di scope (un
range di indirizzi) specificato sul DHCP server.
L'indirizzo assegnato
sarà valido per tutto il tempo che è stato specificato
precedentemente nel valore di lease del DHCP server, passato il quale l'indirizzo decadrà e sarà
necessario un rinnovo.
Il protocollo DNS (Domain Name System) garantisce la risoluzione
degli hostnames (esempio: google.it) nei corrispettivi indirizzi
IP (es: 216.239.57.104).
Entrambi i protocolli tornano estremamente utili in qualunque ambiente LAN.
Obbiettivo:
Configurare un DHCP server affinchè le interfacce di rete
dei client vengano configurate automaticamente.
Configurare un DNS caching server affinchè vengano risolti
gli hostname in indirizzi IP.
Come soluzione si è optato per
dnsmasq, unico pacchetto che permette di configurare in maniera
estremamente semplice e sbrigativa entrambi i demoni (al contrario dei più complessi dhcpd e bind), ideale per
reti LAN di piccole e medie dimensioni.
Configurare le interfacce di rete:
Avendo due interfacce di rete, una LAN e una WAN, assegnare un indirizzamento
statico a quella LAN e salvarne la configurazione:
- root@server:/media#
ifconfig eth1 10.0.0.1 netmask 255.0.0.0 up
- root@server:/media#
echo "iface eth1 inet static" >> /etc/network/interfaces
- root@server:/media#
echo "address 10.0.0.1" >> /etc/network/interfaces
- root@server:/media#
echo "netmask 255.0.0.0" >> /etc/network/interfaces
- root@server:/media#
echo "auto eth1" >> /etc/network/interfaces
Installare dnsmasq:
- root@server:/media#
apt-get install dnsmasq
Reading package lists... Done
Building dependency tree... Done
[...]
Unpacking dnsmasq (from .../dnsmasq_2.22-2_i386.deb) ...
Setting up dnsmasq (2.22-2) ...
Starting DNS forwarder and DHCP server: dnsmasq.
root@server:/media#
Configurarlo:
Una configurazione basilare si può ottenere con poche direttive.
In questo caso ho elencato quelle più classiche che meglio
si adattavano alle mie necessità specificando semplicemente
un range di indirizzi riservato alla LAN. Dnsmasq rende comunque
disponibili diverse funzionalità sia per il demone DNS che
per quello DHCP (si consulti man dnsmasq a riguardo).
- root@server:/media#
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.old
- root@server:/media#
vi /etc/dnsmasq.conf
### Configurazione essenziale #
Never forward plain names (with a dot or domain part) # domain-needed # Never
forward addresses in the non-routed address spaces.
bogus-priv
domain=server.local
interface=eth1
dhcp-range=10.0.0.5,10.0.0.20,240h ###
Opzionale #Tutte
le operazioni qui sotto sono da considerarsi #riferite
ai/al client:
#
Assegna uno specifico IP a una specifica interfaccia dato
# il
suo MAC address #dhcp-host=00:0E:2E:23:6D:1F,192.168.1.1 #
Decide l'ndirizzo di broadcast (opz. 28)
#dhcp-option=28,192.168.1.255 #
Default gateway #dhcp-option=3,192.168.1.1 #
Indirizzo del server DNS.
#dhcp-option=6,192.168.1.1 ###
/opzionale |
Abilitare l'accesso lato LAN per
i due demoni ed impostare il routing:
Con la configurazione seguente si abiliterà l'accesso ai
due demoni da parte dei client della LAN e si imporrà al
server di operare come router. Ai client sarà data la possibilità
di ottenere automaticamente i parametri di rete, risolvere i nomi
ed uscire in internet.
- echo
"1" > /proc/sys/net/ipv4/ip_forward
- iptables
-P INPUT DROP
- iptables
-P OUTPUT ACCEPT
- iptables
-P FORWARD DROP
- iptables
-I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- iptables
-A INPUT -i eth1 -p UDP --dport 53 -j ACCEPT
#dns
- iptables
-A INPUT -i eth1 -p UDP --dport 67 -j ACCEPT
#dhcpd
- iptables
-A FORWARD -i eth1 -j ACCEPT
- iptables
-t nat -A POSTROUTING -o eth0 -j MASQUERADE
- iptables
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
Sui client
Windows
GUI: Settare l'interfaccia di rete affinchè auto configuri
i suoi parametri di rete per mezzo del server dhcp: Start --> Pannello di controllo --> Connessioni
di rete --> Propria scheda di rete --> Proprietà -->
Protocollo Internet (TCP/IP) --> Ottieni automaticante indirizzo
ip/server DNS

Windows shell: Tramite ipconfig
release/renew è possibile rilasciare l'indirizzamento o richiederlo al
server DHCP.
- C:\>ipconfig
/release
Configurazione IP di Windows
Scheda Ethernet Connessione alla rete locale (LAN):
Suffisso DNS specifico
per connessione:
Indirizzo IP. . .
. . . . . . . . . . : 0.0.0.0
Subnet mask . . .
. . . . . . . . . . : 0.0.0.0
Gateway predefinito
. . . . . . . . . :
C:\>ipconfig /renew
Configurazione IP di Windows
Scheda Ethernet Connessione alla rete locale (LAN):
Suffisso DNS specifico
per connessione: billiejoex.local
Indirizzo IP. . .
. . . . . . . . . . : 10.0.0.17
Subnet mask . . .
. . . . . . . . . . : 255.0.0.0
Gateway predefinito
. . . . . . . . . : 10.0.0.1
C:\>
Linux:
Il rinnovo dell'indirizzamento si può ottenere per mezzo
del comando dhclient.
- root@client:/home/user#
dhclient
Internet Systems Consortium DHCP Client V3.0.2
[...]
sit0: unknown hardware address type 776
Listening on LPF/sit0/
Sending on LPF/sit0/
Listening on LPF/lo/
Sending on LPF/lo/
Listening on LPF/eth0/00:0c:6e:fb:bf:0d
Sending on LPF/eth0/00:0c:6e:fb:bf:0d
Sending on Socket/fallback
DHCPDISCOVER on sit0 to 255.255.255.255 port 67 interval 7
DHCPDISCOVER on lo to 255.255.255.255 port 67 interval 6
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 5
DHCPOFFER from 10.0.0.1
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 10.0.0.1
bound to 10.0.0.17 -- renewal in 1429 sec
root@client:/home/user#
Per configurare automaticamente l'interfaccia di
modo che richieda i parametri al DHCP server gia all'avvio editare
/etc/network/interfaces aggiungendo (se non sono gia presenti) le
seguenti direttive:
- vi /etc/network/interfaces
# sostituire eth0 con la propria interfaccia
di rete, se differente
iface eth0 inet dhcp
auto eth0 |
billiejoex
EOF 2005-11-10 2:55
AM
last update 2005-11-10
|