Forum Linux.debian/ubuntu debian 3.1: configuration d'un serveur dhcp/nat

Posté par  (site web personnel) .
Étiquettes :
0
1
mai
2007
Bonjour,

Contexte: je dispose de 2 adresses routables ip_routable1 et ip_routable2, et d'un réseau local compose de plusieurs ordinateurs.

Objectif: partage de la connexion internet sur le reseau local, adressage dynamique

Methode: sur un système debian 3.1, j'ai installé un serveur dhcp (dhcp3-server), que j'ai configuré ainsi qu'il suit (voir ci-dessous).

Problème:
Les postes clients recoivent des adresses dynamiques (192.168.0.XXX) du serveur dhcp et "ping" l'interface locale (192.168.0.1) du serveur dhcp/nat.
par contre, les postes clients ne "ping" ni l'interface internet du serveur dhcp/nat, ni l'interface de la passerelle (routeur), et par conséquent n'accèdent pas à internet!

Comment résoudre cela? Merci.


# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# A slightly different configuration for an internal subnet.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.3 192.168.0.253;
option domain-name-servers dns_1, dns_2;

# option domain-name "internal.example.org";
option routers ip_routable1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}


Ensuite j'ai fait le partage de la connexion internet ainsi qu'il suit:


debian1:~# iptables -t nat -F
debian1:~# iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0 -j MASQUERADE
debian1:~# echo 1 > /proc/sys/net/ipv4/ip_forward


NB: eth1 est l'interface réseau internet et 192.168.0.0 l'adresse de mon reseau local

Ci-dessous la configuration des 2 interfaces de mon serveur dhcp/nat:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#auto eth0
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

auto eth1
iface eth1 inet static
address ip_routable2
netmask 255.255.255.252
network xxx.xxx.xxx.16
broadcast xxx.xxx.xxx.19
gateway ip_routable1
  • # passerelle dans le reseau local

    Posté par  (site web personnel) . Évalué à 3.

    la passerelle a une ip du réseau local sinon les PC ne savent pas a qui s'adresser....
    "option routers ip_routable1;" a remplacer par "option routers 192.168.0.1;" ce qui equivaut sur les machines a
    route add default gw 192.168.0.1
    • [^] # Re: passerelle dans le reseau local

      Posté par  (site web personnel) . Évalué à 0.

      Merci Jack DeNoumea,

      effectivement nous avions fait une erreur au niveau de l'option routers.

      La bonne configuration est à présent:


      ddns-update-style none;

      authoritative;

      log-facility local7;

      # A slightly different configuration for an internal subnet.
      subnet 192.168.0.0 netmask 255.255.255.0 {
      range 192.168.0.3 192.168.0.253;
      option domain-name-servers dns_1, dns_2;

      # option domain-name "internal.example.org";
      option routers 192.168.0.1;
      option broadcast-address 192.168.0.255;
      default-lease-time 600;
      max-lease-time 7200;
      }
  • # dhcp/nat: partage de la connexion se fait manuellement

    Posté par  (site web personnel) . Évalué à 2.

    Maintenant, les postes clients recoivent des adresses dynamiques (192.168.0.XXX) du serveur dhcp et "ping" les 2 interfaces (locale et internet) du serveur dhcp/nat ainsi que l'interface de la passerelle (routeur).

    Mais il faut manuellement entrer les commandes de partages de la connexion pour la partager à nouveau après chaque redémarrage du serveur dhcp/nat:

    # iptables -t nat -F
    # iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/255.255.255.0 -j MASQUERADE
    # echo 1 > /proc/sys/net/ipv4/ip_forward

    Le fichier /etc/rc.local n'existant pas sous debian 3.1, j'ai opté pour la création d'un fichier /etc/init.d/local dans lequel j'ai mis le script suivant:


    #!/bin/sh

    iptables -t nat -F
    iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/255.255.255.0 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

    chmod 755 /etc/init.d/local
    update-rc.d local start 98 2 3 4 5 .
    mkdir /etc/rc.d/
    ln -s /etc/init.d/local /etc/rc.d/rc.local

    exit 0


    L'objectif est que le fichier /etc/init.d/local s'exécute au démarrage du serveur dhcp/nat

    Le problème est que malgré la présence de ce script, le partage de connexion ne se fait pas automatiquement: il faut le faire manuellement.

    Comment résoudre ce problème?
    • [^] # Re: dhcp/nat: partage de la connexion se fait manuellement

      Posté par  . Évalué à 3.

      Tout simplement en le mettant dans le rc2 ou 3, non ?

      Dans Debian, je crois que tu dois disposer de la commande update-rc.d. L'astuce consiste donc à faire:

      update-rc.d local defaults

      local -> ton script
      defaults -> ajoute les S et K par défaut.

      J'espère ne pas avoir dit trop de bêtises.
      • [^] # Re: dhcp/nat: partage de la connexion se fait manuellement

        Posté par  . Évalué à 2.

        Pour executer tes commandes automatiquement a chaque redemarrage de l'ordi il suffit en effet de créer un script /etc/init.d/local avec dedant :

        #############################
        #!/bin/sh

        case $1 in
        start)
        # pour activer tout ça
        iptables -t nat -F
        iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/255.255.255.0 -j MASQUERADE
        echo 1 > /proc/sys/net/ipv4/ip_forward

        stop)
        # pour arreter tout ça
        iptable -t nat -F
        echo 0 > /proc/sys/net/ipv4/ip_forward
        *)
        echo "Usage: /etc/init.d/local start | stop "
        exit 1
        ;;
        esac
        exit 0
        #########################

        suivis d'un
        chmod 755 /etc/init.d/local
        update-rc.d local defaults
        (il ne faut pas mettre ces commandes dans le script, les taper une fois dans un terminal suffit à les integrer au systeme)

        Mais apres si tu veux les executer à chaque redémarrage de dhcp/nat, il faut ajouter "/etc/init.d/local start" a la fin de ton script dhcp/nat. Enfin je crois.
        • [^] # Re: dhcp/nat: partage de la connexion se fait manuellement

          Posté par  . Évalué à 2.

          Ooops :D roh oui je sais... (mais je trouve pas le bouton edit :s)

          je refait le script /etc/init.d/local :


          #!/bin/sh

          case $1 in

          start)
          # pour activer tout ça
          iptables -t nat -F
          iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/255.255.255.0 -j MASQUERADE
          echo 1 > /proc/sys/net/ipv4/ip_forward
          ;;

          stop)
          # pour arreter tout ça
          iptable -t nat -F
          echo 0 > /proc/sys/net/ipv4/ip_forward
          ;;

          *)
          echo "Usage: /etc/init.d/local start | stop "
          exit 1
          ;;
          esac
          exit 0


          (en fait faut pas oublier les 2 ;; à la fin de chaque case)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.