Partage connexion internet entre 2 PC

Bonjour,

Ma freebox en panne, je me connecte à un hotspot FreeWifi de mon voisinage via le site wifi.free.fr, avec mon PC portable et mes idenntifiants de connexion hotspot FreeWifi

J’ai également un PC fixe, qui n’a pas de carte wifi. Je me demandais comment faire de mon portable une passerelle pour mon fixe puisse accéder au net, via un cable ethernet.

J’ai lu ce tutoriel http://www.b3nz3n.be/partage-de-connexion-wifi-sous-debian/ mais le problème c’est que le routeur de la Freebox sur laquelle je me connecte m’attribue bien évidemment une IP dynamique.

Il y a une solution je suppose. Je vous remercie de bien vouloir m’aider :slight_smile:

Bonne journée

Salut
Il faut paramétrer netfilter sur le portable pour qu’il nate les connexions venant du fixe, et activer le partage de connexion, puis sur le fixe, dire que la passerelle est l’ip de la carte Ethernet du portable.
Le fait que la freebox attribue une ip variable à l’interface wifi de ton portable n’a pas d’importance, il suffit de donner une ip fixe aux cartes Ethernet du portable et du fixe et ca bouge plus.
:006

Merci de ta réponse.
Mais comment on fait tout ca. Je suis pas bon en reseau moi ! :slight_smile:

a+

il te faut faire un petit script iptables dans ce genre, et l’exécuter sur la passerelle (je dis que ton interface wifi est wlan0, tu adapteras):

#!/bin/bash

iptables -t filter -P INPUT DROP    # refuse trafic entrant		
iptables -t filter -P OUTPUT ACCEPT   # autorise trafic sortant		
iptables -t filter -P FORWARD ACCEPT  # autorise nat

# Initialisation de la table NAT
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

# Initialisation de la table MANGLE
iptables -t mangle -F
iptables -t mangle -X 
iptables -t mangle -P PREROUTING  ACCEPT
iptables -t mangle -P INPUT       ACCEPT
iptables -t mangle -P OUTPUT      ACCEPT
iptables -t mangle -P FORWARD     ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT

iptables -F # Supression de toutes les règles existantes
iptables -X # Supression de toutes les chaines existantes

#acceptation du trafic entrant sur la passerelle relatif à des connexions déjà établies
iptables -A INPUT -i wlan0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#nat du trafic venant du pc fixe
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

#activation du partage de connexion
echo 1 > /proc/sys/net/ipv4/ip_forward

ensuite, faut configurer la passerelle du pc fixe avec l’ip de l’interface ethernet du portable.

Deja il faudrait que je comprenne comment faire un reseau LAN avec 2 PC via un cable ethernet avant de comprendre ce que tu me dis.

J’ai donc cherché sur le net.
J’ai donné des IPs fixes et des noms à mes 2 PCs

POUR LE PC FIXE (uniquement carte ethernet),

-Le fichier /etc/hosts :

127.0.0.1 localhost 127.0.1.1 dell 192.168.0.2 eeepc

-Le fichier /etc/network/interfaces :

[code]auto lo
iface lo inet loopback

reseau local

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255

[/code]Pour le PC portable (CARTE ETHERNET+CARTE WIFI)

-Le fichier /etc/hosts

127.0.0.1 localhost 127.0.1.1 eeepc 192.168.0.2 dell

-Le fichier /etc/network/interfaces :

[code]auto lo
iface lo inet loopback

reseau local

auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255

Wifi

On s’en fout pour le moment

[/code]

Sur le eeepc :

OK

Sur le dell :

OK

Que faire maintenant ?

Tes /etc/hosts sont incohérents avec tes /etc/network/interfaces.

Si tu as dans etc/hosts du pc fixe : 192.168.0.2 eeepc
tu peux pas avoir dnas etc/network/interfaces du eeepc : address 192.168.0.1
Enfin, si, tu peux ^^, y a rien qui va contrôler la cohérence et faire un message d’erreur, mais ca ne veut plus rien dire, surtout si tu commences à utiliser les hostname pour pinguer les machines : on ne sait plus vraiment ce qui répond :108

