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