====== IP : Connaître son IP publique et locale ====== * Objet : Connaître son ip Publique ou locale * Niveau requis : {{tag>débutant avisé}} * Commentaires : // Il est souvent utile de connaître sa propre ip pour configurer des logiciels par exemple. // * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * [[:doc:systeme:su|se connecter en root ( Administrateur )]] * Suivi : {{tag>doublon}} * Création par [[user>Switch]] le 12/09/2011 * Testé par <...> le <...> * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=9436 |ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) **Nota :** Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! ===== Introduction ===== L'**IP** , pour //Internet Protocol// est un numéro **identifiant** une **interface** réseau. Chaque ordinateur étant connecté à un réseau possède donc au moins une adresse IP par interfaces configurée (Wifi, câble Ethernet, VPN, loopback…). Il existe la version 4 de cette notation((l'IPv4, ou IP)), et une version 6 qui permet d'adresser bien plus de machines. Une interface peut être identifiable par l'une ou les deux notations. Exemple mon interface réseau local a (presque) ces deux adresses: IPv4 : 192.168.0.202/24 Ipv6 : 2a01:e34:ee4c:700:0123:4567:89ab:cdef/64 ===== En bref! ===== === En console === * IP de vos interfaces: /sbin/ip -4 addr /sbin/ip -6 addr * IPV4 publique: curl ifconfig.me * IPV6 publique (avec filtrage pour n'afficher que l'ip): curl -s http://checkipv6.dyndns.org | cut -c77-111 nécessite que curl soit installé, sinon lisez la suite. === En graphique === * IP de vos interfaces: * GNOME : Cliquer sur l'icône réseau de votre bureau et cherchez "Informations de connexions". FIXME * IP publique: Visitez un site comme par exemple [[http://www.mon-ip.com/]] qui vous indiquera votre IP. ===== En détail ===== ==== Plusieurs Interfaces ? ==== Une __interface Ethernet__ sera souvent notée **eth0** , ou 0 peut varier en fonction du nombres de cartes ethernet de votre machine. Une interface avec une __connexion par modem-routeur ADSL__ par exemple sera probablement notée **ppp0** (protocol point-à-point). Une inteface __Wifi__ , **wlan0**. L'interface lo (dite loopback ou interface locale) ne nous concerne pas ici, mais elle dispose également de deux IP : 127.0.0.1((IPv4)) et ::1((IPv6)). ==== ifconfig : ancien outil ==== La commande **ifconfig** affiche les **informations** des **interfaces** réseau, dont la fameuse ''ip''. Si vous êtes connecté en simple utilisateur, cette commande n'étant pas dans votre ''PATH'' (espace de travail) par défaut, il vous faut préciser son chemin complet dans la console : ''/sbin/ifconfig'' Sinon, si vous êtes //root// ou avez ajouté ''/sbin'' dans votre ''PATH'', un simple ''ifconfig'' invoque la commande. Au choix donc: /sbin/ifconfig eth0 ou ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:49:9a:b9 inet adr:192.168.0.202 Bcast:192.168.1.255 Masque:255.255.255.0 adr inet6: 5555:4444:3333:2222:1111:0000/64 Scope:Lien adr inet6: 2a01:e34:ee4c:700:0123:4567:89ab:cdef/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:212 errors:0 dropped:0 overruns:0 frame:0 TX packets:149 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:23185 (22.6 KiB) TX bytes:21504 (21.0 KiB) Dans l'exemple eth0 dénote l'interface ETHernet numéro 0, la ligne ''inet adr'' correspond à son adresse ipv4: ici 192.168.0.202 . On remarque également les lignes ''adr inet6'' indiquant elles l'ipv6 de l'interface((Il y a en fait deux IPv6, Lien est une IPv6 locale servant à discuter avec le routeur et Global est une IPv6 publique.)). Cependant, ''ifconfig'' ne sait pas rendre compte de toutes les propriétés d'une interface. Pour cela, il nous faut utiliser ''ip''. ==== ip : nouvel outil ==== /sbin/ip addr show dev eth0 Affiche les informations des interfaces actives comme dans cet exemple: 2: eth0: mtu 1500 qdisc noqueue state UP group default link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.0.202/24 brd 192.168.0.255 scope global br0 valid_lft forever preferred_lft forever inet6 2a01:e34:ee4c:700:0123:4567:89ab:cdef/64 scope global mngtmpaddr dynamic valid_lft 85978sec preferred_lft 85978sec inet6 5555:4444:3333:2222:1111:0000/64 scope link valid_lft forever preferred_lft forever ===== IP locale et IP publique ===== Dans le cas ou votre interface est directement reliée à internet, cette ip suffit à vous identifier à travers le monde. Par contre si votre machine est dans un **réseau local**, reliée à un **routeur** qui lui est relié à **internet**; alors cette ip ne sera utilisée que dans votre réseau local pour communiquer avec le routeur ou les autres machines locales. __Pour les machines d'internet, seule l'ip de votre routeur sera visible__ et utilisable. Ce dernier est en charge de faire le lien entre internet et votre machine ou pas. Le **routeur possède** (dans le cas d'un routeur fourni par vote FAI, comme les //Truc//**Box**) une **interface reliée à internet** **et au moins une interface reliée au réseau local**. L'exemple typique étant, dans une maison possédant une box internet, plusieurs machines accèdent à internet en passant par cette dernière qui sert donc de routeur. Lorsque qu'une machine locale va demander à voir un site internet par exemple, la demande passe d'abord par la box (le routeur), qui va la transmettre par son interface (côté internet). Cette interface communiquant avec internet possède donc une ip dite publique. La box sait ensuite renvoyer le contenu de la page web demandée à la machine l'ayant demandée (ici, il s'agit de //routage nat avec masquerading//, voir la documentation sur //Comment transformer votre machine en routeur//, qui n'existe peut-être pas encore sur le wiki). Les différentes IP affectées aux interfaces de votre machine sont utilisées en //locale//. or les machines d'internet ne communiquent avec vous que via le routeur et son ip publique, qui à son tour achemine les communications réseau vers vos machines locales. __**De l'extérieur**, les gens ne voient de vous que cette **ip publique**, qui indirectement est un peu la vôtre, mais aussi celle des autres machines de vôtre maison, ou réseau local!__ ===== Obtenir son adresse IP publique ===== ==== Méthode standard ==== Vous pouvez aller sur l'interface d'administration de votre routeur pour qu'il vous indique l'IP qu'il utilise sur son interface publique. Exemple avec la freebox, demandez l'adresse [[https://mafreebox.free.fr/]] (avec une LiveBox, c'est plus souvent [[http://192.168.0.1]] ou ) [[http://192.168.1.1]]dans votre navigateur Web pour accéder à la configuration de la box. ==== Méthode rapide ==== Lorsque vous vous connectez sur un site, il connaît votre IP. Et il s'agit de votre IP... publique bien sûr, donc celle que vous recherchez. Il est alors suffisant de trouver un site qui affiche votre IP pour la connaître. Vous pouvez trouver de tels site en cherchant //mon ip// dans votre moteur de recherche favori. Il est possible d'obtenir votre ip publique directement à partir d'une console: curl http://ifconfig.me/ ou même en version abrégée: curl ifconfig.me le site appelé [[http://ifconfig.me/]] spécialement configuré pour cela, se content de renvoyer l'ip depuis laquelle il reçoit la requête. Une simple demande de la page du site avec la commande ''curl'' suffit donc pour recevoir votre ip publique. Nécessite curl installé, sinon lisez la partie "astuces" à ce sujet, ou la partie "installation" ==== Méthode je suis perdu ==== Avec votre navigateur Internet, rendez vous sur un site comme [[http://www.mon-ip.com/]] par exemple. ==== Astuces ==== === Abrégé === ip addr peut être aussi écrit en forme abrégée : ip a Créer des [[:doc:programmation:bash:alias|alias bash]] pour ne pas retaper les commandes. Exemple : alias monippub='curl ifconfig.me' === Filtrer l'affichage === Filtrer les informations pour n'afficher que l'ip avec ifconfig: /sbin/ifconfig eth0 | grep "inet ad" | cut -f2 -d: | awk '{print $1}' Alias pour l'ip de notre interface ethernet: alias monippriv="/sbin/ifconfig eth0 | grep 'inet ad' | cut -f2 -d: |cut -d ' ' -f1 " === Requêtes === Récupérer l'ip à partir d'une page d'un site comme checkip.dyndns.org wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//' Pour utiliser le site [[http://ifconfig.me]] sans installer curl , on utilise ''wget'' qui est installé par défaut, en spécifiant une entête de type client curl: wget -O - -q --user-agent "curl" ifconfig.me Bonus pour le fun((et pour ceux qui ont [[:doc:reseau:w3m]] d'installé)), spéciales captnfab: w3m -dump -header 'User-Agent: curl' ifconfig.me ou((pour ceux qui ne savent vraiment pas quoi faire…)) echo -e 'GET / HTTP/1.1\nHost: ifconfig.me\nUser-Agent: curl\n' | nc "$(host ifconfig.me | awk '{print $4}')" 80 -q 3 | grep '^[0-9]\+.[0-9]\+.[0-9]\+.[0-9]\+$' ===== Installation des outils ifconfig ou ip (normalement installés par défaut sur Debian) ===== La commande **ifconfig** est présente dans le paquet net-tools, qui est un paquet important. Ce paquet est donc probablement déjà installé sur votre système. Dans le cas contraire, si vous avez une connexion internet configurée ou un cdrom d'installation configuré comme source de paquets: apt-get install net-tools Sinon, il vous faut aller télécharger le paquet ''.deb'' de net-tools correspondant à votre version de Debian sur internet via un autre ordinateur, puis l'installer avec la commande: dpkg -i net-tools_blablabla.deb (en remplaçant net-tools_blablabla.deb par le nom du fichier téléchargé) De la même manière, l'outil **IP** est présent dans le paquet ''iproute''((''iproute2'' à partir de Jessie, et il faut lire « ip route » et non « I proute ».)) apt-get install iproute ===== Installation de curl ===== apt-get install curl curl est bien pratique, mais si vous ne voulez pas l'installer, utilisez les alternatives de la partie "astuces" ==== Remerciements ==== Plus d'infos dans le forum : [[http://debian-facile.org/viewtopic.php?id=5827]] Merci à captnfab, IceF0x, smolski (présent dans tous les tuto lui :!), shutdown76 et m31z0nyx pour l'aide lors de la création de cette page.