Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

arp -n ?

61 réponses
Avatar
Lulu
Salut,

Pour mon petit script de sauvegarde via rsync sur une machine qui est la
copie conforme du PC portable que j'utilise quotidiennement, j'utilise
la commande 'arp -n' au début de ce script, ce qui est censé (selon moi)
récupérer l'adresse IP du PC vers lequel s'effectue la sauvegarde.

Mais il y a vraisemblablement quelquechose que j'ai mal compris.

Quand je viens d'allumer le PC destinataire de la sauvegarde, 'arp -n'
ne "voit" pas ce PC alors qu'il est monté sur le réseau.

Si depuis mon PC portable quotidien, j'effectue un 'ping' vers le PC
destinataire de la sauvegarde (juste pendant quelques secondes, 3 ou 4
pings) alors la commande 'arp -n' voit ce PC destinataire (et mon script
arrive Í  récupérer cette IP, ce qui m'évite d'avoir Í  la taper).

Je sens bien qu'il n'y a quelque chose que je ne comprends pas dans la
commande 'arp'...

Quelle commande devrais-je utiliser depuis mon PC portable quotidien
pour qu'il voit que le PC destinataire de la sauvegarde est monté sur le
réseau ?

Le réseau est un LAN tout ce qu'il y a de plus bête : les PC obtiennent
une adresse en 192.168.1.x sur ma LiveBox configurée en mode routeur.

Merci de votre aide.

10 réponses

1 2 3 4 5
Avatar
Marc SCHAEFER
Lulu wrote:
la commande 'arp -n' au début de ce script, ce qui est censé (selon moi)

arp -n permet de lister le cache ARP.
Le cache ARP est la table qui associe les adresses MAC de couche 2
Ethernet aux adresses IP de couche 3. Elle a un délai d'expiration.
Si aucun échange récent n'a été fait entre votre machine et cette
machine, le cache ARP ne contiendra pas de correspondance.
Une autre table peut être utile: le serveur DHCP du sous-réseau, qui
délivre des adresses IP dynamiques sous forme de bail de temps limité, a
lui également une table (sur le routeur du sous-réseau, bien souvent).
Quand je viens d'allumer le PC destinataire de la sauvegarde, 'arp -n'
ne "voit" pas ce PC alors qu'il est monté sur le réseau.

