Configurare un DHCP server

Introduzione

Questo documento ha come scopo la realizzazione di un server dhcp basato sul sistema operativo Slackware Linux. Questa guida è stata realizzata su un sistema Slackware, ma con piccole differenze è facilmante adattabile a tutte le distribuzioni GNU/linux. La configurazione hardware della lan consiste in un pc che fa da gateway verso internet, da server dhcp e firewall ed alcuni client.

Topologia della rete

Il computer server possiede ovviamente due schede di rete: eth0, che lo collega alla rete internet, ed eth1 che lo collega alla rete locale, contenente i seguenti indirizzi ip: 192.168.1.0/24 con pool 50-150. Questa configurazione è integrabile con una VPN in ethernet bridging.... consulatate il relativo howto.

Configurazione del server dhcp

  1. Creare il file dhcp.leases (nel caso non esistesse):
    touch /var/state/dhcp/dhcpd.leases
    Tale file serve per temporizzare il rilascio dell'ip associato al Mac-Address della scheda.
  2. Modificare il file /etc/dhcpd.conf:
    # dhcpd.conf 
    # 
    # Configuration file for ISC dhcpd (see 'man dhcpd.conf') 
    # 
    # 
    ddns-update-style ad-hoc; 
    subnet 192.168.1.0 netmask 255.255.255.0 { 
    range 192.168.1.50 192.168.1.150; 
    default-lease-time 604800; # una settimana 
    max-lease-time 2592000; # 30 giorni 
    option subnet-mask 255.255.255.0; 
    option broadcast-address 192.168.1.255; 
    option routers 192.168.1.1; 
    option domain-name-servers 213.156.54.80; 
    option domain-name "fastwebnet.it"; 
    }
  3. Modificare il file /etc/resolv.conf per settare il DNS: questo serve per consentire un corretto accesso a internet da parte della rete lan (io ho fastweb quindi scrivo nella seguente maniera):
    nameserver 213.156.54.80 
    nameserver 213.156.54.81 
    search fastwebnet.it 
    
  4. Dare un Ip statico al Gateway, alzare il Firewall e attivare il server dhcp. Io lo faccio con uno script:
    #! /bin/bash 
    
    IP=MIO IP 
    INT_RETE_ESTERNA=eth0 
    INT_RETE_INTERNA=eth1 
    IP_ACCETTA1=MACCHINA ESTERNA TRUSTED 1 #(Amici lontani) 
    IP_ACCETTA2=MACCHINA ESTERNA TRUSTED 2 #(Amici lontani) 
    LANIN=192.168.1.0/24 
    
    
    ################# SEZIONE GATEWAY ####################### 
    echo 1 > /proc/sys/net/ipv4/ip_forward 
    iptables -t nat -A POSTROUTING -o $INT_RETE_ESTERNA -j MASQUERADE 
    ifconfig $INT_RETE_INTERNA 192.168.1.1 netmask 255.255.255.0 up 
    dhcpd $INT_RETE_INTERNA 
    
    ################ SEZIONE FIREWALL FILTRANTE ############# 
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies #contro il syn flood 
    echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter #contro Ip spoofing 
    
    
    iptables -F 
    iptables -P INPUT DROP 
    iptables -P OUTPUT ACCEPT 
    iptables -P FORWARD DROP 
    
    
    #SEZIONE INPUT 
    
    iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT 
    iptables -A INPUT -p all -s $IP_ACCETTA1 -j ACCEPT 
    iptables -A INPUT -p all -s $IP_ACCETTA2 -j ACCEPT 
    iptables -A INPUT -i $INT_RETE_INTERNA -j ACCEPT 
    iptables -A INPUT -i $INT_RETE_ESTERNA -p all -m state --state ESTABLISHED,RELATED -j ACCEPT 
     
    
    
    #SEZIONE FORWARD PER LA LAN 
    
    iptables -A FORWARD -i $INT_RETE_INTERNA -p all -s $LANIN -d $LANIN -j ACCEPT 
    iptables -A FORWARD -s $LANIN -d 0/0 -j ACCEPT 
    iptables -A FORWARD -s 0/0 -d $LANIN -p tcp --syn -j DROP 
    iptables -A FORWARD -s 0/0 -d $LANIN -j ACCEPT 
    

Ovviamente questa è una possibile configurazione, fatta a mio gusto. Soprattutto la parte riguardante il firewall filtrante è fortemente personalizzabile, qui è stato solo riportato un esempio.

Se notate errori nella guida vi prego di segnalarmeli in pubblico o in privato. Ovviamente garanzia: NO WARRANTY.... non mi riterrò responsabile per qualsiasi accadimento collegato a questo howto. Usate queste informazioni a vostro rischio e pericolo.


AUTORE: MDS - <doc.spock@gmail.com>