Man page - ip(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es pl ja zh_TW zh_CNManual
ip
NOMSYNOPSIS
DESCRIPTION
Formats dâadresse
Adresses spéciales et réservées
Options de socket
/proc interfaces
Ioctls
ERREURS
NOTES
Compatibilité
BOGUES
VOIR AUSSI
TRADUCTION
NOM
ip â ImplĂ©mentation Linux du protocole IPv4
SYNOPSIS
#include
<sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
/* Surensemble des
précédents */
tcp_socket
= socket(AF_INET, SOCK_STREAM, 0);
udp_socket
= socket(AF_INET, SOCK_DGRAM, 0);
raw_socket
= socket(AF_INET, SOCK_RAW,
protocole
);
DESCRIPTION
Linux implémente le protocole Internet (IP) version 4 décrit dans les RFC 791 et RFC 1122. ip contient une implémentation de la diffusion multiple niveau 2 conforme à la RFC 1112. Cette implémentation inclut un routeur IP comprenant un filtre de paquets.
Lâinterface de programmation est compatible avec les sockets BSD. Pour plus dâinformations sur les sockets, consultez socket (7).
Un socket IP est créé en utilisant socket (2) :
socket(AF_INET, type_socket, protocole);
Les sockets autorisés incluent SOCK_STREAM pour ouvrir un socket flux, SOCK_DGRAM pour ouvrir un socket datagramme et SOCK_RAW pour ouvrir un socket raw (7) pour accéder directement au protocole IP.
protocole est le protocole IP dans les en-tĂȘtes IP reçus ou envoyĂ©s. Les valeurs autorisĂ©es pour protocole incluent :
|
- |
0 et IPPROTO_TCP pour les sockets flux tcp (7)Â ; |
|||
|
- |
0 et IPPROTO_UDP pour les sockets datagramme udp (7)Â ; |
|||
|
- |
IPPROTO_SCTP pour les sockets flux sctp (7)Â ; |
|||
|
- |
IPPROTO_UDPLITE pour les sockets datagramme udplite (7). |
Pour SOCK_RAW un protocole IP IANA autorisĂ©, dĂ©fini dans les numĂ©ros assignĂ©s de la RFC 1700, peut ĂȘtre indiquĂ©.
Lorsquâun processus veut recevoir de nouveaux paquets entrants ou des connexions, il doit attacher un socket Ă une adresse dâinterface locale en utilisant bind (2). Un seul socket IP peut ĂȘtre attachĂ© Ă une paire (adresse, port) locale donnĂ©e. Lorsque INADDR_ANY est indiquĂ© au moment de lâattachement, le socket sera affectĂ© Ă toutes les interfaces locales. Si listen (2) est appelĂ©e sur un socket non affectĂ©, celui-ci est automatiquement attachĂ© Ă un port libre alĂ©atoire, avec lâadresse locale dĂ©finie Ă INADDR_ANY . Si connect (2) est appelĂ©e sur un socket non affectĂ©, celui-ci est automatiquement attachĂ© Ă un port libre alĂ©atoire ou un port partagĂ© utilisable avec lâadresse locale dĂ©finie Ă INADDR_ANY .
Lâadresse locale dâun socket TCP qui a Ă©tĂ© attachĂ© est indisponible pendant quelques instants aprĂšs sa fermeture, Ă moins que lâattribut SO_REUSEADDR ait Ă©tĂ© activĂ©. Il faut ĂȘtre prudent en utilisant cet attribut, car il rend le protocole TCP moins fiable.
Formats dâadresse
Une adresse de socket IP est dĂ©finie comme la combinaison dâune adresse IP dâinterface et dâun numĂ©ro de port de 16 bits. Le protocole IP de base ne fournit pas de numĂ©ros de port, ils sont implĂ©mentĂ©s par les protocoles de plus haut niveau comme udp (7) et tcp (7). Sur les sockets raw, le champ sin_port contient le protocole IP.
struct
sockaddr_in {
sa_family_t sin_family; /* Famille dâadresses :
AF_INET */
in_port_t sin_port; /* Port dans lâordre des
octets du réseau */
struct in_addr sin_addr; /* Adresse Internet */
};
/* Adresse Internet */
struct in_addr {
uint32_t s_addr; /* adresse dans lâordre des
octets du réseau */
};
sin_family est toujours dĂ©fini Ă AF_INET . Câest indispensable : sous Linux 2.2, la plupart des fonctions rĂ©seau renvoient EINVAL lorsque cette dĂ©finition est absente. sin_port contient le numĂ©ro de port, dans lâordre des octets du rĂ©seau. Les numĂ©ros de ports infĂ©rieurs Ă 1024 sont dits privilĂ©giĂ©s (ou parfois rĂ©servĂ©s ). Seuls les processus privilĂ©giĂ©s (sur Linux, ceux qui ont la capacitĂ© CAP_NET_BIND_SERVICE dans lâespace de noms utilisateur gouvernant son espace de noms rĂ©seau) peuvent appeler bind (2) pour ces sockets. Le protocole IPv4 brut en tant que tel nâa pas le concept de ports, ceux-ci Ă©tant seulement implĂ©mentĂ©s par des protocoles de plus haut niveau comme tcp (7) et udp (7).
sin_addr est lâadresse IP de lâhĂŽte. Le membre s_addr de la structure in_addr contient lâadresse de lâinterface de lâhĂŽte, dans lâordre des octets du rĂ©seau. in_addr devrait recevoir lâune des valeurs INADDR_ * (par exemple, INADDR_LOOPBACK ) en utilisant htonl (3) ou ĂȘtre dĂ©fini Ă lâaide des fonctions de bibliothĂšque inet_aton (3), inet_addr (3), inet_makeaddr (3) ou directement par le systĂšme de rĂ©solution des noms (consultez gethostbyname (3)).
Les adresses IPv4 sont divisĂ©es en adresses de diffusion individuelle (unicast), de diffusion gĂ©nĂ©rale (broadcast) et de diffusion multiple (multicast). Les adresses de diffusion individuelle dĂ©crivent une interface unique dâun hĂŽte, les adresses de diffusion gĂ©nĂ©rale correspondent Ă tous les hĂŽtes dâun rĂ©seau et les adresses de diffusion multiple reprĂ©sentent tous les hĂŽtes dâun groupe de diffusion multiple. Les datagrammes vers des adresses de diffusion gĂ©nĂ©rale ne peuvent ĂȘtre Ă©mis et reçus que si lâattribut de socket SO_BROADCAST est activĂ©. Dans lâimplĂ©mentation actuelle, les sockets orientĂ©s connexion ne sont autorisĂ©s que sur des adresses de diffusion individuelle.
Remarquez que lâadresse et le port sont toujours stockĂ©s dans lâordre des octets du rĂ©seau. Cela signifie en particulier quâil faut invoquer htons (3) sur le numĂ©ro attribuĂ© Ă un port. Toutes les fonctions de manipulation dâadresses et de ports de la bibliothĂšque standard fonctionnent dans lâordre des octets du rĂ©seau.
Adresses spéciales et réservées
Il y a plusieurs
adresses spéciales :
INADDR_LOOPBACK
(127.0.0.1)
fait toujours rĂ©fĂ©rence Ă lâhĂŽte local Ă lâaide du pĂ©riphĂ©rique de rebouclage (loopback) ;
INADDR_ANY (0.0.0.0)
signifie nâimporte quelle adresse pour lâattachement de socket ;
INADDR_BROADCAST (255.255.255.255)
a le mĂȘme effet que INADDR_ANY sur bind (2) pour des raisons historiques. Un paquet adressĂ© Ă INADDR_BROADCAST Ă travers un socket ayant SO_BROADCAST dĂ©fini sera diffusĂ© Ă tous les hĂŽtes du segment du rĂ©seau local, aussi longtemps que la liaison sera en capacitĂ© de diffusion gĂ©nĂ©rale (broadcast).
NumĂ©ro dâadresse le
plus haut
NumĂ©ro dâadresse le plus bas
Sur tout sous-rĂ©seau IP non point-Ă -point localement attachĂ© avec une liaison du type qui gĂšre la diffusion gĂ©nĂ©rale (broadcast), lâadresse avec la numĂ©rotation la plus Ă©levĂ©e (par exemple, lâadresse 255 sur un sous-rĂ©seau avec un masque de rĂ©seau 255.255.255.0) est dĂ©signĂ©e comme adresse de broadcast. Elle ne peut pas ĂȘtre assignĂ©e de maniĂšre utile Ă une interface individuelle et ne peut ĂȘtre adressĂ©e quâavec un socket avec lâoption SO_BROADCAST dĂ©finie. Les normes dâInternet ont aussi historiquement rĂ©servĂ© lâadresse avec le numĂ©ro le plus bas (par exemple, lâadresse 0 dâun sous-rĂ©seau avec un masque rĂ©seau 255.255.255.0) pour le broadcast, bien quâelles la qualifient dâ« obsolĂšte » pour cette fonction (quelques sources lâappellent aussi « adresse rĂ©seau »). Depuis Linux 5.14, elle est considĂ©rĂ©e comme une adresse ordinaire de diffusion unique (unicast) et peut ĂȘtre assignĂ©e Ă une interface.
Les normes
dâInternet ont traditionnellement
réservé aussi diverses adresses pour des
usages particuliers, bien que Linux ne traite plus certaines
dâentre elles spĂ©cialement.
[0.0.0.1, 0.255.255.255]
[240.0.0.0, 255.255.255.254]
Les adresses dans ces plages (0/8 et 240/4) sont rĂ©servĂ©es globalement. Depuis Linux 5.3 et Linux 2.6.25, respectivement, les adresses 0/8 et 240/4, autres que INADDR_ANY et INADDR_BROADCAST sont traitĂ©es comme des adresses unicast ordinaires. Les systĂšmes qui suivent le comportement traditionnel nâinteragiront pas avec ces adresses historiquement rĂ©servĂ©es.
[127.0.0.1, 127.255.255.254]
Les adresses dans cette plage (127/8) sont traitĂ©es comme des adresses de rebouclage (loopback) semblables Ă lâadresse standardisĂ©e de rebouclage locale INADDR_LOOPBACK (127.0.0.1) ;
[224.0.0.0, 239.255.255.255]
Les adresses dans cette plage (224/4) sont dédiées à un usage de diffusion multiple (multicast).
Options de socket
IP gĂšre quelques options de sockets spĂ©cifiques au protocole qui peuvent ĂȘtre dĂ©finies avec setsockopt (2) et consultĂ©es avec getsockopt (2). Le niveau dâoption de sockets pour IP est IPPROTO_IP . Un attribut entier boolĂ©en est faux quand il vaut zĂ©ro et vrai sinon.
Quand une option
non autorisée de socket est spécifiée,
getsockopt
(2) et
setsockopt
(2) échouent
avec lâerreur
ENOPROTOOPT
.
IP_ADD_MEMBERSHIP
(depuis Linux 1.2)
Rejoindre un groupe de diffusion multiple. Lâargument est une structure ip_mreqn .
struct ip_mreqn
{
struct in_addr imr_multiaddr; /* Adresse IP du groupe
de diffusion multiple */
struct in_addr imr_address; /* Adresse IP de
lâinterface locale */
int imr_ifindex; /* NumĂ©ro dâinterface */
};
imr_multiaddr contient lâadresse du groupe de diffusion multiple que lâapplication veut rejoindre ou quitter. Il doit sâagir dâune adresse de diffusion multiple valable (sinon setsockopt (2) Ă©choue avec lâerreur EINVAL ). imr_address est lâadresse de lâinterface locale avec laquelle le systĂšme doit joindre le groupe de diffusion multiple. Si elle est Ă©gale Ă INADDR_ANY , une interface appropriĂ©e est choisie par le systĂšme. imr_ifindex est le numĂ©ro de lâinterface qui doit rejoindre ou quitter le groupe imr_multiaddr , ou zĂ©ro pour indiquer nâimporte quelle interface.
La structure ip_mreqn nâest disponible que depuis Linux 2.2. Pour la compatibilitĂ©, lâancienne structure ip_mreq (prĂ©sente depuis Linux 1.2) est encore gĂ©rĂ©e. Elle ne diffĂšre de ip_mreqn que par lâabsence du champ imr_ifindex . Le noyau dĂ©termine quelle structure est passĂ©e en se basant sur la taille passĂ©e Ă optlen .
IP_ADD_MEMBERSHIP est autorisé seulement pour setsockopt (2).
IP_ADD_SOURCE_MEMBERSHIP (depuis Linux 2.4.22/2.5.68)
Rejoindre un groupe de diffusion multiple et autoriser la rĂ©ception de donnĂ©es uniquement depuis une source indiquĂ©e. Lâargument est une structure ip_mreq_source .
struct
ip_mreq_source {
struct in_addr imr_multiaddr; /* Adresse IP du groupe
de diffusion multiple */
struct in_addr imr_interface; /* Adresse IP de
lâinterface locale */
struct in_addr imr_sourceaddr; /* Adresse IP de la source
de diffusion multiple */
};
La structure ip_mreq_source est similaire Ă ip_mreqn dĂ©crite sous IP_ADD_MEMBERSIP . Le champ imr_multiaddr contient lâadresse du groupe de diffusion multiple que lâapplication veut rejoindre ou quitter. Le champ imr_interface est lâadresse de lâinterface locale avec laquelle le systĂšme doit rejoindre le groupe de diffusion multiple. Le champ imr_sourceaddr contient lâadresse de la source depuis laquelle lâapplication veut recevoir des donnĂ©es.
Cette option peut ĂȘtre utilisĂ©e plusieurs fois pour autoriser la rĂ©ception depuis plusieurs sources.
IP_BIND_ADDRESS_NO_PORT (depuis Linux 4.2)
Informer le noyau de ne pas rĂ©server un port Ă©phĂ©mĂšre lors de lâutilisation de bind (2) avec un numĂ©ro de port Ă©gal Ă zĂ©ro. Le port sera choisi plus tard automatiquement au moment de connect (2) de façon Ă permettre de partager un port source aussi longtemps que le quadruplet est unique.
IP_BLOCK_SOURCE (depuis Linux 2.4.22 et 2.5.68)
Bloquer la rĂ©ception de donnĂ©es en diffusion multiple depuis une source spĂ©cifique pour un groupe donnĂ©. Cela nâest possible quâaprĂšs que lâapplication sâest abonnĂ©e au groupe de diffusion multiple en utilisant IP_ADD_MEMBERSHIP ou IP_ADD_SOURCE_MEMBERSHIP .
Lâargument est une structure ip_mreq_source comme dĂ©crite pour IP_ADD_SOURCE_MEMBERSHIP .
IP_DROP_MEMBERSHIP (depuis Linux 1.2)
Quitter un groupe de diffusion multiple. Lâargument est une structure ip_mreqn ou ip_mreq similaire Ă IP_ADD_MEMBERSHIP .
IP_DROP_SOURCE_MEMBERSHIP (since Linux 2.4.22 et 2.5.68)
Quitter un groupe spĂ©cifique Ă une source, câest-Ă -dire arrĂȘter de recevoir des donnĂ©es depuis une source donnĂ©e pour un groupe de multidiffusion donnĂ©. Si lâapplication est abonnĂ©e Ă dâautres sources du mĂȘme groupe, les donnĂ©es des sources restantes seront toujours transmises. Pour simultanĂ©ment couper la rĂ©ception depuis toutes les sources, utilisez IP_DROP_MEMBERSHIP .
Lâargument est une structure ip_mreq_source comme dĂ©crite pour IP_ADD_SOURCE_MEMBERSHIP .
IP_FREEBIND (depuis Linux 2.4)
Si cette option est activĂ©e, cet attribut boolĂ©en permet lâattachement Ă une adresse IP non locale ou qui nâexiste pas (encore). Cela permet dâĂ©couter sur un socket, sans que lâinterface rĂ©seau sous-jacente ou lâadresse IP dynamique indiquĂ©e ne soit opĂ©rationnelle au moment oĂč lâapplication essaie de sây attacher. Cette option est lâĂ©quivalent spĂ©cifique au socket de lâinterface ip_nonlocal_bind de /proc dĂ©crite plus bas.
IP_HDRINCL (depuis Linux 2.0)
Si cette option est activĂ©e, lâutilisateur fournit un en-tĂȘte IP avant les donnĂ©es utilisateur. Cette option nâest valable que pour les sockets SOCK_RAW . Consultez raw (7) pour plus de dĂ©tails. Lorsque cet attribut est activĂ©, les valeurs dĂ©finies pour IP_OPTIONS , IP_TTL et IP_TOS sont ignorĂ©es.
IP_LOCAL_PORT_RANGE (depuis Linux 6.3)
DĂ©finir ou obtenir la plage de ports locale par dĂ©faut par socket. Cette option peut ĂȘtre utilisĂ©e pour resserrer la plage globale de ports locaux, dĂ©finie par lâinterface /proc ip_local_port_range dĂ©crite ci-dessous, pour un socket donnĂ©.
Lâoption prend une valeur uint32_t avec les 16 bits hauts rĂ©glĂ©s sur la limite supĂ©rieure de la plage, et les 16 bits bas rĂ©glĂ©s sur la limite la plus basse de la plage. Les limites de la plage sont inclusives. Les valeurs sur 16 bits doivent ĂȘtre dans lâordre des octets de lâhĂŽte.
La limite basse doit ĂȘtre infĂ©rieure Ă la limite haute lorsque les deux limites sont diffĂ©rentes de zĂ©ro. Sinon, rĂ©gler lâoption Ă©choue avec EINVAL .
Si chaque limite est en dehors de la plage globale de ports locaux, ou est Ă©gale Ă zĂ©ro, cette limite nâa aucun effet.
Pour réinitialiser les réglages, passez les limites supérieure et inférieure à zéro.
IP_MSFILTER (depuis Linux 2.4.22 et 2.5.68)
Cette option permet dâaccĂ©der Ă lâAPI de filtrage dâĂ©tats avancĂ©e. Lâargument est une structure ip_msfilter .
struct
ip_msfilter {
struct in_addr imsf_multiaddr; /* Adresse IP du groupe
de diffusion multiple */
struct in_addr imsf_interface; /* Adresse IP de
lâinterface locale */
uint32_t imsf_fmode; /* Mode filtre/
uint32_t imsf_numsrc; /* Nombre de sources dans
le tableau suivant */
struct in_addr imsf_slist[1]; /* Tableau dâadresses
source */
};
Les deux macros MCAST_INCLUDE et MCAST_EXCLUDE permettent dâidentifier le mode de filtrage. De plus, la macro IP_MSFILTER_SIZE (n) permet de dĂ©terminer la quantitĂ© de mĂ©moire nĂ©cessaire pour stocker une structure ip_msfilter contenant n sources.
Pour une description complĂšte du filtrage des sources de diffusion multiple, consultez la RFCÂ 3376.
IP_MTU (depuis Linux 2.2)
RĂ©cupĂ©rer la MTU du chemin actuellement dĂ©terminĂ©e pour le socket. Renvoi dâun entier.
IP_MTU est valable seulement pour getsockopt (2) et peut ĂȘtre seulement employĂ© quand le socket est connectĂ©.
IP_MTU_DISCOVER (depuis Linux 2.2)
DĂ©finir ou rĂ©cupĂ©rer la dĂ©finition de dĂ©couverte de MTU de chemin (Path MTU discovery â PMTUd) pour un socket. Lorsquâelle est activĂ©e, Linux effectuera la dĂ©couverte de la MTU dâun chemin conformĂ©ment Ă la RFC 1191 sur les sockets SOCK_STREAM . Pour les sockets autres que SOCK_STREAM , IP_PMTUDISC_DO force lâactivation de lâattribut interdisant la fragmentation sur tous les paquets sortants (bit DF â Donât Fragment). Lâutilisateur est responsable de lâempaquetage des donnĂ©es dans des blocs infĂ©rieurs Ă la MTU et doit assurer la retransmission si besoin. Le noyau rejettera (avec lâerreur EMSGSIZE ) les datagrammes qui sont plus gros que la MTU du chemin dĂ©terminĂ©e. IP_PMTUDISC_WANT fragmentera un datagramme si nĂ©cessaire dâaprĂšs la MTU du chemin, ou sinon activera lâattribut interdisant la fragmentation.
Les valeurs par dĂ©faut du systĂšme peuvent ĂȘtre basculĂ©es entre IP_PMTUDISC_WANT et IP_PMTUDISC_DONT en Ă©crivant (respectivement la valeur zĂ©ro et une valeur diffĂ©rente de zĂ©ro) dans le fichier /proc/sys/net/ipv4/ip_no_pmtu_disc .
Lorsque la dĂ©couverte de la MTU de chemin est activĂ©e, le noyau garde automatiquement une trace des MTU de chemin par hĂŽte de destination. Lorsquâil est connectĂ© Ă un correspondant spĂ©cifique avec connect (2), la MTU du chemin actuel dĂ©terminĂ©e peut ĂȘtre consultĂ©e en utilisant lâoption IP_MTU du socket (par exemple, si une erreur EMSGSIZE se produit). La MTU de chemin peut changer au cours du temps. Pour les sockets sans connexion avec plusieurs destinations, la nouvelle MTU pour une destination donnĂ©e peut Ă©galement ĂȘtre obtenue en utilisant la file dâerreurs (consultez IP_RECVERR ). Une nouvelle erreur sera mise en file dâattente pour chaque mise Ă jour de la MTU.
Durant la recherche de la MTU, les paquets initiaux des sockets datagramme peuvent ĂȘtre perdus. Les applications utilisant UDP doivent en ĂȘtre informĂ©es et ne pas en tenir compte dans leur stratĂ©gie de retransmission de paquet.
Pour dĂ©marrer le processus de recherche de la MTU du chemin sur les sockets non connectĂ©s, il est possible de dĂ©marrer avec une grande taille de datagramme (jusquâĂ 64 ko dâen-tĂȘte) et la diminuer au fur et Ă mesure des mises Ă jours de la MTU du chemin.
Afin dâobtenir une estimation initiale de la MTU du chemin, il faut connecter un socket datagramme Ă lâadresse de destination en utilisant connect (2) et consulter la MTU en appelant getsockopt (2) avec lâoption IP_MTU .
Il est possible dâimplĂ©menter la RFC 4821 pour les recherches de MTU avec des sockets SOCK_DGRAM ou SOCK_RAW en utilisant la valeur IP_PMTUDISC_PROBE (disponible depuis Linux 2.6.22). Câest aussi particuliĂšrement utile pour les outils de diagnostic comme tracepath (8) qui veulent dĂ©libĂ©rĂ©ment envoyer des paquets sonde plus larges que la MTU observĂ©e du chemin.
IP_MULTICAST_ALL (depuis Linux 2.6.31)
Cette option peut ĂȘtre utilisĂ©e pour modifier la politique de distribution des messages de diffusion multiple. Ce paramĂštre est un entier boolĂ©en (par dĂ©faut Ă Â 1). Si ce dernier est Ă Â 1, le socket recevra les messages de tous les groupes qui ont Ă©tĂ© joints globalement par tout le systĂšme. Sinon, seuls seront distribuĂ©s les messages des groupes auxquels le socket sâest explicitement joint (par exemple en utilisant lâoption IP_ADD_MEMBERSHIP sur ce socket particulier).
IP_MULTICAST_IF (depuis Linux 1.2)
RĂ©gler le pĂ©riphĂ©rique local pour un socket de diffusion multiple. Lâargument pour setsockopt (2) est une structure ip_mreqn ou (depuis Linux 3.5) ip_mreq similaire Ă IP_ADD_MEMBERSHIP , ou une structure in_addr . Le noyau dĂ©termine quelle structure est passĂ©e en se basant sur la taille passĂ©e dans optlen . Pour getsockopt (2), lâargument est une structure in_addr .
IP_MULTICAST_LOOP (depuis Linux 1.2)
DĂ©finir ou lire un entier boolĂ©en indiquant si les paquets de diffusion multiple doivent ĂȘtre renvoyĂ©s aux sockets locaux.
IP_MULTICAST_TTL (depuis Linux 1.2)
DĂ©finir ou lire la valeur du champ Time-to-Live des paquets de diffusion multiple sortants sur ce socket. Il est trĂšs important pour les paquets de diffusion multiple de dĂ©finir ce champ le plus petit possible. La valeur par dĂ©faut est 1, ce qui signifie que les paquets de diffusion multiple ne quittent pas le rĂ©seau local Ă moins que le programme de lâutilisateur ne le rĂ©clame explicitement. Lâargument est un entier.
IP_NODEFRAG (depuis Linux 2.6.36)
Si activĂ© (argument diffĂ©rent de zĂ©ro), le rĂ©assemblage des paquets sortants est dĂ©sactivĂ© dans la couche netfilter. Lâargument est un entier.
Cette option est valable seulement pour les sockets SOCK_RAW .
IP_OPTIONS (depuis Linux 2.0)
DĂ©finir ou lire les options IP Ă envoyer avec chaque paquet de ce socket. Les arguments sont un pointeur sur un tampon mĂ©moire contenant les options et la longueur des options. Lâappel Ă setsockopt (2) dĂ©finit les options IP associĂ©es Ă un socket. La taille maximale des options pour IPv4 vaut 40 octets. Consultez la RFC 791 pour les options autorisĂ©es. Lorsque le paquet de requĂȘte de connexion initiale dâun socket SOCK_STREAM contient des options IP, celles-ci seront automatiquement rĂ©glĂ©es aux options du paquet initial avec les en-tĂȘtes de routage inversĂ©s. Les paquets entrants ne peuvent pas modifier les options aprĂšs que la connexion a Ă©tĂ© Ă©tablie. Le traitement des options de routage des paquets entrants est dĂ©sactivĂ© par dĂ©faut et peut ĂȘtre activĂ© en utilisant lâinterface accept_source_route de /proc . Les autres options, comme les horodatages, sont toujours traitĂ©es. Pour les sockets datagramme, les options IP ne peuvent ĂȘtre dĂ©finies que par lâutilisateur local. Lâappel de getsockopt (2) avec IP_OPTIONS remplit le tampon fourni avec les options IP actuelles.
IP_PASSSEC (depuis Linux 2.6.17)
Si Labeled IPsec ou si NetLabel est configurĂ© sur les hĂŽtes Ă©metteur et rĂ©cepteur, cette option autorise la rĂ©ception du contexte de sĂ©curitĂ© du socket pair dans un message de service de type SCM_SECURITY rĂ©cupĂ©rĂ© en utilisant recvmsg (2). Cette option est uniquement gĂ©rĂ©e pour les sockets UDP. Pour les sockets TCP ou SCTP, consultez la description de lâoption SO_PEERSEC ci-dessous.
La valeur donnée comme argument pour setsockopt (2) et renvoyée comme résultat de getsockopt (2) est un indicateur booléen entier.
Le contexte de sĂ©curitĂ© renvoyĂ© dans le message de service SCM_SECURITY est du mĂȘme format que celui dĂ©crit dans lâoption SO_PEERSEC ci-dessous.
Remarque : la rĂ©utilisation du type SCM_SECURITY de message pour lâoption de socket IP_PASSSEC Ă©tait probablement une erreur, puisque dâautres messages de contrĂŽle IP utilisent leur propre schĂ©ma de numĂ©rotation dans lâespace de noms IP et utilisent la valeur dâoption de socket comme type de message. Il nây a pas de conflit actuellement puisque lâoption IP avec la mĂȘme valeur que SCM_SECURITY est IP_HDRINCL et cela nâest jamais utilisĂ© pour un type de message de contrĂŽle.
IP_PKTINFO (depuis Linux 2.2)
Fournir un message IP_PKTINFO de service qui contient une structure pktinfo fournissant quelques informations sur le paquet entrant. Cela ne fonctionne que pour les sockets orientĂ©s datagramme. Lâargument est un attribut indiquant au socket si le message IP_PKTINFO doit ĂȘtre passĂ© ou non. Le message lui-mĂȘme ne peut ĂȘtre Ă©crit ou lu que comme message de contrĂŽle avec un paquet en utilisant recvmsg (2) ou sendmsg (2).
struct
in_pktinfo {
unsigned int ipi_ifindex; /* NumĂ©ro dâinterface
*/
struct in_addr ipi_spec_dst; /* Adresse locale */
struct in_addr ipi_addr; /* Adresse de destination
dans lâen-tĂȘte*/
};
ipi_ifindex est le numĂ©ro unique de lâinterface sur laquelle le paquet a Ă©tĂ© reçu. ipi_spec_dst est lâadresse locale du paquet et ipi_addr est lâadresse de destination dans lâen-tĂȘte du paquet. Si IP_PKTINFO est passĂ© Ă sendmsg (2) et ipi_spec_dst est diffĂ©rent de zĂ©ro, alors il sera utilisĂ© comme adresse source pour la recherche dans la table de routage et pour dĂ©finir les options de routage IP. Si ipi_ifindex est diffĂ©rent de zĂ©ro, lâadresse locale principale de lâinterface indiquĂ©e par ce numĂ©ro remplace ipi_spec_dst pour la recherche dans la table de routage.
Non pris en charge par les sockets SOCK_STREAM .
IP_RECVERR (depuis Linux 2.2)
Activer le passage amĂ©liorĂ© des messages dâerreur. Lorsque cette option est activĂ©e pour un socket datagramme, toutes les erreurs gĂ©nĂ©rĂ©es seront envoyĂ©es dans une file dâerreurs propre au socket. Quand lâutilisateur dĂ©tecte une erreur dâopĂ©ration sur le socket, celle-ci peut ĂȘtre examinĂ©e en invoquant recvmsg (2) avec lâattribut MSG_ERRQUEUE dĂ©fini. La structure sock_extended_err dĂ©crivant lâerreur sera passĂ©e comme message de service ayant le type IP_RECVERR et le niveau IPPROTO_IP . Cela permet une gestion dâerreur fiable sur les sockets non connectĂ©s. La partie comprenant les donnĂ©es reçues de la file dâerreurs contient le paquet ayant rencontrĂ© un problĂšme.
Le message de contrĂŽle IP_RECVERR contient une structure sock_extended_err :
#define
SO_EE_ORIGIN_NONE 0
#define SO_EE_ORIGIN_LOCAL 1
#define SO_EE_ORIGIN_ICMP 2
#define SO_EE_ORIGIN_ICMP6 3
struct sock_extended_err {
uint32_t ee_errno; /* NumĂ©ro dâerreur */
uint8_t ee_origin; /* Origine de lâerreur */
uint8_t ee_type; /* Type */
uint8_t ee_code; /* Code */
uint8_t ee_pad;
uint32_t ee_info; /* Informations supplémentaires */
uint32_t ee_data; /* Autres données */
/* Dâautres donnĂ©es possibles */
};
struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err
*);
ee_errno contient le numĂ©ro de lâerreur errno mise en file dâattente. ee_origin est le code de lâorigine de lâerreur. Les autres champs sont spĂ©cifiques au protocole. La macro SO_EE_OFFENDER renvoie un pointeur sur lâadresse dâun objet rĂ©seau dâoĂč lâerreur provient en prenant en argument un pointeur sur le message de service. Si cette adresse nâest pas connue, le membre sa_family de la structure sockaddr contient AF_UNSPEC et les autres champs de sockaddr ne sont pas dĂ©finis.
IP utilise la structure sock_extended_err comme suit : ee_origin contient SO_EE_ORIGIN_ICMP pour les erreurs reçues sous forme de paquet ICMP ou SO_EE_ORIGIN_LOCAL pour les erreurs locales. Les valeurs inconnues doivent ĂȘtre ignorĂ©es. ee_type et ee_code sont dĂ©finis Ă partir des champs type et code de lâen-tĂȘte ICMP. ee_info contient la MTU dĂ©terminĂ©e pour les erreurs EMSGSIZE . Le message contient aussi lâadresse sockaddr_in du nĆud ayant causĂ© lâerreur, qui peut ĂȘtre obtenu avec la macro SO_EE_OFFENDER . Le champ sin_family de lâadresse fournie par SO_EE_OFFENDER vaut AF_UNSPEC si la source Ă©tait inconnue. Lorsque les erreurs proviennent du rĂ©seau, toutes les options IP ( IP_OPTIONS , IP_TTL , etc.) valables pour le socket et contenues dans le paquet dâerreur sont transmises comme messages de contrĂŽle. La charge utile du paquet causant lâerreur est renvoyĂ©e comme charge normale. TCP nâa pas de file dâerreurs et MSG_ERRQUEUE nâest pas permis sur les sockets SOCK_STREAM . IP_RECVERR est valable pour TCP, mais toutes les erreurs sont renvoyĂ©es par des fonctions de socket ou seulement SO_ERROR .
Pour les sockets raw, IP_RECVERR active le passage de toutes les erreurs ICMP reçues Ă lâapplication, sinon les erreurs sont seulement renvoyĂ©es sur les sockets connectĂ©s.
Il définit ou récupÚre un attribut booléen entier. IP_RECVERR est désactivée par défaut.
IP_RECVOPTS (depuis Linux 2.2)
Passer Ă lâutilisateur toutes les options IP entrantes dans un message de contrĂŽle IP_OPTIONS . Lâen-tĂȘte de routage et les autres options sont dĂ©jĂ remplies pour lâhĂŽte local. Cela nâest pas gĂ©rĂ© pour les sockets SOCK_STREAM .
IP_RECVORIGDSTADDR (depuis Linux 2.6.29)
Cette option boolĂ©enne active le message de service IP_ORIGDSTADDR dans recvmsg (2), dans lequel le noyau renvoie lâadresse de destination originelle du datagramme en train dâĂȘtre reçu. Le message de service contient une structure sockaddr_in . Option non prise en charge pour les sockets SOCK_STREAM .
IP_RECVTOS (depuis Linux 2.2)
Le message de service IP_TOS est passĂ© avec les paquets entrants si cette option est activĂ©e. Il contient un octet qui dĂ©crit le champ Type-Of-Service/Precedence de lâen-tĂȘte du paquet. Il sâagit dâun attribut entier boolĂ©en. Non pris en charge par les sockets SOCK_STREAM .
IP_RECVTTL (depuis Linux 2.2)
Lorsque cet attribut est dĂ©fini, passer un message de contrĂŽle IP_TTL avec le champ Time-to-Live du paquet reçu, sous forme dâentier 32 bits. Cela nâest pas gĂ©rĂ© pour les sockets SOCK_STREAM .
IP_RETOPTS (depuis Linux 2.2)
Identique Ă IP_RECVOPTS , mais renvoie les options raw non traitĂ©es, avec les options dâenregistrement des horodatages et du routage non remplies pour ce pas (hop). Non pris en charge par les sockets SOCK_STREAM .
IP_ROUTER_ALERT (depuis Linux 2.2)
Passer tous les paquets Ă transfĂ©rer avec lâoption IP Router Alert activĂ©e sur ce socket. Ce nâest valable que pour les sockets raw et sert par exemple pour les dĂ©mons RSVP de lâespace utilisateur. Les paquets enregistrĂ©s ne sont pas redirigĂ©s par le noyau, lâutilisateur est responsable de leur rĂ©acheminement. La liaison du socket est ignorĂ©e et de tels paquets ne sont filtrĂ©s que par le protocole. Lâattribut est un entier.
IP_TOS (depuis Linux 1.0)
DĂ©finir ou rĂ©cupĂ©rer le champ Type-Of-Service (TOS) envoyĂ© avec chaque paquet IP sortant de ce socket. Cela sert Ă gĂ©rer sur le rĂ©seau les prioritĂ©s entre paquets. TOS est un octet. Quelques attributs TOS standards sont dĂ©finis : IPTOS_LOWDELAY pour minimiser les dĂ©lais pour le trafic interactif, IPTOS_THROUGHPUT pour optimiser le dĂ©bit, IPTOS_RELIABILITY pour optimiser la fiabilitĂ©, IPTOS_MINCOST qui doit ĂȘtre utilisĂ© pour les donnĂ©es de remplissage oĂč la lenteur de transmission importe peu. Une au maximum de ces valeurs TOS peut ĂȘtre indiquĂ©e. Les autres bits ne sont pas valables et doivent ĂȘtre effacĂ©s. Linux envoie dâabord des datagrammes IPTOS_LOWDELAY par dĂ©faut, mais le comportement exact dĂ©pend de la politique configurĂ©e pour la file dâattente. Quelques niveaux de haute prioritĂ© peuvent rĂ©clamer les privilĂšges du superutilisateur (la capacitĂ© CAP_NET_ADMIN ).
IP_TRANSPARENT (depuis Linux 2.6.24)
Cet attribut boolĂ©en active le mandataire transparent sur ce socket. Cette option de socket permet Ă lâapplication appelante de sâattacher Ă une adresse IP non locale et de fonctionner Ă la fois comme un client et un serveur avec lâadresse extĂ©rieure comme point de terminaison local. Remarque : le routage doit ĂȘtre configurĂ© pour que les paquets envoyĂ©s vers lâadresse extĂ©rieure soient routĂ©s Ă travers la boĂźte TProxy (câest-Ă -dire le systĂšme hĂ©bergeant lâapplication utilisant lâoption de socket IP_TRANSPARENT ). Les privilĂšges du superutilisateur sont nĂ©cessaires pour lâactivation de cette option de socket (la capacitĂ© CAP_NET_ADMIN ).
Cette option doit Ă©galement ĂȘtre configurĂ©e sur le socket redirigĂ© pour la redirection TProxy avec la cible iptables TPROXY.
IP_TTL (depuis Linux 1.0)
Définir ou récupérer le contenu actuel du champ Time-to-Live utilisé avec chaque paquet envoyé depuis ce socket.
IP_UNBLOCK_SOURCE (depuis Linux 2.4.22 et 2.5.68)
DĂ©bloquer une source de diffusion multiple prĂ©cĂ©demment bloquĂ©e. Renvoi de EADDRNOTAVAIL si la source indiquĂ©e nâĂ©tait pas bloquĂ©e.
Lâargument est une structure ip_mreq_source comme dĂ©crite pour IP_ADD_SOURCE_MEMBERSHIP .
SO_PEERSEC (depuis Linux 2.6.17)
Si Labeled IPsec ou si NetLabel est configurĂ© sur les hĂŽtes Ă©metteur et rĂ©cepteur, cette option de socket en lecture seule autorise la rĂ©ception du contexte de sĂ©curitĂ© du socket pair connectĂ© Ă ce socket. Par dĂ©faut, cela sera le mĂȘme contexte que celui du processus qui a créé le socket pair Ă moins quâil soit outrepassĂ© par la politique ou par un processus ayant les permissions requises.
Lâargument de getsockopt (2) est un pointeur vers un tampon de la longueur indiquĂ©e en octets dans lequel la chaĂźne de contexte de sĂ©curitĂ© sera copiĂ©e. Si la taille du tampon est infĂ©rieure Ă celle de la chaĂźne du contexte de sĂ©curitĂ©, alors getsockopt (2) renvoie -1 , dĂ©finit errno Ă ERANGE et renvoie la taille requise Ă lâaide de optlen . Lâappelant doit allouer initialement au moins NAME_MAX octets pour le tampon, bien que cela ne soit pas garanti dâĂȘtre suffisant. Redimensionner le tampon Ă la taille renvoyĂ©e et rĂ©essayer peuvent ĂȘtre nĂ©cessaires.
La chaĂźne de contexte de sĂ©curitĂ© peut inclure un octet NULL final dans la taille renvoyĂ©e, mais il nâest pas garanti que ce soit fait : un contexte de sĂ©curitĂ© « abc » peut ĂȘtre reprĂ©sentĂ© soit par {âaâ,âbâ,âcâ} de taille 3, ou {âaâ,âbâ,âcâ,â\0â} de taille 4, qui sont considĂ©rĂ©s comme interchangeables. La chaĂźne peut ĂȘtre affichĂ©e, mais ne contient pas dâoctet NULL final, et elle est dans un encodage non prĂ©cisĂ© (en particulier, il nâest pas garanti que ce soit ASCII ou UTF-8).
Lâutilisation de cette option pour les sockets de la famille dâadresses AF_INET est prise en charge depuis Linux 2.6.17 pour les sockets TCP et depuis Linux 4.17 pour les sockets SCTP.
Pour SELinux, NetLabel transmet uniquement la portion MLS du contexte de sĂ©curitĂ© du pair sur le rĂ©seau, laissant par dĂ©faut le reste du contexte de sĂ©curitĂ© aux valeurs dĂ©finies dans la politique pour lâidentifiant de sĂ©curitĂ© initial netmsg (SID). Cependant, NetLabel peut ĂȘtre configurĂ© pour passer les contextes de sĂ©curitĂ© en entier sur la boucle locale. Labeled IPSEC passe toujours les contextes de sĂ©curitĂ© comme partie de lâassociation de sĂ©curitĂ© (security association â SA) et les recherche en se basant sur lâassociation de chaque paquet.
/proc interfaces
Le protocole IP
prend en charge une sĂ©rie dâinterfaces
/proc
pour configurer certaines options globales. Les
paramĂštres peuvent ĂȘtre accĂ©dĂ©s
en lisant ou écrivant dans les fichiers du
répertoire
/proc/sys/net/ipv4/
. Les interfaces
décrites comme des booléens prennent une
valeur entiĂšre. Celle-ci signifie que lâoption
correspondante est activée si elle est
différente de zéro
(« true ») et désactivée
si elle vaut zéro (« false »).
ip_always_defrag
(booléen ; depuis Linux
2.2.13)
NouveautĂ© des noyaux 2.2.13, dans les noyaux prĂ©cĂ©dents, cette fonctionnalitĂ© Ă©tait contrĂŽlĂ©e lors de la compilation avec lâoption CONFIG_IP_ALWAYS_DEFRAG . Cette option nâest plus prĂ©sente dans les versions 2.4.x et suivantes.
Lorsque cet attribut boolĂ©en est activĂ© (diffĂ©rent de zĂ©ro), les fragments entrants (morceaux de paquets IP obtenus quand un hĂŽte entre lâorigine et la destination a dĂ©cidĂ© que les paquets Ă©taient trop grands et les a coupĂ©s en morceaux) seront rĂ©assemblĂ©s (dĂ©fragmentĂ©s) avant dâĂȘtre traitĂ©s, mĂȘme sâils doivent ĂȘtre transfĂ©rĂ©s.
Cette option nâest Ă utiliser que pour un pare-feu qui est le seul lien dâentrĂ©e du rĂ©seau ou pour un mandataire transparent. Il ne faut jamais lâutiliser pour un routeur ou un hĂŽte normal. Sinon, les communications fragmentĂ©es peuvent ĂȘtre perturbĂ©es si les fragments circulent dans des liaisons diffĂ©rentes. La dĂ©fragmentation a Ă©galement un coĂ»t mĂ©moire et processeur important.
Câest automatiquement activĂ© lorsque le camouflage des connexions (masquerading) ou le mandataire transparent sont configurĂ©s.
ip_autoconfig (depuis Linux 2.2 Ă 2.6.17)
Non documenté.
ip_default_ttl (entier ; défaut : 64 ; depuis Linux 2.2)
DĂ©finir la valeur par dĂ©faut du champ Time-to-Live des paquets sortants. Cela peut ĂȘtre modifiĂ© individuellement pour chaque socket avec lâoption IP_TTL .
ip_dynaddr (booléen ; désactivé par défaut ; depuis Linux 2.0.31)
Activer la réécriture dynamique des adresses de socket et du masquerading lors du changement dâadresse dâinterface. Cela sert pour les liaisons tĂ©lĂ©phoniques avec des adresses IP changeantes. 0 signifie aucune réécriture, 1 les autorise et 2 demande un mode bavard.
ip_forward (booléen ; désactivé par défaut) ; depuis Linux 1.2
Activer le transfert dâIP avec un attribut boolĂ©en. Le transfert dâIP peut aussi ĂȘtre configurĂ© interface par interface.
ip_local_port_range (depuis Linux 2.2)
Ce fichier contient deux entiers qui dĂ©finissent lâintervalle par dĂ©faut de ports locaux allouĂ©s aux sockets qui ne sont pas explicitement attachĂ©s Ă un numĂ©ro de port â câest-Ă -dire lâintervalle utilisĂ© pour les ports Ă©phĂ©mĂšres . Un port Ă©phĂ©mĂšre est allouĂ© Ă un socket dans les circonstances suivantes :
|
- |
le numéro de port dans une adresse de socket est défini à 0 en appelant bind (2) ; |
||
|
- |
listen (2) est appelĂ© sur un socket de flux qui nâĂ©tait pas attachĂ© auparavant ; |
||
|
- |
connect (2) a Ă©tĂ© appelĂ©e sur un socket qui nâĂ©tait pas attachĂ© auparavant ; |
||
|
- |
sendto (2) est appelĂ©e sur un socket datagramme qui nâĂ©tait pas attachĂ© auparavant. |
Lâallocation de ports Ă©phĂ©mĂšres commence avec le premier numĂ©ro de ip_local_port_range et se termine avec le second. Si lâintervalle de ports Ă©phĂ©mĂšres est Ă©puisĂ©, alors lâappel systĂšme associĂ© renvoie une erreur (mais consultez BOGUES ).
Remarquez que lâintervalle de ports dans ip_local_port_range ne devrait pas entrer en conflit avec les ports utilisĂ©s pour le masquerading (bien que cela soit traitĂ©). De mĂȘme, des choix arbitraires peuvent poser des problĂšmes avec certains filtrages de pare-feu qui font des suppositions sur les ports locaux utilisĂ©s. Le premier nombre doit ĂȘtre au moins supĂ©rieur Ă 1024 et, de prĂ©fĂ©rence, Ă 4096 pour Ă©viter les collisions avec les ports officiels et minimiser les problĂšmes de pare-feu.
ip_no_pmtu_disc (booléen ; désactivé par défaut) ; depuis Linux 2.2
Si activĂ©, supprimer la dĂ©couverte par dĂ©faut des MTU des chemins pour les sockets TCP. La dĂ©couverte de la MTU dâun chemin peut Ă©chouer avec des pare-feu mal configurĂ©s (qui rejettent tous les paquets ICMP) ou des interfaces mal configurĂ©es (par exemple, une liaison point-Ă -point oĂč les deux extrĂ©mitĂ©s nâont pas la mĂȘme MTU). Il vaut mieux corriger le routeur dĂ©fectueux que supprimer globalement la dĂ©couverte des MTU des chemins, car cette derniĂšre option entraĂźne un coĂ»t Ă©levĂ© pour le rĂ©seau.
ip_nonlocal_bind (booléen ; désactivé par défaut ; depuis Linux 2.4)
Si dĂ©fini, permettre aux processus de sâattacher avec bind (2) Ă des adresses IP non locales, ce qui peut ĂȘtre utile mais peut faire planter certaines applications.
ip6frag_time (entier ; défaut : 30)
DĂ©finir le temps en secondes de conservation dâun fragment IPv6 en mĂ©moire.
ip6frag_secret_interval (entier ; défaut : 600)
DĂ©finir lâintervalle de rĂ©gĂ©nĂ©ration (en secondes) du secret de hachage (ou sa durĂ©e de vie) pour les fragments IPv6.
ipfrag_high_thresh
(entier)
ipfrag_low_thresh
(entier)
Si le nombre de fragments IP en attente atteint ipfrag_high_thresh , la file est restreinte Ă ipfrag_low_thresh . Contient un entier avec le nombre dâoctets.
neigh/*
Consultez arp (7).
Ioctls
Tous les ioctls dĂ©crits dans socket (7) sâappliquent Ă ip .
Les ioctls pour configurer les paramÚtres génériques des périphériques sont décrits dans netdevice (7).
ERREURS
|
EACCES |
Lâutilisateur a essayĂ© de rĂ©aliser une opĂ©ration sans avoir les permissions nĂ©cessaires. Cela inclut : lâenvoi dâun paquet vers une adresse de diffusion gĂ©nĂ©rale sans avoir activĂ© lâattribut SO_BROADCAST , lâenvoi dâun paquet par une route interdite , la modification du paramĂ©trage du pare-feu sans les privilĂšges du superutilisateur (la capacitĂ© CAP_NET_ADMIN ) et lâattachement Ă un port privilĂ©giĂ© sans les privilĂšges du superutilisateur (la capacitĂ© CAP_NET_BIND_SERVICE ). |
EADDRINUSE
Tentative dâattachement Ă une adresse dĂ©jĂ utilisĂ©e.
EADDRNOTAVAIL
Une interface inexistante a Ă©tĂ© demandĂ©e ou lâadresse dâĂ©mission demandĂ©e nâĂ©tait pas locale.
|
EAGAIN |
LâopĂ©ration sur un socket non bloquant devrait bloquer. |
EALREADY
Une connexion est déjà en cours sur un socket non bloquant.
ECONNABORTED
Une connexion a été fermée durant un appel à accept (2).
EHOSTUNREACH
Aucune table de routage valable ne correspond Ă lâadresse de destination. Cette erreur peut ĂȘtre due Ă un message ICMP dâun routeur distant ou dans la table de routage interne.
|
EINVAL |
Un argument non valable a Ă©tĂ© fourni. Pour les opĂ©rations dâenvoi, cela peut ĂȘtre causĂ© par un envoi vers une route trou noir . |
EISCONN
connect (2) a été appelée sur un socket déjà connecté.
EMSGSIZE
Un datagramme est plus grand quâune MTU sur le chemin et ne peut pas ĂȘtre fragmentĂ©.
ENOBUFS
|
ENOMEM |
La mĂ©moire libre est insuffisante. Cela signifie souvent que lâallocation mĂ©moire est contrainte par les limites du tampon de socket, pas par la mĂ©moire du systĂšme, mais ce nâest pas toujours le cas. |
||
|
ENOENT |
SIOCGSTAMP a Ă©tĂ© appelĂ© sur un socket quâaucun paquet nâa atteint. |
||
|
ENOPKG |
Un sous-systĂšme du noyau nâest pas configurĂ©. |
ENOPROTOOPT et EOPNOTSUPP
Passage dâune option de socket non valable.
ENOTCONN
LâopĂ©ration nâest dĂ©finie que pour un socket connectĂ©, mais ce socket nâĂ©tait pas connectĂ©.
|
EPERM |
Lâutilisateur nâa pas la permission de dĂ©finir une prioritĂ© haute, de changer la configuration ou dâenvoyer des signaux au groupe ou au processus demandĂ©. |
||
|
EPIPE |
La connexion a Ă©tĂ© fermĂ©e prĂ©maturĂ©ment ou volontairement par lâautre extrĂ©mitĂ©. |
ESOCKTNOSUPPORT
Le socket nâest pas configurĂ© ou un type de socket inconnu a Ă©tĂ© demandĂ©.
Dâautres erreurs peuvent ĂȘtre dĂ©clenchĂ©es par les protocoles des couches supĂ©rieures. Consultez tcp (7), raw (7), udp (7) et socket (7).
NOTES
IP_FREEBIND , IP_MSFILTER , IP_MTU , IP_MTU_DISCOVER , IP_RECVORIGDSTADDR , IP_PASSSEC , IP_PKTINFO , IP_RECVERR , IP_ROUTER_ALERT et IP_TRANSPARENT sont spécifiques à Linux.
Soyez trĂšs prudents avec lâoption SO_BROADCAST , elle nâest pas privilĂ©giĂ©e sous Linux. Il est facile de surcharger un rĂ©seau avec des diffusions gĂ©nĂ©rales sans prĂ©caution. Pour les nouveaux protocoles applicatifs, il vaut mieux utiliser un groupe de diffusion multiple plutĂŽt que la diffusion gĂ©nĂ©rale. Cette derniĂšre est dĂ©conseillĂ©e. Voir la RFC 6762 pour un exemple de protocole (mDNS) utilisant lâapproche plus moderne de diffusion multiple pour communiquer avec un groupe illimitĂ© dâhĂŽtes sur le rĂ©seau local.
Certaines autres implĂ©mentations des sockets BSD fournissent les options de socket IP_RCVDSTADDR et IP_RECVIF pour obtenir lâadresse de destination et lâinterface des datagrammes reçus. Linux propose lâoption IP_PKTINFO plus gĂ©nĂ©rale pour effectuer ce travail.
Certaines implĂ©mentations BSD des sockets fournissent Ă©galement lâoption IP_RECVTTL , mais un message de service ayant le type IP_RECVTTL est fourni avec le paquet entrant. Câest diffĂ©rent de lâoption IP_TTL utilisĂ©e sous Linux.
Lâutilisation du niveau des options de socket SOL_IP nâest pas portable, les piles basĂ©es sur BSD utilisent le niveau IPPROTO_IP .
INADDR_ANY (0.0.0.0) et INADDR_BROADCAST (255.255.255.255) sont indĂ©pendantes de lâordre des octets. Cela signifie que htonl (3) nâa aucun effet sur elles.
Compatibilité
Pour la compatibilitĂ© avec Linux 2.0, la syntaxe obsolĂšte socket(AF_INET, SOCK_PACKET, protocole ) est encore gĂ©rĂ©e pour ouvrir un socket packet (7). Cela est dĂ©conseillĂ© et doit ĂȘtre remplacĂ© par socket(AF_PACKET, SOCK_RAW, protocole ) . La principale diffĂ©rence est la nouvelle structure dâadresse sockaddr_ll pour les informations gĂ©nĂ©riques de la couche de liaison Ă la place de lâancienne sockaddr_pkt .
BOGUES
Il y a trop de valeurs dâerreurs hĂ©tĂ©rogĂšnes.
Lâerreur utilisĂ©e pour diagnostiquer lâĂ©puisement de lâintervalle de ports Ă©phĂ©mĂšres varie suivant les appels systĂšmes ( connect (2), bind (2), listen (2), sendto (2)) qui peuvent assigner des ports Ă©phĂ©mĂšres.
Les ioctls pour configurer les options dâinterface spĂ©cifiques Ă IP et les tables ARP ne sont pas dĂ©crites.
La rĂ©ception de lâadresse de destination originale avec MSG_ERRQUEUE dans msg_name par recvmsg (2) ne fonctionne pas dans certains noyaux Linux 2.2.
VOIR AUSSI
recvmsg (2), sendmsg (2), byteorder (3), capabilities (7), icmp (7), ipv6 (7), netdevice (7), netlink (7), raw (7), socket (7), tcp (7), udp (7), ip (8)
Le fichier source du noyau Documentation/networking/ip-sysctl.txt .
RFC 791 pour les spĂ©cifications IP dâorigine. RFC 1122 pour les exigences IPv4 des hĂŽtes. RFC 1812 pour les exigences IPv4 des routeurs.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et bubu <bubub@no-log.org>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .