Connection Ethernet entre 2 PC

2 Linux

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J'essaye de mettre en place une connection Ethernet entre 2 PC. Pour ça, j'ai un câble RJ45 droit et le croiseur/décroiseur. J'aimerais que l'un des ordis (l'ordinateur portable) puisse créer un réseau, de 2 ordinateurs, qu'ils puissent alors communiquer ensemble. Le but étant l'échance de donnée, j'ai ensuite un serveur HTTP fait avec Python. Les 2 PC de teste sont sur ArchLinux, mais j'aimerais que le PC client n'ait pas besoin d'installation (si possible).

Donc j'ai alors 1 pc sur lequel je lance un serveur DHCP. Je le lance de la sorte :

1
2
3
4
ache@port: sudo ip link set up dev enp4s0
ache@port: sudo ip addr add 10.00.00/24 dev enp4s0
ache@port: sudo dhcpd enp4s0
ache@port: sudo python -m http.server 80

J'accède bien au serveur HTTP en localhost. L'autre PC utilise simplement : 'sudo dhcpcd enp4s0' (où enp4s0 est l'interface sur laquelle le cable est branché). J'obtient bien une adresse IP. Cependant, pas moyen d'accéder au serveur HTTP. Rien n'est disponible.

En effectuant plusieurs testes, je me suis rendu compte que sur le PC d'une amie ( Windows ) le serveur HTTP est accécible à l'adresse "10.0.0.0".

Avec vous une idée d'où peut bien venir le problème ?

Voici le fichier de configuration du serveur DHCP :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 ddns-update-style none;¬                                                                                  
 ignore client-updates;¬
 authoritative;¬
 option local-wpad code 252 = text;¬
 ¬
 subnet 10.0.0.0 netmask 255.255.255.0 {¬
   option routers 10.0.0.1;¬
   option subnet-mask 255.255.255.0;¬
   option broadcast-address 10.0.0.255;¬
   option domain-name-servers 10.0.0.1, 8.8.8.8, 8.8.4.4;¬
   option time-offset 0;¬
   range 10.0.0.6 10.0.0.13;¬
   default-lease-time 1209600;¬
   max-lease-time 1814400;¬
 }¬

Ainsi que le fichier /var/lib/dhcp/dhcpd.lease avec 3 ordis de teste. Un sous Arch, l'autre sous Windows, l'autre sous Ubuntu :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.2

lease 10.0.0.6 {
  starts 5 2015/08/21 21:23:14;
  ends 5 2015/09/04 21:23:14;
  cltt 5 2015/08/21 21:24:27;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 41:AdresseMac;
  uid "\HHHHHH\000\000\000\000\022\224\DHDHH[131c";
  set vendor-class-identifier = "dhcpcd-6.9.1:Linux-4.1.5-1-ARCH";
}
lease 10.0.0.10 {
  starts 5 2015/08/21 21:44:39;
  ends 5 2015/09/04 21:44:39;
  cltt 5 2015/08/21 21:44:39;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 22:AdresseMac;
  uid "\002H[9A5c";
  set vendor-class-identifier = "MSFT 5.0";
  client-hostname "PC";
}
lease 10.0.0.7 {
  starts 6 2015/08/22 11:32:08;
  ends 6 2015/09/05 11:32:08;
  cltt 6 2015/08/22 11:32:08;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 05:AdresseMac;
  set vendor-class-identifier = "PXEClient:Arch:1111:UNDI:112002";
  client-hostname "ubuntu-Precision-WorkStation";
}

Merci d'avoir pris le temps de me lire. Si vous avez une architechture différente que celle que je souhaite faire, n'hésiter pas à m'en faire part. J'ai fais comme il me semblait le plus logique/simple de le faire .

ache.one                                                                                   🦊

+0 -0

Cette réponse a aidé l'auteur du sujet

Je vais reprendre depuis le début :

  • tu as un PC portable Archlinux (PC A) avec un serveur web dessus
  • tu as un autre PC avec un autre OS (PC B)
  • tu as un câble et un croiseur/décroiseur
  • tu veux que les deux PCs échangent des données sans que le PC B n'ait à être configuré.
  • je suppose également que les deux ordinateurs ne sont connectés à aucun autre réseau en même temps.

C'est bien ça ?

Si j'ai bien compris la doc, tu t'es trompé dans la configuration du PC portable :

sudo ip addr add 10.00.00/24 dev enp4s0

Sauf erreur de ma part cette adresse n'est pas une adresse de station mais une adresse de réseau :
- 10.0.0.0/24 est un réseau
- 10.0.0.4/24 (par exemple) est une adresse

Commence par corriger ça. Ça peut poser des problèmes d'avoir une adresse de réseau qui soit donnée à une station : cette adresse fait partie de celles qu'on ne devrait jamais assigner à une machine, l'autre adresse à ne jamais assigner étant celle de diffusion.

Ensuite, est-ce que tu peux nous donner :
- l'adresse IP du serveur (PC portable ?)
- l'adresse IP du PC B ? Celle-ci doit être obtenue par DHCP.

Vérifie qu'ils se pingent bien : si ils sont dans le même réseau, qu'il n'y a pas de routeur ou un autre équipement qui fait de la configuration réseau (par exemple un 2ème serveur DHCP), ça doit marcher.

On s'occupera ensuite du serveur HTTP.

Je laisse volontairement de côté le PC de ton amie sous Windows.

+2 -0
Auteur du sujet

Je vais reprendre depuis le début :

  • tu as un PC portable Archlinux (PC A) avec un serveur web dessus
  • tu as un autre PC avec un autre OS (PC B)
  • tu as un câble et un croiseur/décroiseur
  • tu veux que les deux PCs échangent des données sans que le PC B n'ait à être configuré.
  • je suppose également que les deux ordinateurs ne sont connectés à aucun autre réseau en même temps.

C'est bien ça ?

Très bon résumé.

Je me suis effectivement bel et bien embrouillé avec les '0' et les '.' dans l'adresse de réseau, lors du copier/coller malheureusement. Du coup le problème est le même.

Ensuite, est-ce que tu peux nous donner :
- l'adresse IP du serveur (PC portable ?)
- l'adresse IP du PC B ? Celle-ci doit être obtenue par DHCP.

Tu touches le cœur du problème je pense. L'adresse IP du client (PC B, le pc portable) est très souvent 10.0.0.6. L'adresse du serveur, je n'en ai aucune idée :s Pour moi, ça devrait être 10.0.0.1. Car c'est l'adresse que j'ai entré dans la config de dhcpd. Mais je ne suis pas sûr de moi.

De plus, depuis le client, le ping vers 10.0.0.1 échoue lamentablement. Le ping vers 10.0.0.0 me propose un ping broadcast. Vers 10.0.0.6 ça marche normalement.

Depuis le serveur, seul le ping vers 10.0.0.0 fonctionne … Quand le ping échoue, peu importe le pc, j'ai ça jusqu'à ce que je le kill :

1
From 10.0.0.0 icmp_seq=11 Destination Host Unreachable

Avec l'IP du From qui change entre 10.0.0.0 et 10.0.0.6.

Merci de m'aider. À deux (ou plus) on arrivera certainement à résoudre le problème.

Édité par ache

ache.one                                                                                   🦊

+0 -0

Cette réponse a aidé l'auteur du sujet

  • 10.0.0.0/24 est un réseau
  • 10.0.0.4/24 (par exemple) est une adresse

En fait non, les deux sont des réseaux.

  • 10.0.0.0 est une adresse, celle du réseau.

  • 10.0.0.4 est une adresse.

Le fait que tu précises /24 derrière, fait que tu donnes un réseau, une plage d'adresse, et non une adresse.

Tu touches le cœur du problème je pense. L'adresse IP du client (PC B, le pc portable) est très souvent 10.0.0.6. L'adresse du serveur, je n'en ai aucune idée :s Pour moi, ça devrait être 10.0.0.1. Car c'est l'adresse que j'ai entré dans la config de dhcpd. Mais je ne suis pas sûr de moi.

De plus, depuis le client, le ping vers 10.0.0.1 échoue lamentablement. Le ping vers 10.0.0.0 me propose un ping broadcast. Vers 10.0.0.6 ça marche normalement.

Depuis le serveur, seul le ping vers 10.0.0.0 fonctionne …

Configurer le DHCP ne configure pas l'adresse IP de ton serveur DHCP. Il te faut configurer manuellement son IP, c'est de toute évidence ce que tu fai ici :

ache@port: sudo ip addr add 10.00.00/24 dev enp4s0

Sauf que tu attributs ce qu'on appel l'adresse de réseau, qui n'est pas fonctionnelle sur une machine. Remplace cette ligne par :

ache@port: sudo ip addr add 10.0.0.1/24 dev enp4s0

+2 -0

En fait non, les deux sont des réseaux.

Euh non. Ou alors je ne comprends pas ce que tu veux dire :

  • 10.0.0.0/24 est l'adresse du réseau 10.0.0.0 avec un masque en 255.255.255.0. Elle désigne le réseau qui s'étend de 10.0.0.0 à 10.0.0.255. La première adresse en .0 est celle du réseau, celle en 255 est celle de diffusion, les autres situées entre les deux sont les adresses des stations.
  • 10.0.0.4/24 désigne l'adresse 4 dans le réseau ci-dessus. Elle ne désigne pas un réseau, sauf à redécouper la plage. Si j'avais un masque en 255.255.255.252, alors effectivement l'adresse 4 serait une adresse de réseau :

  • le premier réseau serait 10.0.0.0, aurait deux adresses utilisables (10.0.0.1 et 10.0.0.2), une adresse de diffusion (10.0.0.3).

  • le second réseau commencerait à 10.0.0.4 qui serait alors l'adresse de réseau.

Mais avec un découpage en /24, le second réseau est 10.0.1.0.

Quand je précise 10.0.0.X/24, je précise effectivement l'étendue du réseau. Mais ça ne veut pas dire que l'adresse que je donne est celle d'un réseau.

L'adresse du serveur, je n'en ai aucune idée :s

Pour voir la configuration des interfaces réseaux, la commande est :

ifconfig

voire

ifconfig -a

Selon les distributions, il faut parfois la lancer en root/avec sudo.

+0 -0

Il me semble que ton problème est similaire à celui-ci.

Je suis sous ArchLinux et ça fonctionne très bien avec NetworkManager. Ce dernier me permet même de créer un point d'accès wifi.

Édité par Vayel

+0 -0
Auteur du sujet

Merci les gars ! Ça marche ! Je vais avoir le choix entre plusieurs solutions maintenant pour partager des fichiers.

C'était bien ça le problème. Vous n'imaginez pas tout ce que j'avais essayé x)

@Ezenku : Tu aurais l'équivalent de 'ifconfig' avec la commande 'ip' ? Après une réflexion rapide et lecture du manuel dans la bonne section : 'ip addr show'

@Vayel : J'avais déjà lu (et suivi) ton sujet. Effectivement, ils se ressemblent. Cependant, ici, il y a bien un serveur DHCP. De plus, tu souhaites apparemment rejoindre le réseau de la box, ce qui n'est pas le but ici. Enfin, je n'utilise pas NetworkManager. La ligne de commande me permet également de créer un hot-spot wifi ^^

PS: Oui je sais … "Pourquoi tu utilises un câble RJ45 si tu arrivais à faire un partage en Wifi ?" Tous simplement car l'ordinateur cible n'a pas forcément le Wifi !

Édité par ache

ache.one                                                                                   🦊

+0 -0

En fait non, les deux sont des réseaux.

Euh non. Ou alors je ne comprends pas ce que tu veux dire :

  • 10.0.0.0/24 est l'adresse du réseau 10.0.0.0 avec un masque en 255.255.255.0. Elle désigne le réseau qui s'étend de 10.0.0.0 à 10.0.0.255. La première adresse en .0 est celle du réseau, celle en 255 est celle de diffusion, les autres situées entre les deux sont les adresses des stations.
  • 10.0.0.4/24 désigne l'adresse 4 dans le réseau ci-dessus. Elle ne désigne pas un réseau, sauf à redécouper la plage. Si j'avais un masque en 255.255.255.252, alors effectivement l'adresse 4 serait une adresse de réseau :

Une adresse n'est pas une plage d'adresse. Si tu spécifies le /24, tu spécifies que seuls les 24 premiers bits sont significatifs, c'est à dire que les 8 derniers n'ont pas d'importance et qu'ils peuvent prendre la valeur que tu souhaites. Donc tu définis une plage d'adresse.

10.0.0.0/24, spécifie à l'a fois une adresse du réseau, et la plage d'adresse de celui ci. C'est la description complète du réseau. Mais 10.0.0.45/24 définis exactement le même réseau.

Il va de soit qu'il est commun de spéficier à la fois une adresse ainsi que le masque, pour véhiculer les deux informations : l'adresse, et la définition du réseau. Mais néanmoins c'est un abus de langage que de dire que 10.0.0.4/24 est une adresse du réseau. L'adresse est uniquement 10.0.0.4.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte