web-dev-qa-db-fra.com

Comment obtenir l'adresse IP IPv6 sous Linux

J'ai un serveur Linux et je souhaite trouver l'adresse IPv6 principale via une seule ligne de commande.

Ma commande jusqu'à présent:

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

qui montre:

2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4

Mais je veux seulement une occurrence , de sorte que la sortie se lit comme suit:

2001:410:0:39:221:28ff:fe46:eef4
29
Ankit Goyal
ip -6 addr

montrera vos adresses IPv6.

26
Jim G.

/sbin/ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80

La sortie de /sbin/ip -6 addr | grep inet6 ressemble à ceci:

inet6 ::1/128 scope Host 
inet6 2001:123:456:55f::1/64 scope global 
inet6 fe80::62eb:69ff:fed2:d2a6/64 scope link 

awk -F '[ \t]+|/' '{print $3}' divise chaque délimiteur de réglage de ligne en un ou plusieurs espaces blancs ou une barre oblique. La partie dont nous avons besoin est le 3 $.

grep -v ^::1 | grep -v ^fe80 pour exclure toute ligne commençant par ::1 ou fe80.

5
Elgs Qian Chen
$ /sbin/ifconfig | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link
      inet6 addr: fe80::211:22ff:fe33:4455/64 Scope:Link
      inet6 addr: ::1/128 Scope:Host

Si vous voulez une sélection aléatoire d'une adresse IPv6

$ /sbin/ifconfig | grep inet6 | head -n 1
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link

Si vous voulez l'adresse IPv6 du nom le plus commun pour le premier adaptateur Ethernet

$ /sbin/ifconfig eth0 | grep inet6
      inet6 addr: fe80::2ff:19ff:fe60:1a00/64 Scope:Link

Si vous voulez juste l'adresse

$ /sbin/ifconfig eth0 |  awk '/inet6/{print $3}'
fe80::2ff:19ff:fe60:1a00/64
3
RedGrittyBrick

Utilisez la commande suivante pour afficher votre adresse IP sous Linux:

ifconfig

Normalement, l'adresse IPv6 ressemble à 2001:5c0:9168::/48. Si vous rencontrez des conflits dans votre IP, suivez les étapes ci-dessous pour redéfinir une adresse IP:

  1. Pour affecter des adresses IPv6, assurez-vous que les outils iproute2 sont installés.
  2. En les utilisant, commençons à assigner vos IP.
  3. Assurez-vous que le module ipv6 est installé ou non.

Ensuite, utilisez la commande suivante pour ajouter une nouvelle adresse IP:

ip -f inet6 addr add 2001:5c0:9168::2/64 dev eth0

Ensuite, ajoutez l'adresse IP par défaut via

ip -f inet6 ro add default via 2001:5c0:9168::1 dev eth0

Une fois votre installation terminée, il vous suffit de reconfigurer/redémarrer vos services compatibles IPv6, tels que Apache, SSH, etc.

2
user1908924

Avec quelques petites modifications, votre tentative initiale aurait fonctionné:

ip -o -6 addr show eth0 | sed -e 's/^.*inet6 \([^ ]\+\).*/\1/'

Le gros changement est l'ajout de l'indicateur -o à l'impression des entrées, une par ligne, ce qui facilite leur exécution.

1
Keith Gaughan

Tout d’abord, vous devez vous rappeler qu’avec IPv6, toute machine peut avoir plusieurs adresses IPv6, des réseaux distincts et l’une quelconque d’entre elles pouvant être utilisées, en fonction de l’endroit que vous souhaitez atteindre.

Donc, avant de pouvoir répondre à la question de votre adresse IP source, vous devez décider où vous envoyez le trafic. Ensuite, vous pouvez simplement demander à Linux de vous indiquer quelle adresse IPv6 sera la source lorsque vous envoyez du trafic vers cette destination.

Si vous l'envoyez sur "Internet", choisissez simplement une adresse IPv6 globale au hasard, par exemple. Adresse DNS publique de Google.

ip r get to 2001:4860:4860::8888 | Perl -ne '/src ([\w:]+)/ && print "$1\n"'
2001:db8:f387:c818:5:2:0:1000

Ceci demande à Linux le chemin vers cette destination. Perl analyse le résultat à la recherche de src, puis imprime le champ suivant.

En fournissant une destination différente, vous pouvez recevoir une adresse source différente:

ip r get to ::1 | Perl -ne '/src ([\w:]+)/ && print "$1\n"'
::1
0
Michael Hampton