De même, sur un même segment réseau, tu ne peux pas avoir 2 pcs qui ont la même adresses ip (ce qui à l’air d’être le cas chez toi) : address 192.168.0.1 dans les 2 fichiers d’interfaces.

Ce sont peut être des erreurs de copié/collé ?

De plus, il faut rajouter une ligne dans le /etc/network/interfaces du fixe :

gateway 192.168.0.1 (ou 2 en fonction de comment tu corrigeras tes fichiers)

Il faut aussi un câble réseau croisé, si les machines sont reliées directement.
Un câble droit est OK si t’a un mini hub/switch entre les 2.
:006

C’est une erreur de copié collé :

LES LIGNES IMPORTANTES DES FICHIERS /etc/network/interfaces :
-fixe “dell”

[code]address 192.168.0.2

passerelle (correspondant à l’ip fixe du portable “eeepc”)

gateway 192.168.0.1
[/code]-portable “eeepc”

address 192.168.0.1

LES LIGNES IMPORTANTES DES FICHIERS /etc/hosts
-Pour le fixe “dell”

192.168.0.1 eeepc -Pour le portable “eeepc”

192.168.0.2 dell
=> Les 2 PCs sont reliés directement par un cable ethernet.
=> Les ping marchent bien. Ça veut dire que mon cable ethernet est bien croisé ?
=> Pour la passerelle, c’est possible de mettre dans le /etc/network/interface du fixe “dell” :

gateway eeepc au lieu de

gateway 192.168.0.1 ?
=> Si tout est bon, je dois faire quoi pour faire transiter les données arrivant du portable “eeepc” de son interface wlan0 vers son interface eth0 ? C’est là qu’interviennent les règles d’iptables ?

Merci de ton aide en tout cas. J’apprends des choses bien intéressantes en matière de réseau.

Si les 2 pc se pinguent, c’est que le cable est bien croisé et que c’est bon niveau adressage.
Je ne sais pas si mettre un hostname au lieu d’une ip va fonctionner, pour la gateway (je pense pas, mais jms essayé). Il faut que tu testes.
Une fois que tout est OK, oui, c’est la qu’intervient netfilter et le partage de connexion.
:024

Pour être éducatif, supposons que :

I) On allume le pc fixe “dell” en 1er

II) On allume (ensuite) le portable “eeepc”:

  1. On connecte le “eeepc” au web,
  2. On execute le script bash pour les iptables.
    L’ordre 1) puis 2) est important je suppose ?

Question :
Le fixe “dell” est-il automatiquement connecté au web aussi ? (son interface eth0 étant auto)
Ou faut-il lancer :

ifup eth0?

l’ordre 1 puis 2 est important : pour eviter les trous de sécurité, le script iptables devrait être lancé juste avant (mais comme on a rien prévu pour le dhcp, tu risques d’avoir un problème pour te faire attribuer une adresse ip par la freebbox si le pare feu tourne, donc commence par le lancer apres la connexion pour tester).
Mais de toute façon, cette étape peut être automatisée :

  • par exemple si tu utilise un gestionnaire de connexion comme network-manager pour gérer le wifi : il y a un répertoire /etc/Networkmanager/dispatcher.d qui, si on modifie un peu le script et qu’on le place dedans, peut lancer le pare feu au moment de la connexion à un réseau.
  • si ton wifi est configuré via /etc/network/interfaces, faut placer le script dans /etc/network/if-pre-up.d/, modifier un peu /etc/network/interfaces pour appeler le script et idem, il sera lancé juste avant le montage de l’interface

Normalement, les interfaces qui sont en auto dans le fichier d’interfaces sont lancées durant le boot, donc pas besoin de les lancer à la main.

Commence simple : t’a tout le temps d’affiner et automatiser quand le basique marchera.

Pour donner eeepc comme nom a son PC c’est bien dans /etc/hosts

