Le contexte : à l'IUT le réseau local, connecté à internet par un firewall, comporte deux types de machines : des serveurs et des clients. On utilise deux plages d'adresses : des adresses privées, dans la plage 172.16.0.0 à 172.16.255.255 des adresses publiques, de 147.210.94.192 à 147.210.94.207. Les adresses publiques sont affectées aux serveurs qui sont accessibles de l'exterieur (SMTP, Web, etc).

Configurations statiques

Serveur

Il n'est pas difficile de munir les serveurs Unix de 2 adresses ip sur la même interface, avec les "IP aliases". Extrait du fichier /etc/network/interfaces d'un serveur
auto eth0
iface eth0 inet static
        address 172.16.94.16
        netmask 255.255.0.0
        network 172.16.0.0
        broadcast 172.16.255.255
auto eth0:0
iface eth0:0 inet static
        address 147.210.94.201
        netmask 255.255.255.240
        network 147.210.94.192
        broadcast 147.210.94.207
        gateway 147.210.94.193

Clients

Ni de configurer correctement un client linux avec des adresses statiques
auto eth0
iface eth0 inet static
        address 172.16.94.100
        netmask 255.255.0.0
        network 172.16.0.0
        broadcast 172.16.255.255
        up root add -net 147.210.94.192 netmask 255.255.255.240 up
On fait la même chose facilement pour windows, bien sur.

Configuration des clients par DHCP ?

Pour des raisons tout à fait respectables, on souhaite configurer les postes par DHCP.

Configuration du serveur dhcp

On suppose que le serveur DHCP est déjà configuré correctement pour attribuer des adresses privées aux clients. On ajoute alors une option qui indiquent les correspondances entre les numéros publics et les numéros privés :
option static-routes 
    147.210.94.197 172.16.94.29,
    147.210.94.203 172.16.94.19 ;
Normalement, cela suffit aux client windows (XP-pro).

Configuration d'un client linux

Pour linux (Debian etch), il faut en faire un peu plus. Dans /etc/dhcp3/dhclient.conf, on réclame static-routes
request subnet-mask, broadcast-address, time-offset, routers,
       domain-name, domain-name-servers, host-name,
       netbios-name-servers, netbios-scope, interface-mtu,
       static-routes;
Dans /etc/dhcp3/dhclient-exit-hooks.d/ on crée un script (appelons-le static-routes) qui ajoute les routes prises dans la variable new_static_routes quand on est à l'état BOUND ou REBOOT :
#

function process_routes() {	
  while [ $# -ne 0 ]	  
    do	
            dest=$1
	    gateway=$2
	    shift 2
	    route add -host $dest gw $gateway
    done
}

case $reason in
BOUND |  REBOOT )
    process_routes $new_static_routes
    ;;
esac
(il faut probablement y ajouter RENEW)

Sources