Que veut dire `monté sur le réseau' ?
S'il a obtenu une adresse IP dynamique du serveur DHCP, alors le serveur
DHCP a une entrée correspondante dans sa table DHCP, mais il n'y a pas
de raison que l'ensemble des ordinateurs du sous-réseau ait
l'information dans leur table ARP, sauf trafic spécifique.
Si depuis mon PC portable quotidien, j'effectue un 'ping' vers le PC
destinataire de la sauvegarde (juste pendant quelques secondes, 3 ou 4
pings)

Donc vous connaissez l'adresse IP. C'est le plus simple.
alors la commande 'arp -n' voit ce PC destinataire (et mon script
arrive Í  récupérer cette IP, ce qui m'évite d'avoir Í  la taper).

A quoi sert alors la commande ARP sinon Í  confirmer la connectivité de
l'adresse IP que vous avez utilisée, ce que ping fait mieux?
Quelle commande devrais-je utiliser depuis mon PC portable quotidien
pour qu'il voit que le PC destinataire de la sauvegarde est monté sur le
réseau ?

Pour vérifier si une machine est allumée, quand on connaÍ®t son adresse
IP, ici 1.2.3.4:
ping -c 1 -w 1 1.2.3.4 && echo 1.2.3.4 est allumé
Le réseau est un LAN tout ce qu'il y a de plus bête : les PC obtiennent
une adresse en 192.168.1.x sur ma LiveBox configurée en mode routeur.

Une solution pour simplifier les choses pourrait être d'associer dans
votre routeur, Í  l'adresse MAC du PC que vous cherchez Í  atteindre une
adresse IP fixe (DHCP static). Voire, luxe suprême, une entrée dans le
serveur DNS.
Ainsi vous lanceriez la sauvegarde avec cette adresse IP "fixe" (DHCP
static) ou même avec un nom de machine, résolu par DNS.
A vérifier si votre routeur supporte ces fonctions, sinon elles
pourraient être assurées par un des PC (p.ex. un raspberri pi).
Avatar
Olivier Miakinen
Bonjour,
Le 27/09/2021 21:17, Lulu a écrit :
Pour mon petit script de sauvegarde via rsync sur une machine qui est la
copie conforme du PC portable que j'utilise quotidiennement, j'utilise
la commande 'arp -n' au début de ce script, ce qui est censé (selon moi)
récupérer l'adresse IP du PC vers lequel s'effectue la sauvegarde.
Mais il y a vraisemblablement quelquechose que j'ai mal compris.
Quand je viens d'allumer le PC destinataire de la sauvegarde, 'arp -n'
ne "voit" pas ce PC alors qu'il est monté sur le réseau.
Si depuis mon PC portable quotidien, j'effectue un 'ping' vers le PC
destinataire de la sauvegarde (juste pendant quelques secondes, 3 ou 4
pings) alors la commande 'arp -n' voit ce PC destinataire (et mon script
arrive Í  récupérer cette IP, ce qui m'évite d'avoir Í  la taper).
Je sens bien qu'il n'y a quelque chose que je ne comprends pas dans la
commande 'arp'...

D'après ce que j'ai compris de la commande arp, elle ne fait aucune
requête réseau et elle se contente de regarder la table ARP du noyau,
qui est un cache de correspondance entre adresse IP et adresse MAC
pour les adresses déjÍ  résolues.
Donc, si tes deux machines n'ont pas encore commencé Í  communiquer,
il est normal qu'elles ne se connaissent pas et qu'il n'y ait pas
d'entrée dans la table ARP.
Quelle commande devrais-je utiliser depuis mon PC portable quotidien
pour qu'il voit que le PC destinataire de la sauvegarde est monté sur le
réseau ?

Le ping me semble une bonne idée. Tu peux limiter le nombre de requêtes
ou la durée avec -c ou -w.
En outre, ping fonctionnera même si les machines ne sont pas sur le même
réseau physique (pourvu que le routage fonctionne) alors que dans ce cas
la table ARP ne verra jamais rien.
--
Olivier Miakinen
Avatar
JM Company
Le 27/09/2021 Í  21:17, Lulu a écrit :
Le réseau est un LAN tout ce qu'il y a de plus bête : les PC obtiennent
une adresse en 192.168.1.x sur ma LiveBox configurée en mode routeur.

Si tu as donné un nom Í  ton PC (hostname!) normalement, ta Livebox a
enregistré ce nom dans son DNS du domaine .home avec l'adresse IP du PC
attribuée par le DHCP de cette même Livebox!
Tu n'as donc pas besoin de connaͮtre l'adresse IP du PC pour
communiquer avec lui, il te suffit de le nommer "NOM_PC.home" .
Jean-Michel
Avatar
Sergio
Le 28/09/2021 Í  10:10, JM Company a écrit :
    Si tu as donné un nom Í  ton PC (hostname!) normalement, ta Livebox a enregistré ce nom dans son DNS du domaine .home avec l'adresse IP du PC attribuée par le DHCP de cette même Livebox!
 Tu n'as donc pas besoin de connaͮtre l'adresse IP du PC pour communiquer avec lui, il te suffit de le nommer "NOM_PC.home" .
Néanmoins (ça m'est arrivé...), en cas de réinstallation de l'OS, la Livebox va rajouter un chiffre derrière (genre yoyo1, toto2...)

--
Serge http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Lulu
Le 27-09-2021, Marc SCHAEFER a écrit :
Lulu wrote:
la commande 'arp -n' au début de ce script, ce qui est censé (selon moi)

arp -n permet de lister le cache ARP.

Ça je savais...
Le cache ARP est la table qui associe les adresses MAC de couche 2
Ethernet aux adresses IP de couche 3. Elle a un délai d'expiration.

Arf...
Je ne savais pas qu'il y avait un délai expiration.
Si aucun échange récent n'a été fait entre votre machine et cette
machine, le cache ARP ne contiendra pas de correspondance.

Ceci explique donc cela.
Une autre table peut être utile: le serveur DHCP du sous-réseau, qui
délivre des adresses IP dynamiques sous forme de bail de temps
limité, a lui également une table (sur le routeur du sous-réseau,
bien souvent).

Comment accéder Í  cette table du serveur DHCP avec une simple commande ?
Quand je viens d'allumer le PC destinataire de la sauvegarde, 'arp -n'
ne "voit" pas ce PC alors qu'il est monté sur le réseau.

Que veut dire `monté sur le réseau' ?