127.0.1.1 eeepc ?
Car les PCs ne veulent plus se pinger (dans les 2 sens)

Sur le “eeepc” lorsque je fais

# ifconfig eth0 L’adresse IP est de type v6 est n’est pas de la forme xxx.xxxx.x.x (ici ca devrait etre 192.168.0.1)

(Pas de soucis pour que le “dell” se ping lui meme en tout cas, l’adresse IP est bien de type V4, 192.168.0.2)

J’ai l’impression que c’est intervenu apres lancement de :

./script-iptables.sh

Une idée ?

C’est normal, on n’a aucune autorisation dans le script pour eth0, on s’est occupé uniquement de wlan0, et du routage. En gros, le portable ne peut plus recevoir ce qui lui est directement destiné sur eth0.
Faut rajouter des règles pour eth0.

# ./le_script.sh bad argument state
(je parle des regles pour le ping)

il lui faut les droits d’exécution (chmod +x le_script - pas obligé de lui donner l’extension sh d’ailleur) et il doit être exécuté en root

[quote=“rzawutang44”]# ./le_script.sh bad argument state
(je parle des regles pour le ping)[/quote]

T’as mis quoi comme règles ? j’ai fait un bête copié collé de ma règle dans laquelle l’interface est sous forme de variable $1, ca doit être pour ca :mrgreen:
Mais ca suffit pas c’est pour ca que j’ai édité mon message.

Je t’y prends, à faire des copiés/collés sans regarder, et les executer, hein ! :005

ils correspondent à quoi les $1 , donc ? eth0 je suppose

Ben, çà dépend de l’interface utilisée au moment ou t’es connecté, dans ton cas, à rien car tu ne te sers pas de network-manager, donc l’argument ne vaut rien, il ne fonctionne que si le script est dans le répertoire dispatcher.d de network-manager : ca permet d’éviter de mettre en dur les noms des interfaces, et d’adapter à la volée les règles du pare feu en fonction de l’interface réseau utilisée (ce qui peut être utile lorsqu’on est nomade, ou on utilise tantôt le wifi tantôt l’Ethernet) sans avoir à réécrire les règles pour chacune d’elle.

Si, je me sers de wicd(-gtk) pour me connecter sur un hotspot FreeWifi. C’est pas forcement toujours le meme spot d’ailleurs, y en a 2 ou 3 autour de chez moi.

Bref bref bref !!
C’est quoi les regles a ajouter dans le script pour que les 2 eth0 puissent communiquer (faire un ping par exemple)

Merci bien :slight_smile:

Oui, mais même si les hotspots changent peu importe: tu t’y connectes toujours avec la même interface wlan0. Donc inutile de mettre des variables dans le script iptables.

[quote=“rzawutang44”]
Bref bref bref !!
C’est quoi les regles a ajouter dans le script pour que les 2 eth0 puissent communiquer (faire un ping par exemple)

Merci bien :)[/quote]
Pour le que fixe et le portable puissent se pinguer, rajoute ces lignes dans le script :

iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p icmp -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.0.0/24 -p icmp -j ACCEPT 

ou bien, pour tout autoriser :

iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.0.0/24 -j ACCEPT 

edit : rajoute ca aussi, c’est important :

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

J’ai trouvé 2 script sur le net : /etc/network/if-pre-up.d/lescript-start et /etc/network/if-post-down.d/lescript-stop

Ils sont appelés automatiquement via le fichier /etc/network/interfaces (boucle locale)

auto lo iface lo inet loopback pre-up /vers/le/script/de/lancement post-down /vers/le/script/d/arret

Les pc se pingent correctement apres lancement du firewall si je fais un # /etc/network restart
Mais le fait de faire un restart tue ma connexion internet.

Il doit y avoir un pb entre le fichier /etc/network/interfaces et le manager wicd.
J’ai rien concernant wlan0 dans mon fichier /etc/network/interfaces, c’est peut etre pour ca que ca pose problème.