[[partage_de_connexion_internet]]
Piste: » partage_de_connexion_internet
Comment partager une connexion internet ?
Si vous avez un réseau avec un modem qui ne peut pas dupliquer la connexion lui même, ou, si vous voulez faire un sous réseau, ou n'importe quoi d'autre, il vous faudra partager votre connexion internet au autres ordinateurs.
Il y a plusieurs façon de faire, ici deux seront présentées. La première est une très simple et efficace techniquement, la seconde est une ancienne technique.
Première méthode : faire un pont
Cette astuce est tirée du blog Only Ubuntu, et permet de partager une connexion avec le paquet bridge-utils, qui permet de gérer les ponts réseaux sous Ubuntu.
Pré-Requis
sudo apt-get install bridge-utils
- Il faut connaître le nom de l'interface réseau reliée à Internet et le nom de la carte qui servira au partage. Entrez, dans un terminal:
ifconfig
Vous devriez avoir un résultat semblable à celui-ci :
eth0 Lien encap:Ethernet HWaddr 00:11:22:33:44:55
UP BROADCAST MULTICAST MTU:1500 Metric:1
(...)
eth1 Lien encap:Ethernet HWaddr 00:AA:BB:CC:DD:EE
inet adr:192.168.0.0 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::219:d2ff:fed6:e69/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
(...)
Dans ce cas, on voit clairement que l'interface réseau possédant une connexion internet est l'interface eth1, grâce à la seconde ligne :
inet adr:192.168.0.0 Bcast:192.168.0.255 Masque:255.255.255.0
L'autre, eth0, sera donc celle de partage.
Création du pont
Modifier le fichier /etc/network/interfaces,tapez dans un terminal :
sudo gedit /etc/network/interfaces
En remplacer son contenu par celui-ci, en modifiant bien entendu eth0 par l'interface internet, et eth1 par l'interface de partage :
auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto eth1 iface eth1 inet manual auto br0 iface br0 inet dhcp bridge_ports eth0 eth1
Voilà, il ne reste plus qu'à entrer dans un terminal :
sudo /etc/init.d/networking restart
Et le partage est fait !
Ancienne méthode
Un peu de vocabulaire
- L'ordinateur qui met en place le partage de connexion sera nommé Serveur ICS
- Un ordinateur relié au serveur ICS sera appelé Client
- Une carte réseau ou wifi est une interface réseau
- Une adresse IP ou une IP est l'identifiant d'un ordinateur sur le réseau
Quelques précisions
- Cette documentation a été testée sur Ubuntu 7.10 "Gutsy", avec une carte wifi et une carte "câble".
- Deuxième test concluant : Gutsy, avec un modem sagem fast 800 et une carte câble... ⇒ voir ici : http://forum.ubuntu-fr.org/viewtopic.php?pid=1352433#p1352433
Pour une adaptation pour Kubuntu/Xubuntu et/ou si vous avez des problèmes, avec votre configuration : contactez-moi → Fabien26
Cette documentation est une simplification/actualisation/remise en forme de cette page : Configurer son réseau local
Installation côté Serveur ICS
Pré-requis
- Vous devez avoir deux interfaces réseau (une wifi et une câble, deux câble, ou un modem et un câble)
- L'interface réseau avec laquelle vous allez faire le partage doit être une câble !
- Le câble doit être pour le moment débranché !
- Ouvrez la configuration du réseau (Système→Administration→Réseau)
- Cliquez sur la carte réseau avec laquelle vous voulez partager et changez les cases, dans l'ordre :
- Configuration : Adresse IP statique
- Adresse IP : 192.168.10.1
- Masque de sous-réseau : 255.255.255.0
- Passerelle : Vide...
- Faites Valider puis Fermer
- Ensuite, pour trouver le nom de l'interface réseau reliée à Internet et le nom de la carte qui servira au partage, entrez, dans un terminal:
ifconfig
Vous devez retrouver quelque chose qui ressemble à ça :
eth0 Lien encap:Ethernet HWaddr 00:15:C5:79:59:B5
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:0 (0.0 b) Octets transmis:0 (0.0 b)
Interruption:17
eth1 Lien encap:Ethernet HWaddr 00:19:D2:D6:0E:69
inet adr:192.168.0.75 Bcast:192.168.0.255 Masque:255.255.255.0
adr inet6: fe80::219:d2ff:fed6:e69/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:767 erreurs:4 :39 overruns:0 frame:0
TX packets:825 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:687753 (671.6 KB) Octets transmis:107141 (104.6 KB)
Interruption:17 Adresse de base:0xe000 Mémoire:efdff000-efdfffff
lo Lien encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:16436 Metric:1
Packets reçus:60 erreurs:0 :0 overruns:0 frame:0
TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:3947 (3.8 KB) Octets transmis:3947 (3.8 KB)
Dans mon cas, nous voyons clairement que l'interface réseau qui va partager la connexion est eth0, car elle n'a pas de ligne de ce genre :
inet adr:192.168.0.75 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::219:d2ff:fed6:e69/64 Scope:Lien
Ce qui signifie qu'elle n'est pour l'instant reliée à aucun réseau.
Par déduction, car je n'ai que deux cartes réseau, eth1 est l'interface réseau reliée à Internet. (de plus elle a les lignes si dessus, ce qui veux dire qu'un réseau y est branché, en l'occurrence une freebox).
un numéro, elle ne peut pas être une ppp, ni autre chose.
Retenez bien les valeurs que vous avez trouvées !
- Attention !!!: Dans la suite nous assumerons que vous avez une configuration comme la mienne, si ce n'est pas le cas, effectuez les changements comme indiqué !
Configuration de dnsmasq
- Tous d'abord sauvegardons le fichier de configuration originel ailleurs, en tapant dans un terminal, ceci:
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
- Éditez le fichier /etc/dnsmasq.conf pour y mettre ça :
# Fichier de Configuration pour dnsmasq. # # pour éviter de fournir du trafic DHCP/DNS inutile du coté internet ##domain-needed bogus-priv # (Optionnel) Si vous avez une ip fixe, # décommentez cette ligne. # no-poll # pour limiter l'écoute de requêtes DHCP du coté réseau local interface=eth0 # nom de votre domaine pour dnsmasq domain=inet # activez le serveur DHCP: dhcp-range=192.168.10.100,192.168.10.150,255.255.255.0,12h
- Adaptez la ligne 10 selon ce que vous avez trouvé précedemment.
- Enregistrez le fichier.
Faire un script d'exécution automatique du partage de connexion
- Créez le fichier /etc/init.d/iptables pour y mettre ça :
#!/bin/sh # # Script de démarrage qui lance l'interface réseau internet, # met en place un firewall basique et un partage de connexion # # Inspiré du script de Mjules_at_ifrance.com # interface=eth1 start() { # init du la périphérique internet (ici derriere un modem ADSL ethernet, DHCP client) /sbin/ifup $interface # Dans cette partie, on met en place le firewall #vidage des chaines iptables -F #destruction des chaines personnelles iptables -X #stratégies par défaut iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT #init des tables NAT et MANGLE (pas forcément nécessaire) iptables -t nat -F iptables -t nat -X iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -F iptables -t mangle -X iptables -t mangle -P PREROUTING ACCEPT iptables -t mangle -P OUTPUT ACCEPT # Acceptation de toutes les connexions en local (un process avec l'autre) iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # PORT FORWARDING: # attention : on ne peut malheureusement pas mettre un nom de machine en destination, il faut mettre l'adresse IP. # exemple : on veut qu'un serveur HTTP installé sur une machine du réseau local soit visible depuis l'extérieur. ###iptables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j DNAT --to-destination 192.168.10.121:80 ###iptables -A FORWARD -p tcp -i $interface --dport 80 -j ACCEPT #création d'une nouvelle règle iptables -N MAregle #définition de la règle : accepter les nouvelles connexions ne venant pas de l'interface internet # et accepter toutes les connexions établies et reliées (ex: une demande de page HTML provoque l'ouverture # d'une connexion reliée pour acheminer cette page vers l'ordinateur) iptables -A MAregle -m state --state NEW -i! $interface -j ACCEPT iptables -A MAregle -m state --state ESTABLISHED,RELATED -j ACCEPT #application de la règle au partage de connexion iptables -A INPUT -j MAregle iptables -A FORWARD -j MAregle # activation du forwarding dans le noyau # mise en place du partage de connexion sur le réseau local echo 1 >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o $interface -j MASQUERADE } stop() { echo 0 >/proc/sys/net/ipv4/ip_forward ifdown $interface } case "$1" in start) start ;; stop) stop ;; restart) stop && start ;; *) echo "Usage $0 {start|stop|restart}" exit 1 esac exit 0
- Si vous avez comme interface réseau avec internet: eth0 ou ppp0, ou autre, et non pas eth1, changez la ligne 9 (interface=eth1), par interface= ce que vous avez.
- Enregistrez le fichier
- Exécutez ensuite dans un terminal :
sudo chmod +x /etc/init.d/iptables
puis :
sudo update-rc.d iptables start 99 2 . stop 00 2 0 1 6 .
Optionnel - Configuration du client DHCP pour permettre l'affichage des noms des machines locales
- Éditez le fichier /etc/dhcp3/dhclient.conf
- Enlevez le # devant la ligne prepend domain-name-servers 127.0.0.1; (ligne 18 ~)
- Enregistrez le fichier
Optionnel - Nom d'hôte du serveur ICS
- Éditez le fichier /etc/hosts
- Ajoutez dans ce fichier, 192.168.10.1 serveurICS après la ligne : 127.0.0.1 localhost
- Enregistrez le fichier
Optionnel (si besoin) - Configurer le pare-feu
- Si ce n'est déjà fait, installez le paquet firestarter
- lancer Système/Administration/Firestarter ;
- cliquer sur Préférences/configuration du réseau
- cocher "Autoriser le partage de la connexion internet"
- Accepter la modification des Préférences;
- Arrêter puis Redémarrer le pare-feu ;
- Quitter Firestarter.
C'est fini, comment ça marche ?
Et voila, branchez enfin les câbles, redémarrer votre serveur ICS, puis redémarrer les autres machines de votre réseau local.
Quand une machine du réseau local démarre, voici ce qu'elle fait :
- recherche d'un serveur DHCP –> le serveur ICS répond.
- le serveur ICS fourni une adresse DHCP dans la plage 192.168.10.100 à 192.168.10.150.
- le serveur ICS renseigne le fichier /etc/resolv.conf de votre machine automatiquement : il se met lui-même (192.168.10.1), car il est serveur relais DNS.
- le serveur ICS renseigne la route par défaut. Il se donne lui-même en route par défaut car c'est lui qui effectue le partage de la connexion internet.
Installation coté client
En dhcp
Sous linux mettre l'interface réseau du client en mode dhcp... (c'est la configuration par défaut)
Sur une machine Windows laissez le paramétrage TCP/IP et les DNS sur "obtenir automatiquement", elle sera reconnue automatiquement.
Tous les ordinateurs reliés devraient marcher, qu'ils soient sous windows, linux, BSD ou autre...
En IP Fixe
Logiquement, nous pouvons assigner une ip statique, du moment qu'elle est comprise entre 192.168.10.100 et 192.168.10.150.
- Ouvrez la configuration du réseau (Système→Administration→Réseau)
- Ouvrez la carte réseau du client et changer les cases, dans l'ordre:
- Configuration: Adresse IP statique
- Adresse IP: 192.168.10.*
remplacer * par un numéro entre 100 et 150, en tous cas vous ne devez surtout pas mettre le même sur deux pc différents !!! - Masque de sous-réseau: 255.255.255.0
- Passerelle: 192.168.10.1
- Faites Valider puis Fermer
Liens
- http://blog.creaone.fr/post/2008/05/29/Partager-sa-connexion-3G-entre-Linux-et-Windows Partage de connexion avec firestarter
Contributeurs: sksbir, BorisLeHachoir, Fabien26.