Ça signifie que le PC a obtenu une adresse IP (via DHCP) et qu'il est
accessible sur le réseau.
S'il a obtenu une adresse IP dynamique du serveur DHCP, alors le
serveur DHCP a une entrée correspondante dans sa table DHCP, mais il
n'y a pas de raison que l'ensemble des ordinateurs du sous-réseau ait
l'information dans leur table ARP, sauf trafic spécifique.

0K : je comprends que plutÍ´t que d'interroger le cache arp, je devrais
m'adresser au routeur pour obtenir l'adresse IP du PC auquel je souhaite
accéder.
Si depuis mon PC portable quotidien, j'effectue un 'ping' vers le PC
destinataire de la sauvegarde (juste pendant quelques secondes, 3 ou
4 pings)

Donc vous connaissez l'adresse IP. C'est le plus simple.

Oui je la connais. Mais je ne voudrais pas avoir Í  la retaper. Je
voudrais que mon script me la propose par défaut.
alors la commande 'arp -n' voit ce PC destinataire (et mon script
arrive Í  récupérer cette IP, ce qui m'évite d'avoir Í  la taper).

A quoi sert alors la commande ARP sinon Í  confirmer la connectivité
de l'adresse IP que vous avez utilisée, ce que ping fait mieux?

J'imaginais que arp me donnerait l'adresse de la machine connectée au
réseau, mais j'ai compris que je me trompais.
Quelle commande devrais-je utiliser depuis mon PC portable quotidien
pour qu'il voit que le PC destinataire de la sauvegarde est monté sur
le réseau ?

Pour vérifier si une machine est allumée, quand on connaÍ®t son adresse
IP, ici 1.2.3.4:
ping -c 1 -w 1 1.2.3.4 && echo 1.2.3.4 est allumé

Ça, je sais que ça marche et que c'est imparable.
Mais je voudrais que l'IP de la machine soit accessible.
Le réseau est un LAN tout ce qu'il y a de plus bête : les PC
obtiennent une adresse en 192.168.1.x sur ma LiveBox configurée en
mode routeur.

Une solution pour simplifier les choses pourrait être d'associer dans
votre routeur, Í  l'adresse MAC du PC que vous cherchez Í  atteindre
une adresse IP fixe (DHCP static). Voire, luxe suprême, une entrée
dans le serveur DNS.

Ouiménon.
Je vis en coloc' et je n'ai pas la main sur le routeur.
Le seul truc, c'est que l'adresse IP attribuée au PC sur lequel je
cherche Í  sauvegarder mes données est toujours la même.
Ainsi vous lanceriez la sauvegarde avec cette adresse IP "fixe" (DHCP
static) ou même avec un nom de machine, résolu par DNS.

