29 Sep 2014, 00:00

Créer un réseau en NAT sur une connection wifi ou 3g

Share

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.confafin 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.

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 natWifi.sh qui contiendra ceci :

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward; 				## On active le forwarding de paquets IPV4
cp /etc/network/interfaces.nat /etc/network/interfaces;	## On configure la carte filaire en manuel
service networking restart; 							## On fait prendre en compte ces modifs
service network-manager restart;						## On s'assure que NM n'interfère pas avec la carte filaire
ifconfig eth0 up; 										## On active la carte filaire
service isc-dhcp-server restart;						## On démarre le serveur DHCP
iptables -t nat -F;										## On nettoie la table de routage 'nat' iptables
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE;	## On crée dans iptables la règle de NAT à proprement parler

Puis le fichier nat3G.sh qui contiendra ceci :

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward; 				## On active le forwarding de paquets IPV4
cp /etc/network/interfaces.nat /etc/network/interfaces;	## On configure la carte filaire en manuel
service networking restart; 							## On fait prendre en compte ces modifs
service network-manager restart;						## On s'assure que NM n'interfère pas avec la carte filaire
ifconfig eth0 up; 										## On active la carte filaire
service isc-dhcp-server restart;						## On démarre le serveur DHCP
iptables -t nat -F;										## On nettoie la table de routage 'nat' iptables
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE;	## On crée dans iptables la règle de NAT à proprement parler

La seule différence entre ces 2 fichiers étant la connection source pour la règle iptables (wlan0 pour le wifi, ppp0 pour la 3g)

Puis le fichier pour retourner en connection standard, pasnat.sh :

#!/bin/sh
echo 0 > /proc/sys/net/ipv4/ip_forward;						## On désactive le forwarding des paquets IPV4
cp /etc/network/interfaces.pasnat /etc/network/interfaces;	## On reprend notre fichier interfaces standard
service networking restart;									## On redémarre le service networking pour qu'il libère la carte filaire
service network-manager restart;							## On laisse NM prendre en charge la carte filaire
service isc-dhcp-server stop;								## on arrête le serveur DHCP
iptables -t nat -F;											## On nettoie la table 'nat' d'iptables
iptables -F;												## On nettoie la table 'filter' d'iptables

On rend ces 3 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/natWifi.sh

et la connection wifi sera partagée à tous les clients branchés sur la carte filaire du l’ordi !