Partage de connexion Internet entre 2 PC

Bonjour.

J’ai un cas assez simple à vous présenter, mais après de longue tentatives infructueuses issues de recherches sur Internet, je ne trouve pas comment faire.
J’ai un PC (qu’on va appeler PC-Hôte pour mieux se comprendre) sous Debian Wheezy avec deux cartes réseau : wlan0, le WiFi auquel je suis connecté à Internet, et eth0.
J’ai un autre PC (qu’on va appeler PC-Client pour mieux se comprendre), aussi sous Debian Wheezy, avec une interface réseau : eth0.

Donc je cherche à ce que PC-Hôte soit connecté à Internet via la connexion wlan0, et qu’il partage cette connexion à PC-Client via l’interface eth0. Bien entendu, les deux machines sont reliées directement entre elles via un câble RJ45.

Globalement, ce que j’ai fait (et qui n’a pas fonctionné) et dans cet ordre :

  • Activer eth0 sur PC-Hôte et lui attribuer l’IP 192.168.1.1.
  • Activer le routing : echo 1 > /proc/sys/net/ipv4/ip_forward
  • Activer le mode masquerade : iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
  • Activer eth0 sur PC-Client et lui attribuer l’IP 192.168.1.2.

PC-Hôte peut faire des pings à PC-Client (ping 192.168.1.2).
PC-Client peut faire des pings à PC-Hôte (ping 192.168.1.1).
Tout naturellement, sur PC-Hôte, quand je ping par exemple Google, ça fonctionne, mais sur PC-Client, il ne trouve pas Google.

J’ai tenté de tripoter le /etc/resolv.conf sur PC-Client (j’ai mis la même chose que sur PC-Hôte), mais ça change rien.

Merci d’avance pour votre aide.

Hello,

dans le temps j’avais vu un script tout prêt, exactement pour tes besoins, mais la page web a disparu… :confused:

sinon, de la doc ici, à adapter pour ta configuration

formation-debian.via.ecp.fr/firewall.html

Je voulais faire qq chose comme ça avant de me rabattre sur CPL, dans mes notes j’ai ça :
linuxquestions.org/questions … es-369455/
Attention langue albionne !

[quote=“Xorg”]

  • Activer le mode masquerade : iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    [/quote]cette ligne seule ne suffit pas.
    il faut FORWARDer les paquets entre les 2 interfaces, par exemple :
IPTABLES=$(which iptables)

$IF_IN="wlan0"
$IF_OUT="eth0"

sysctl -w net.ipv4.ip_forward=1
$IPTABLES -F
$IPTABLES -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $IF_IN -j MASQUERADE

$IPTABLES -A FORWARD -i $IF_IN -o $IF_OUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $IF_OUT -o $IF_IN -j ACCEPT

Bonsoir et merci pour ta réponse.

J’ai oublié de le préciser, je n’utilise pas de pare-feu. Donc je peux sauter une bonne partie des commandes iptables. Ensuite, je vois que c’est dans le cas d’une configuration permanente, et je n’ai pas précisé, mais je n’ai pas besoin que ça soit permanent. :slightly_smiling:

Cela dit, je vois qu’une IP est assignée manuellement à l’interface connectée en local. C’est ce que j’ai fait avec ifconfig, mais je n’ai pas définit de netmask et de broadcast (il me semble qu’ils ont été configurés automatiquement). Est-ce que ça peut être ça ?
En ayant lu plusieurs choses différentes sur le sujet, je cois qu’il n’y a pas de manipulation à faire sur le PC Client ; ça m’étonne un peu, car quand on branche un câble RJ45 sans rien configurer, l’interface n’est pas utilisable, donc je ne vois pas comment ça peut fonctionner. :blush:

[quote=“debianhadic”]Je voulais faire qq chose comme ça avant de me rabattre sur CPL, dans mes notes j’ai ça :
linuxquestions.org/questions … es-369455/
Attention langue albionne ![/quote]
Je viens de regarder, le type à l’air d’utiliser un pont. J’ai effectivement tenté cette méthode à un moment (vu ici, mais la commande brctl addif br0 n’a pas voulu fonctionner car visiblement le WiFi ne serait pas supporté par ça. :confused:

[quote=“agentsteel”][quote=“Xorg”]

  • Activer le mode masquerade : iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    [/quote]cette ligne seule ne suffit pas.
    il faut FORWARDer les paquets entre les 2 interfaces[/quote]
    D’accord, merci, je vais essayer ça.

[quote=“agentsteel”]$IF_IN="wlan0" $IF_OUT="eth0"[/quote]
Il me semble que ça devrait plutôt être ceci :

IF_IN="wlan0" IF_OUT="eth0"
:stuck_out_tongue:

Bon, j’ai essayé, et toujours pas : “unknown host www.google.com”…
J’ai lancer toutes les commandes sur le PC Hôte via un script, mais j’ai activé eth0 et attribué une IP sur le PC Client. Ai-je oublié une étape ?

D’ailleurs, je ne sais pas si c’est important, mais bien que je sois connecté en WiFi à Internet, je dois utiliser OpenConnect, ce qui créé un tunnel (tun0). Sans tunnel, en effet, je ne peux avoir accès à Internet.

j’ai de vagues souvenirs de discussion avec des copains qui administraient le réseau à l’école, et il me semble que pour connecter directement deux PC il faut un câble RJ45 différent. Il existe en effet les câbles dits « droits » et les « croisés », l’un permettant de connecter une machine à un serveur et l’autre deux machines (et peut-être même deux serveurs) entre elles.

Je ne saurai t’en dire plus, mais c’est peut-être une piste à creuser.

[quote=“Coq”]j’ai de vagues souvenirs de discussion avec des copains qui administraient le réseau à l’école, et il me semble que pour connecter directement deux PC il faut un câble RJ45 différent. Il existe en effet les câbles dits « droits » et les « croisés », l’un permettant de connecter une machine à un serveur et l’autre deux machines (et peut-être même deux serveurs) entre elles.

Je ne saurai t’en dire plus, mais c’est peut-être une piste à creuser.[/quote]
Vu que les 2 PC se ping ça ne doit pas être le problème je pense.

Sinon je ne sais pas trop comment paramétrer ça mais as-tu bien configuré le PC client pour lui indiquer comme passerelle 192.168.1.1?
Regarde dans /etc/network/interfaces sur le PC hôte et adapte la conf sur le PC client (genre qu’il y ai bien le network, netmask et compagnie), mais bon si tu ping c’est bizarre c’est que ça doit être bien configuré…

[quote=“Xorg”][quote=“agentsteel”]$IF_IN="wlan0" $IF_OUT="eth0"[/quote]
Il me semble que ça devrait plutôt être ceci :

IF_IN="wlan0" IF_OUT="eth0"
:stuck_out_tongue:
[/quote]anéfé :wink:

[quote]
D’ailleurs, je ne sais pas si c’est important, mais bien que je sois connecté en WiFi à Internet, je dois utiliser OpenConnect, ce qui créé un tunnel (tun0). Sans tunnel, en effet, je ne peux avoir accès à Internet.[/quote]
et bien remplace wlan0 par tun0 dans ta config iptables

Pour info à Coq & chmux, à voir : Auto-MDIX

Oui c’est le principe de la carte réseaux qui s’auto-adapte au câble! :033
Donc si ça ping c’est bien bon nan? :smiley:

Si ping est bon, c’est que tout va bien côté liaison, mais est-ce que PC-Client (192.168.1.2) a bien été configuré avec “gateway 192.168.1.1” ?
Parce qu’en fait, PC-Hôte est la passerelle qui permet à PC-Client d’accéder à l’internet,
après, c’est à PC-Hôte de se débrouiller pour renvoyer sur l’autre réseau tout ce qui ne concerne pas le réseau 192.168.1.0/??
les “??”, c’est parce que je sais même pas quel est le masque(netmask) qui a été choisi. En espérant que c’est le même qui a été paramétré sur les deux interfaces qui sont connectées, et qui pourront ainsi communiquer dans le même réseau.

EDIT: J’ai pas tout lu, il faudrait peut-être refaire un bilan de la configuration actuelle des deux interfaces réseau,
vu les modifs qui ont été faites (ou pas…) le long de ce fil.

Me revoilà. En effet MicP, tu avais raison, je n’avais pas configuré de passerelle.

Donc sur le PC Client, j’ai effectué ceci :

ip link set $IF_IN up ifconfig $IF_IN 192.168.1.2 route add default gw 192.168.1.1
Où $IF_IN est l’interface sur laquelle on veut recevoir la connexion Internet, et 192.168.1.1 est l’IP du PC Hôte.

Et du fait que j’avais une Debian installée avec les pieds sur cette machine (installation avec l’ISO type NetInstall, mais sans connexion Internet, donc je n’avais pas une Debian “de base” vu qu’il manquait certains paquets essentiels), j’ai eu quelques soucis de DNS à résoudre (réinstaller et reconfigurer proprement resolvconf), mais je pense que ça m’était spécifique, donc tout va bien.

Mis à part ça, à retenir pour ceux qui tomberont peut-être sur ce topic et qui cherchent la solution :

  • Si le PC Client peut pinger le PC Hôte, c’est que la connexion entre les deux machines est correctement établie
  • Si le PC Client ne peut pas pinger un nom de domaine, tel ping www.google.com (super exemple…), il y a un soucis quelque part
  • Si le PC Client peut pinger une machine directement via son IP, tel ping 8.8.8.8, c’est que le problème vient en effet du DNS (voir du côté de resolvconf)

Et c’est ainsi que s’achève ce problème. Je vous remercie tous pour votre précieuse aide, bonne journée à vous. :slightly_smiling:

1 J'aime