L’idée : capter une connection wifi ou 3G, et la partager à travers le port Ethernet de l’ordinteur, en créant un sous-réseau, avec DHCP.
Le paquet isc-dhcp-server
est nécessaire.
Paramétrer le fichier /etc/dhcp/dhcpd.conf
afin qu’il soit ainsi, en adaptant les valeurs à vos préférences :
# option definitions common to all supported networks...
option domain-name "nomdureseau";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 3600;
max-lease-time 7200;
# 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;
subnet 10.88.1.0 netmask 255.255.255.0 {
range 10.88.1.5 10.88.1.199;
option routers 10.88.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option broadcast-address 10.88.1.255;
}
Ce fichier sert à définir le réseau et la plage d’IP qui seront distribuées par le serveur DHCP.
Si on souhaite désactiver l’IPv6 afin de ne pas avoir de message d’erreur, on édite le fichier /etc/default/isc-dhcp-server
et on ajoute le nom de l’interface filaire à la ligne “INTERFACESv4=”
Source
Créer ensuite le fichier /etc/network/interfaces.nat
qui contiendra ceci :
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.88.1.1
netmask 255.255.255.0
network 10.88.1.0
broadcast 10.88.1.255
Ce fichier sert à définir manuellement les paramètres réseaux de la carte qui servira le DHCP. Il doit être en cohérence avec le dhcpd.conf ci-dessus.
On copie le fichier interfaces
actuel pour pouvoir le restaurer lorsqu’on quittera ce mode de partage :
sudo cp /etc/network/interfaces /etc/network/interfaces.pasnat
Puis on crée les scripts. Créer quelque part le fichier nat.sh
qui contiendra ceci :
#!/bin/sh
# on coupe les services réseau
service network-manager stop
service networking stop
# on configure les interfaces et le forward
echo 1 > /proc/sys/net/ipv4/ip_forward
cp /etc/network/interfaces.nat /etc/network/interfaces
# on réinitialise et remet en route le réseau
ip addr flush eth0
ifconfig eth0 up
service networking start
service isc-dhcp-server start
service network-manager start
# on masquerade les paquets qui vont vers toutes les interfaces actuellement actives sauf eth0 et loopback
iptables -t nat -F
for interface in $(ip link show | grep UP | grep -v DOWN | grep -v eth0 | grep -v LOOPBACK | sed s/^[0-9]*:\ // | sed s/:.*$//);
do
iptables -t nat -A POSTROUTING -o ${interface} -j MASQUERADE; ## On crée dans iptables la règle de NAT à proprement parler
done
# On prépare pour le prochain reboot
cp /etc/network/interfaces.pasnat /etc/network/interfaces
Puis le fichier pour retourner en connection standard, pasnat.sh
:
#!/bin/sh
# On coupe le réseau
service network-manager stop
service networking stop
service isc-dhcp-server stop
# On désactive le forward ipv4, et reconfigure les interfaces normalement
echo 0 > /proc/sys/net/ipv4/ip_forward
cp /etc/network/interfaces.pasnat /etc/network/interfaces
# on réinitialise et remet en route le réseau
ip addr flush eth0
service networking start
service network-manager start
# on purge les tables iptables
iptables -t nat -F
iptables -F
On rend ces 2 fichiers exécutables
chmod +x /path/to/nat.sh
chmod +x /path/to/pasnat.sh
On peut désormais les lancer avec sudo
sudo /path/to/nat.sh
et les connections (wifi, USB, ppp etc) sera partagée à tous les clients branchés sur la carte filaire du l’ordi !