#1 Le 13/08/2007, à 13:50
- Vergeylen
[SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour,
Contexte: J'ai récemment eu à partager ma connexion Internet via différentes interfaces. Bien que cela ne soit pas très compliqué, j'ai tout même du chercher un petit peu avant d'y arriver. Puisqu'il y a plusieurs lignes de commande à taper pour que cela soit un partage "propre", je me suis donné pour objectif d'écrire un petit script qui me le faisait facilement.
Le Script: Il vous demande si vous avez accès à Internet et si oui, par quelle interface. Ensuite, il vous demande l'interface vers laquelle il doit la rediriger (ou la recevoir si vous n'en avez pas).
Les possibilités:
Vous recevez Internet via Wifi ou Lan ou Modem ou Vous ne recevez pas Internet
Vous pouvez partager/recevoir Internet via Wifi (Ad-Hoc) ou Lan
Remarque: Un partage en DHCP est en préparation, je lis la doc
Les trucs à adapter: Les trois variables au début du script qui définissent votre interface Wifi, Lan, Modem,... qu'il vous faut adapter.
Bon, il est où le script? Le voici...
#!/bin/bash
#Script de Connexion de PC à PC.
## Attribution des Interfaces
#Interface Wifi
IWireless=eth1
#Interface Lan
ILan=eth0
#Interface Modem
IModem=ppp0
#########################################################################
## Verification des permissions root
if [ "$USER" != "root" ] ; then
zenity --error --text="Les droits d'administrateur n'ont pas été octroyés pour ce script. Veuillez le relancer avec les permissions root!" --title="Accès refusé"
exit
fi
#############################################################################
## Demande des Opérations à effectuer:
ACT=$(zenity --list --title "Opérations à effectuer" --text "Vous accedez à Internet:" --radiolist --width 480 --height 291 --column " " --column "Internet" FALSE "via Wifi" FALSE "via Lan" FALSE "via Modem" FALSE "Je n'accède pas à Internet" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
#############################################################################
# Execution des Opérations demandées
case "$ACT" in
"via Wifi" | "via Lan" | "via Modem" )
echo "[Activation du partage de connexion]"
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "[Chargement des modules du noyau]"
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
echo "[Lancement règles IPtables]"
/sbin/iptables -F FORWARD
/sbin/iptables -A FORWARD -j ACCEPT
case "$ACT" in
"via Wifi" ) interface=$IWireless name=Wifi ;;
"via Lan" ) interface=$ILan name=Lan ;;
"via Modem" ) interface=$IModem name=Modem ;;
esac
echo "[Activation de la redirection ($interface)]"
/sbin/iptables -A POSTROUTING -t nat -o $interface -j MASQUERADE ;;
"Je n'accède pas à Internet" ) name=None ;;
esac
###############################################################################"
if [ "$name" = "None" ]; then
texte="Vous souhaitez recevoir Internet par:"
else texte="Vous souhaitez partager Internet via:"
fi
ACT2=$(zenity --list --title "Opérations à effectuer" --text "$texte" --checklist --column " " --column "Partage via" TRUE "Wifi" FALSE "Lan" );
if [ "${PIPESTATUS[0]}" != "0" ]; then
exit
fi
#Execution des Opérations demandées.
Reception="Les Opérations sont terminées. Votre ordinateur accède à présent à Internet par le"
Redirection="Les Opérations sont terminées. Votre ordinateur partage sa connexion via le"
Exception="Il est impossible de rediriger la connexion vers cette interface car elle est occupée. Veuillez relancer le script et modifier les choix."
#Réception de la connexion
case "$ACT2" in
"Wifi" ) if [ "$name" = "None" ] ; then #Reception Par le WIFI
echo "[Mise en place d'une IP statique sur l'interface sans fil]"
sudo ifconfig eth1 192.168.1.2
echo "[Mise en place du réseau Ad-Hoc]"
sudo iwconfig eth1 mode Ad-Hoc essid Asus channel 11
echo "[Chargement des modules du noyau]"
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_nat
/sbin/modprobe iptable_filter
#[Ajout de la route par défaut pour accéder à Internet (la passerelle)]
echo "[Ajout de la route par défaut pour accéder à Internet (la passerelle)]"
route add default gw 192.168.1.1
echo "[Ne pas oublier de recopier le /etc/resolv.conf pour les serveurs DNS]"
#Fin du processus, Explication et cloture:
zenity --info --title="Opérations Terminées" --text="$Reception $ACT2."
exit
elif [ "$name" = "Wifi" ] ; then # Situation Impossible
zenity --error --title="Opérations Impossible" --text="$Exception"
exit
else #Redirection de la connexion Via le Wifi
echo "[Mise en place d'une IP statique sur l'interface sans fil]"
ifconfig eth1 192.168.1.1 netmask 255.255.255.0
echo "[Mise en place du réseau Ad-Hoc sur le channel 11]"
iwconfig eth1 mode Ad-Hoc essid Asus channel 11
#Fin du processus, Explication et cloture:
zenity --info --title="Opérations Terminées" --text="$Redirection $ACT2."
fi;;
"Lan" )
if [ "$name" = "None" ] ; then #Reception Par le LAN
echo "[Mise en place d'une IP statique sur l'interface filaire]"
ifconfig eth0 192.168.10.2
echo "[Ajout de la route par défaut pour accéder à Internet (la passerelle)]"
route add default gw 192.168.10.1
#Fin du processus, Explication et cloture:
zenity --info --title="Opérations Terminées" --text="$Reception $ACT2."
exit
elif [ "$name" = "Lan" ] ; then #Situation Impossible
zenity --error --title="Opérations Impossible" --text="$Exception"
exit
else #Redirection de la connexion par le Lan
echo "[Mise en place d'une IP statique sur l'interface filaire]"
ifconfig eth0 192.168.10.1
#Fin du processus, Explication et cloture:
zenity --info --title="Opérations Terminées" --text="$Redirection $ACT2."
fi;;
esac
exit
Pour lui donner les droits d'execution:
sudo chmod +x lenomdufichier
Postez des avis et des retours svp, pour essayer de faire progresser le script.
Daniel V.
Dernière modification par Vergeylen (Le 18/08/2007, à 08:27)
Hors ligne
#2 Le 13/08/2007, à 16:54
- Globulik
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Salut,
J'ai testé ton script et j'ai perdu la connection internet:
Network Manager ne m'a rien dit de spécial (pas de perte de connection) mais quand je veux surfer, pouf, plus rien du tout...
J'ai internet via ethernet et je voulais partager via le wifi...
voici mon cat/proc/bidule/chouette :
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 6336 74 0 0 0 0 0 0 6336 74 0 0 0 0 0 0
eth0: 3267641 7360 0 0 0 0 0 90 813724 4516 0 0 0 0 0 0
eth1: 0 0 0 8 0 0 0 0 3589 0 0 0 0 0 0 0
@ bientôt !
Dernière modification par Globulik (Le 13/08/2007, à 16:55)
Hors ligne
#3 Le 13/08/2007, à 17:18
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Salut!
Merci d'avoir testé!
J'ai modifié le code, normalement cela devrait fonctionner (je l'espère!)
Bonne soirée!
Daniel V.
Hors ligne
#4 Le 13/08/2007, à 18:35
- Globulik
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
J'ai réessayé:
C'est assez bizarre en fait :
Si j'essaie d'aller sur un site à partir d'une page vierge, ou en relançant firefox, ça ne marche pas. En revanche, le surf est possible sur les onglets déjà ouverts : par exemple j'avais un onglet avec google déjà lancé, puis j'ai lancé ton script, puis essayé de faire une recherche et ça marchais. Si je ferme l'onglet, en ouvre un autre et relance google, ça marche toujours. Maintenant si j'essaie un autre site qui n'était pas chargé avec de lancer ton script, et bien ça ne marche....
J'ai été assez clair ?
@ bientôt!
Hors ligne
#5 Le 13/08/2007, à 20:05
- reeth
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Intéressant, je testerai dans quelques temps. Merci de partager ton travail et bon courage
Hors ligne
#6 Le 15/08/2007, à 13:30
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour,
J'ai effectué des modifications au script, les interfaces sont à compléter au début du script, cela devrait fonctionner à tous les coups normalement.
Daniel
Hors ligne
#7 Le 28/08/2007, à 08:44
- Toufik
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Salut,
Je vais essayer ton script dès que j'ai le temps. J'ai aussi passé récemment pas mal de temps pour créer un réseau local sans fil via mon laptop et j'ai trouvé ce site qui pourrait t'aider: http://blog.theclimber.be/index.php?post/2007/05/29/Faire-un-relais-wifi-sur-Ubuntu
Hors ligne
#8 Le 28/08/2007, à 08:49
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Salut!
Merci de m'aider! Ce site à l'air très complet, je pense qu'il pourra bien m'aider pour le partage DHCP. CHouette
@ Bientôt!
Hors ligne
#9 Le 30/08/2007, à 10:56
- theClimber
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
content que mon tuto puisse vous aider ;-) Même si je pense pas qu'il soit parfait.
Think less, climb more
theClimber's blog
Hors ligne
#10 Le 13/12/2007, à 18:07
- Punkounet
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour à tous, ce script a l'air formidable... mais il me renvoie une erreur après la première fenêtre :
partage_internet: 28: Syntax error: Bad substitution
Je n'ai pas saisi toutes les subtilités du script et je ne comprends pas l'erreur. Quelqu'un pourrait-il m'aider ?
Au passage, ma configuration est la suivante :
- le PC (Ubuntu 7.10) se connecte via modem eci usb à Internet (PPPO)
- je partage via ethernet (ETH0)
Pour info, voici ce que me renvoi le ifcongig :
eth0 Lien encap:Ethernet HWaddr 00:08:54:09:AD:E4
adr inet6: fe80::208:54ff:fe09:ade4/64 Scope:Lien
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:124 erreurs:0 :0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:22030 (21.5 KB) Octets transmis:6985 (6.8 KB)
Interruption:16 Adresse de base:0x8000
eth0:avah Lien encap:Ethernet HWaddr 00:08:54:09:AD:E4
inet adr:169.254.7.244 Bcast:169.254.255.255 Masque:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
Interruption:16 Adresse de base:0x8000
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:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:0 (0.0 b) Octets transmis:0 (0.0 b)
ppp0 Lien encap:Protocole Point-à -Point
inet adr:77.202.103.25 P-t-P:77.202.103.1 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
Packets reçus:57 erreurs:0 :0 overruns:0 frame:0
TX packets:61 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:3
Octets reçus:35752 (34.9 KB) Octets transmis:6960 (6.7 KB)
vmnet1 Lien encap:Ethernet HWaddr 00:50:56:C0:00:01
inet adr:172.16.251.1 Bcast:172.16.251.255 Masque:255.255.255.0
adr inet6: fe80::250:56ff:fec0:1/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:25 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)
vmnet8 Lien encap:Ethernet HWaddr 00:50:56:C0:00:08
inet adr:172.16.228.1 Bcast:172.16.228.255 Masque:255.255.255.0
adr inet6: fe80::250:56ff:fec0:8/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:24 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)
Merci pour votre aide précieuse et le boulot
#11 Le 14/12/2007, à 21:49
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour,
Ravi que le script puisse servir . Pour ce qui est de l'erreur, c'est un petit peu curieux. En fait, cela signifie que la ligne 28 possède une erreur de syntaxe, quelque chose de mal orthographié (d'un point de vue code). Mais chez moi, lorsque j'exécute le script, il ne bug pas à cette étape.
Un truc tout bête: Etes-vous sûr d'avoir correctement copié le script? Je dis ça, cela peut paraitre stupide, mais c'est déjà arrivé.
Autre chose: Avez-vous bien mis les noms des interfaces en minuscule? Je veux dire, eth0 et pas ETH0? C'est possible que le script soit sensible à la casse.
Je suis désolé de ne pas pouvoir vous aider plus pour le moment, mais c'est parce que le diagnostique est malheureusement est un peu pauvre (la console n'est pas assez bavarde on dirait... ).
Un petit retour d''expérience?
On trouvera!
@+
Daniel V.
Hors ligne
#12 Le 10/03/2008, à 19:25
- jmoreau
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
bonsoir après l'execution du script sans droit d'administrateur et avoir répondu au question le partage de connexion ne semble pas fonctionner.
Faut-il attribuer des adresses ip spécifique au carte réseaux ? si oui lesquelles.
Hors ligne
#13 Le 11/03/2008, à 08:37
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour,
Non, il ne faut pas donner d'adresses IP spécifiques mais bien signaler quelles sont les interfaces pour le LAN, le Wifi, ...
Voici la façon de procéder :
Il suffit de remplacer les lignes :
#Interface Wifi
IWireless=eth1
#Interface Lan
ILan=eth0
#Interface Modem
IModem=ppp0
Avec (dans la configuration par défaut ) L'interface sans fil reconnue comme étant "eth1", celle du Lan comme "eth0" et me modem "ppp0". Ces noms varient selon les ordinateurs. Pour savoir quelles sont les noms des interfaces vous correspondant je vous suggère de taper dans un terminal :
iwconfig
qui vous donne les interfaces sans fil (la réponse est quelque chose comme ceci:
lo no wireless extensions.
eth0 no wireless extensions.
eth1 IEEE 802.11g ESSID:"DAVIST2"
Mode:Managed Frequency:2.462 GHz Access Point: 00:C0:49:FC:05:86
Bit Rate:54 Mb/s Tx-Power:15 dBm
Retry limit:15 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=84/100 Signal level=-50 dBm Noise level=-50 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:161 Missed beacon:0
Ici, l'interface de connexion sans fil est eth1.
Pour l'interface LAN, il suffit de taper :
ifconfig
qui vous donnera le nom de toutes les interfaces possibles (mais vous savez déjà le nom de votre interface sans fil ). Chez moi cela donne:
eth0 Lien encap:Ethernet HWaddr 00:17:31:F4:E3:B3
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:16 Adresse de base:0xc000
eth1 Lien encap:Ethernet HWaddr 00:13:02:9B:51:8B
inet adr:192.168.1.4 Bcast:192.168.1.255 Masque:255.255.255.0
adr inet6: fe80::213:2ff:fe9b:518b/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:9103 erreurs:17 :179 overruns:0 frame:0
TX packets:5575 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:11307998 (10.7 MB) Octets transmis:509364 (497.4 KB)
Interruption:18 Adresse de base:0xc000 Mémoire:fe1ff000-fe1fffff
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:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
Octets reçus:0 (0.0 b) Octets transmis:0 (0.0 b)
Mon interface filaire est donc "eth0".
Remarque : "lo" n'est jamais une interface filaire ou sans fil.
Un fois les bons champs remplacés dans le script, il devrait un peu mieux fonctionner.
En espérant avoir pu vous aider,
Daniel V.
EDIT : et en root, cela donne quoi? Je ne me souviens plus si firestarter peut être modifié sans les droits d'admin.
Dernière modification par Vergeylen (Le 11/03/2008, à 08:39)
Hors ligne
#14 Le 11/03/2008, à 14:14
- jmoreau
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
merci je m'en suis rendu compte après avoir posé ma question se point la et réglé.
Le script doit s'utiliser sur le pc qui recois internet et sur celui avec qui il doit partager internet ?
A un moment dans le script vous parlez de
#[Ajout de la route par défaut pour accéder à Internet (la passerelle)]
echo "[Ajout de la route par défaut pour accéder à Internet (la passerelle)]"
route add default gw 192.168.1.1
echo "[Ne pas oublier de recopier le /etc/resolv.conf pour les serveurs DNS]"
Faut-il recopier ce qui est demandé ?
Hors ligne
#15 Le 11/03/2008, à 21:54
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
merci je m'en suis rendu compte après avoir posé ma question se point la et réglé.
Chouette
Le script doit s'utiliser sur le pc qui recois internet et sur celui avec qui il doit partager internet ?
Sur les deux.
Celui qui partage:
"Je reçois internet via le lan" (par exemple)
"Je partage internet via le wifi" (par exemple)
Sur celui qui reçoit:
"Je ne reçois pas Internet"
"Je souhaite Internet via e wifi" (par exemple)
echo "[Ne pas oublier de recopier le /etc/resolv.conf pour les serveurs DNS]"
Faut-il recopier ce qui est demandé ?
En fait, il est possible que le PC qui reçoit internet ait bien accès à des adresses IP (genre 123.123.1.1) et que les ping fonctionnent mais qu'il n'arrive pas à accéder à www.google.be . Ceci est du au fait que l'ordinateur doit se connecter à un routeur (dont l'adresse IP est contenue dans le /etc/resolv.conf) qui "traduit" www.google.be en une l'IP correspondante. Dans mon cas, cela arrive que ce fichier ne soit pas correctement configuré sur le PC qui reçoit Internet. Le plus simple est de le recopier depuis celui qui partage. Ceci dit, le contenu de ce fichier ne change jamais, sauf quand vous changez de réseau et donc de fournisseur d'accès.
Remarque: recopier le fichier /etc/resolv.conf est absolument sans danger pour les configurations futures. Si vous changez de réseau, votre ordinateur (Network Manager en l'occurence) modifiera le fichier.
Bonne soirée,
Daniel V.
Hors ligne
#16 Le 13/03/2008, à 12:58
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Jmoreau --> des news? Ca marche?
Hors ligne
#17 Le 31/01/2009, à 13:38
- yakusa77
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Salut
je relance ce tres vieux post pour savoir si le script est toujours maintenu ? et comment fonctionnait il ? parce que je l'ai executé sur deux machines (evidement je l'ai modifié en concequence niveau interface) visiblement il ne fonctionne pas sur intrepid , mais sur hardy je n'es eu aucune erreur. une fois que le script à été lancé sur les deux machines que faut il faire ? la machine qui partage sa connexion , la reçoit par une interface ethernet et redirige en wifi par une clef (qui fonctionne evidement) puis j'execute le script sur mon portable et a la fin du script il tente une connexion mais elle echoue . j'espere que vous pourrez me repondre merci d'avance
De vraies interfaces graphique pour vos scripts shell
"Précise 64" | AMD phenom II x4 black édition 965
Hors ligne
#18 Le 01/02/2009, à 17:01
- Vergeylen
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
Bonjour,
Pouvez-vous nous dire qu'en est-il du fichier resolv.conf sur le PC qui recoit? Est-il le même que sur le PC qui partage? (le script ne le fait pas automatiquement). Il est possible que vous ayez accès à internet mais que vous n'ayez pas connaissance des fichiers de DNS.
Couper Network Manager peut s'avérer utile car il se permet parfois des libertés un petit peu ennuyeuses.
Avez vous le firewall activé? Peut-être est-il en train de protéger un accès (normalement le script modifie les entrées pour justement permettre de passer le firewall). Un petit sudo ufw disable pour tester?
Si problème, j'utilise une version un peu modifiée (qui fonctionne sous hardy, je ne suis pas sous Intrepid) disponible ici. Il vous faudra à nouveau le modifier quelque peu.
Bonne Chance,
Daniel V.
Hors ligne
#19 Le 18/10/2011, à 12:02
- hdzpeter
Re : [SCRIPT] Le Partage de Connexion Internet Facile!
salut a tous
je viens de tomber sur le script, je n'ai pas encore testé mais j'ai une question?
je voudrais partager la connexion internet de mon pc portable avec mon téléphone portable sous android. je suis conecté a internet via un modem de type Sagem fast 1201, le hic c'est que, quand je vais sur network manager pour activer la partage tel que décri ici
j'ai suivi ce tuto pour débrider mais rien a faire.
en fait quand je vais a l'onglet DSL de network manager l'onglet partage qui doit se trouver dans parametres ipv4 n'est pas disponible
Est ce que le script pourrait m'aider a cela
merci
Hors ligne