Dans un premier temps, on installera le paquet isc-dhcp-server qui va fournir le service DHCP (attribution des adresses IP aux clients),
en rajoutant simplement les lignes suivantes dans le fichier /etc/dhcp/dhcpd.conf :
Code : Tout sélectionner
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.8;
option domain-name "lug68.lan";
option domain-name-servers 192.168.100.1;
option routers 192.168.100.1;
option broadcast-address 192.168.100.255;
}
suffisante à la plupart des usagers.
Comme pour toute passerelle, il faudra fournir l'interface réseau WAN (vers l'extérieur/internet) et l'interface LAN (réseau interne) manuellement.
Mais comme nous sommes de gros "feignasses" au LUG68, nous avons ici écrit un petit script BASH, qui s'occupe de trouver les interfaces réseaux présentes sur votre machine, et de vous les afficher sous la forme d'une liste avec un numéro distinct en début de ligne.
Ainsi vous n'aurez plus qu'à rentrer les deux numéros correspondants respectivement aux interfaces WAN et LAN de votre réseau pour créer votre passerelle !
Contenu du script shorewall.sh, à exécuter avec les droits root :
Code : Tout sélectionner
#!/bin/bash
HAS_SHOREWALL=$(dpkg -l|grep " shorewall "|cut -d " " -f1)
HAS_DHCPD=$(dpkg -l|grep " isc-dhcp-server "|cut -d " " -f1)
if [ ! "$HAS_SHOREWALL" == "ii" ]; then
apt-get install shorewall
fi
if [ ! "$HAS_DHCPD" == "ii" ]; then
apt-get install isc-dhcp-server
fi
service shorewall stop
service isc-dhcp-server stop
echo -e "\nInterfaces disponibles :"
i=1
INTERFACES=$(ifconfig|cut -d' ' -f1|sed '/^$/d')
for interface in $INTERFACES; do
echo -e "$i / $interface";
i=$((i+1))
done
ARR=($INTERFACES)
echo -e ""
read -r -n 1 -p "Numéro interface WAN ? " NUMWAN
echo -e ""
read -r -n 1 -p "Numéro interface LAN ? " NUMLAN
echo -e "\n"
NUMWAN=$((NUMWAN-1))
NUMLAN=$((NUMLAN-1))
#echo -e "\nNUMWAN=$NUMWAN"
#echo -e "\nNUMLAN=$NUMLAN"
WAN=${ARR[$NUMWAN]};
LAN=${ARR[$NUMLAN]};
# pour le serveur local DHCPD
ifconfig $LAN 192.168.100.1/24
echo -e "WAN=$WAN"
echo -e "LAN=$LAN"
echo "
?FORMAT 2
net $WAN dhcp,tcpflags,nosmurfs,logmartians,sourceroute=0,routeback
loc $LAN nosmurfs,logmartians,sourceroute=0
" > /etc/shorewall/interfaces
echo "
fw firewall
net ipv4
loc ipv4
" > /etc/shorewall/zones
echo "
$WAN $LAN
" > /etc/shorewall/masq
echo "
\$FW all ACCEPT
loc \$FW ACCEPT
loc net ACCEPT
net all DROP info
# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info
" > /etc/shorewall/policy
ifconfig $LAN 192.168.100.1/24
service shorewall restart
service isc-dhcp-server restart
echo -e ""
sysctl -w net.ipv4.ip_forward=1