134 lines
4.1 KiB
Markdown
134 lines
4.1 KiB
Markdown
# IP
|
|
|
|
## Généralités
|
|
|
|
IP (Internet Protocol) est le protocole principal de communication sur
|
|
l'internet, actuellement deux versions sont en cours d'utilisation : IPv4 et
|
|
IPv6.
|
|
|
|
IP permet de transmettre des datagrammes d'un point à un autre.
|
|
|
|
### Adressage
|
|
|
|
Les adresses IP sont alloués avec la méthode du CIDR (Classless Inter-Domain
|
|
Routing). Cette méthode consiste à noter une adresse au format
|
|
`adresse/longueur_préfixe`, elle induit une attribution des IP par blocs.
|
|
|
|
Les `n` bits (où `n` est la longueur du préfixe) les plus significatifs
|
|
servent à identifier le réseau auquel l'adresse appartient.
|
|
|
|
## IPv4
|
|
|
|
Une adresse IPv4 s'écrit sur 32 bits et utilise une notation décimale
|
|
pointée (4 entiers séparés par des `.`), par exemple `192.168.0.1` est une
|
|
adresse IPv4.
|
|
|
|
De même `192.168.0.0/24` est un exemple de notation CIDR pour un sous-réseau
|
|
IPv4.
|
|
|
|
Dans un réseau local les adresses IPv4 peuvent être attribuées par le
|
|
protocole DHCP ou configurées statiquement.
|
|
|
|
À noter que dans un sous-réseau IPv4 la première et la dernière sont
|
|
réservées respectivement pour identifier le réseau et effectuer du broadcast
|
|
par exemple pour le bloc `192.168.0.0/24`, l'adresse `192.168.0.0` est
|
|
réservée et l'adresse `192.168.0.255` est l'adresse de broadcast.
|
|
|
|
Cette restriction peut être contournée sous Linux, par exemple sous
|
|
[Debian](/tools/debian.md) on peut modifier l'interface comme ceci :
|
|
|
|
```txt
|
|
iface eth0 inet static
|
|
broadcast -
|
|
```
|
|
|
|
Ceci permet d'utiliser des blocs d'adresses IPv4 d'une taille de préfixe
|
|
égale à 31 afin d'interconnecter deux machines.
|
|
|
|
### IPv4 privées
|
|
|
|
Certains blocs d'adresses IPv4 sont réservés à des utilisations privées,
|
|
celà signifie qu'ils ne sont pas annoncés sur l'internet. Ils sont
|
|
spécifiés par la [RFC 1918](https://tools.ietf.org/html/rfc1918) et sont les
|
|
suivants :
|
|
|
|
* `10.0.0.0/8`
|
|
|
|
* `172.16.0.0/12`
|
|
|
|
* `192.168.0.0/16`
|
|
|
|
### IPv4 de lien local
|
|
|
|
Un bloc d'IPv4 est réservé pour utilisation sur le réseau local, c'est à
|
|
dire que ce bloc n'est normalement jamais routé, il s'agit du bloc
|
|
`169.254.0.0/16`.
|
|
|
|
### IPv4 multicast
|
|
|
|
un bloc d'IPv4 est réservé pour du multicast, il s'agit du bloc `224.0.0.0/4`.
|
|
|
|
## IPv6
|
|
|
|
Une adresse IPv6 s'écrit sur 128 bits et utilise une notation hexadécimale
|
|
séparée par des `:` (deux-points), par exemple
|
|
`2001:0db8:0000:0000:0000:0000:0000:0000` (on regroupe les octets par groupe de
|
|
2).
|
|
|
|
Il existe également une notation compacte pour les adresses IPv6 : on peut
|
|
omettre les 0 en début de bloc et remplacer la plus longue suite de blocs nuls
|
|
par `::`, par exemple l'adresse précédente peut s'écrire `2001:db8::`.
|
|
|
|
Ainsi `2001:db8::/32` est un exemple de notation CIDR pour un sous-réseau IPv6.
|
|
|
|
Dans un réseau local les adresses IPv6 peuvent être attribuées par le
|
|
protocole NDP, par le protocole DHCPv6 ou configurées statiquement.
|
|
|
|
La liste des IPv6 attribuées est disponible
|
|
[ici](https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml)
|
|
et
|
|
[là](https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml).
|
|
|
|
Il n'y a pas de broadcast en IPv6 et la première adresse du bloc peut être
|
|
utilisée sans risque. Le broadcast est remplacé par du multicast : tous les
|
|
nœuds sur le réseau local répondent sur l'adresse `ff02::1`.
|
|
|
|
### IPv6 uniques locales
|
|
|
|
Un bloc d'adresses IPv6 est réservé pour des utilisations privées, c'est
|
|
l'équivalent des blocs d'IPv4 privées. Il s'agit du bloc `fc00::/7`.
|
|
|
|
### IPv6 de lien local
|
|
|
|
Un bloc d'IPv6 est réservé pour utilisation sur le réseau local, il s'agit
|
|
du bloc `fe80::/10`.
|
|
|
|
### IPv6 multicast
|
|
|
|
Un bloc d'IPv6 est réservé pour du multicast, il s'agit du bloc `ff00::/8`.
|
|
|
|
## ip
|
|
|
|
Sous Linux la commande privilégiée pour consulter l'état de la configuration
|
|
réseau est `ip` (fournie par la suite `iproute2`) voici quelques exemples de
|
|
commandes :
|
|
|
|
Afficher l'état des interfaces de la machine (adresses IP attribuées et leur
|
|
sous-réseau) :
|
|
|
|
```bash
|
|
ip address
|
|
```
|
|
|
|
Afficher l'état des routes IPv4 de la machine :
|
|
|
|
```bash
|
|
ip route
|
|
```
|
|
|
|
Afficher l'état des routes IPv6 de la machine :
|
|
|
|
```bash
|
|
ip -6 route
|
|
```
|