Ouiménon.
Mes PC (celui sur lequel je travaille, appelons-le "origine") et celui
qui sert de sauvegarde (appelons-le 'destination") sont soit sur le
réseau de la Livebox de ma coloc', soit sur le réseau de l'AP de mon
téléphone, soit sur le réseau de ma maison secondaire.
Donc jamais la même IP attribuée.
Tout ce que je veux, c'est n'avoir pas Í  saisir l'adresse IP de
destination lorsque je sauvegarde depuis origine quelque soit le réseau
sur lequel mes PC sont montés.
A vérifier si votre routeur supporte ces fonctions, sinon elles
pourraient être assurées par un des PC (p.ex. un raspberri pi).
Avatar
Lulu
Le 28-09-2021, JM Company a écrit :
Le 27/09/2021 Í  21:17, Lulu a écrit :
Le réseau est un LAN tout ce qu'il y a de plus bête : les PC
obtiennent une adresse en 192.168.1.x sur ma LiveBox configurée en
mode routeur.

Si tu as donné un nom Í  ton PC (hostname!) normalement, ta Livebox a
enregistré ce nom dans son DNS du domaine .home avec l'adresse IP du
PC attribuée par le DHCP de cette même Livebox!
Tu n'as donc pas besoin de connaͮtre l'adresse IP du PC pour
communiquer avec lui, il te suffit de le nommer "NOM_PC.home" .

Je n'ai donc pas été clair dans mon message original : je me promène
avec mes deux PCs, "origine" avec lequel je travaille et "destination"
qui sert de sauvegarde.
Promène : signifie que ces deux PC se connectent au même moment sur un
routeur aléatoire, soit mon téléphone configuré en AP, soit la LiveBox
de ma coloc, soit sur la freebox de ma maison secondaire.
Et j'imaginais qu'il était possible de scripter (en bash) la sauvegarde
de "origine" vers "destination" quel que soit le réseau auquel ces
machines sont connectées.
C'est juste pour la beauté du geste : « je n'ai même pas Í  saisir l'IP
du PC "destination" »
Beauté du geste signifie que je suis sÍ»r que c'est possible mais je
n'arrive pas Í  le scripter ;-)
Avatar
Marc SCHAEFER
Marc SCHAEFER wrote:
On pourrait imaginer une solution sale et simple:

Variante toujours sale:
# interface o͹ le serveur de backup est atteignable
iface=eth0
# adresse MAC du serveur, en supposant qu'il est dans le
# même sous-réseau, bien sÍ»r
mac¨:5e:45:64:67:9e
# suppose que le serveur accepte les broadcast
# (cf /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts)
ping -b -c 1 -w 1 $(ip addr show dev $iface | grep inet | awk '{print $4;}')
dest_ip=$(ip neigh show dev $iface | grep $mac | awk '{print $1;}')
echo "L'adresse IP du serveur est: $dest_ip"
Avatar
Olivier Miakinen
[diapublication, suivi vers fr.comp.reseaux.ip]
Le 20/10/2021 19:56, Lulu a écrit :
Je n'ai donc pas été clair dans mon message original : je me promène
avec mes deux PCs, "origine" avec lequel je travaille et "destination"
qui sert de sauvegarde.
Promène : signifie que ces deux PC se connectent au même moment sur un
routeur aléatoire, soit mon téléphone configuré en AP, soit la LiveBox
de ma coloc, soit sur la freebox de ma maison secondaire.
Et j'imaginais qu'il était possible de scripter (en bash) la sauvegarde
de "origine" vers "destination" quel que soit le réseau auquel ces
machines sont connectées.

Donc tu connais l'adresse MAC de la machine qui sert de sauvegarde, mais
tu ne connais pas son adresse IP car elle change en fonction du routeur
(et en fait du serveur DHCP) utilisé, et c'est cette adresse IP que tu
voudrais découvrir.
En fait ce dont tu aurais besoin c'est une sorte de requête RARP (Reverse
ARP) :
<https://fr.wikipedia.org/wiki/Reverse_Address_Resolution_Protocol>
<https://datatracker.ietf.org/doc/html/rfc903>.
Je ne connais pas les détails du protocole DHCP, mais il me semblerait
assez logique que le serveur DHCP fournisse directement ce genre de service.
Je fais suivre vers fr.comp.reseaux.ip o͹ tu as plus de chances d'obtenir
une réponse documentée.
Cordialement,
--
Olivier Miakinen
Avatar
Sergio
Le 20/10/2021 Í  21:20, Marc SCHAEFER a écrit :
Dans ce cas /etc/hosts peut être utilisé pour pouvoir faire
ping toto
plutÍ´t que
ping 192.168.1.42

ping est Í  éviter pour simplement récupérer une IP (ou le contraire). On lui préférera host (ou nslookup sous W***)
Tout ce que je veux, c'est n'avoir pas Í  saisir l'adresse IP de
destination lorsque je sauvegarde depuis origine quelque soit le réseau
sur lequel mes PC sont montés.

Ca ne semble pas facile Í  faire, dans ce cas.

host toto te donnera l'ip du PC.
Par exemple :
$ host tv
tv.home has address 192.168.1.11
donne l'IP de ma box télé.
Et même :
$ host HAUWEI-Serge
HAUWEI-Serge.home has address 192.168.1.13
HAUWEI-Serge.home has IPv6 address 2a01:cb04:bd2:c100:109a:ca08:2305:49a
Donne l'IP de mon smartphone (connecté en wifi)
--
Serge http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Pascal Hambourg
Le 21/10/2021 Í  07:23, Sergio a écrit :
Le 20/10/2021 Í  21:20, Marc SCHAEFER a écrit :
Dans ce cas /etc/hosts peut être utilisé pour pouvoir faire
    ping toto
plutÍ´t que
    ping 192.168.1.42

ping est Í  éviter pour simplement récupérer une IP (ou le contraire).

Le contraire de quoi ? Ne pas récupérer une adresse IP ?
On lui préférera host (ou nslookup sous W***)

Contrairement Í  ping qui utilise le résolveur système, host et nslookup
(et dig) ont l'inconvénient de n'utiliser que la résolution DNS, et non
les autres sources de résolution de nom disponibles (/etc/hosts,
multicast DNS, NBNS, DoH, DoT...)
On peut plutÍ´t utiliser getent(1).
1 2 3 4 5