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 Jack DeNoumea (site web personnel) . Évalué à 3.
"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 Tonguim Ferdinand GUINKO (site web personnel) . Évalué à 0.
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 Tonguim Ferdinand GUINKO (site web personnel) . Évalué à 2.
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 Xavier Maillard . Évalué à 3.
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 other . Évalué à 2.
#############################
#!/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 other . Évalué à 2.
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.