Utilisation de sysctl pour modifier les paramètres du noyau

Utilisez la commande sysctl pour voir et modifier les paramètres du noyau afin de modifier le comportement du système d'exploitation, tels que les paramètres réseau, les fonctions de sécurité et les limites de ressources.

Pour plus d'informations, consultez la page de manuel sysctl(8).

Liste des paramètres et des valeurs du noyau

Utilisez la commande sysctl pour parcourir les paramètres de système de noyau définis dans le système de fichiers virtuel /proc/sys.

Note

Le caractère séparateur dans le nom d'un paramètre est un point (.) plutôt qu'une barre oblique (/) dans un chemin relatif à /proc/sys. Par exemple, net.ipv4.ip_forward représente net/ipv4/ip_forward.
  • Pour voir tous les paramètres du noyau et leurs valeurs pour le noyau en cours d'exécution, exécutez sysctl -a, par exemple :
    sudo sysctl -a
    ...
    kernel.sched_cfs_bandwidth_slice_us = 5000
    kernel.sched_deadline_period_max_us = 4194304
    kernel.sched_deadline_period_min_us = 100
    kernel.sched_rr_timeslice_ms = 100
    kernel.sched_rt_period_us = 1000000
    kernel.sched_rt_runtime_us = 950000
    kernel.sched_schedstats = 0
    ...
  • Pour voir un paramètre spécifique et sa valeur, exécutez sysctl et le nom du paramètre, par exemple :
    sudo sysctl kernel.dmesg_restrict
    kernel.dmesg_restrict = 0 
  • Pour voir une collection de paramètres, exécutez sysctl et le nom d'une collection, par exemple :
    sudo sysctl net.ipv4.conf.all
    net.ipv4.conf.all.accept_local = 0
    net.ipv4.conf.all.accept_redirects = 1
    net.ipv4.conf.all.accept_source_route = 0
    net.ipv4.conf.all.arp_accept = 0
    net.ipv4.conf.all.arp_announce = 0
    net.ipv4.conf.all.arp_evict_nocarrier = 1
    net.ipv4.conf.all.arp_filter = 0
    net.ipv4.conf.all.arp_ignore = 0
    net.ipv4.conf.all.arp_notify = 0
    net.ipv4.conf.all.bc_forwarding = 0
    net.ipv4.conf.all.bootp_relay = 0
    net.ipv4.conf.all.disable_policy = 0
    net.ipv4.conf.all.disable_xfrm = 0
    net.ipv4.conf.all.drop_gratuitous_arp = 0
    net.ipv4.conf.all.drop_unicast_in_l2_multicast = 0
    net.ipv4.conf.all.force_igmp_version = 0
    net.ipv4.conf.all.forwarding = 0
    net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
    net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
    net.ipv4.conf.all.ignore_routes_with_linkdown = 0
    net.ipv4.conf.all.log_martians = 0
    net.ipv4.conf.all.mc_forwarding = 0
    net.ipv4.conf.all.medium_id = 0
    net.ipv4.conf.all.promote_secondaries = 0
    net.ipv4.conf.all.proxy_arp = 0
    net.ipv4.conf.all.proxy_arp_pvlan = 0
    net.ipv4.conf.all.route_localnet = 0
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.all.secure_redirects = 1
    net.ipv4.conf.all.send_redirects = 1
    net.ipv4.conf.all.shared_media = 1
    net.ipv4.conf.all.src_valid_mark = 0
    net.ipv4.conf.all.tag = 0
    

Mettre à jour les paramètres du noyau

Utilisez la commande sysctl pour modifier les valeurs des paramètres de noyau définis dans le système de fichiers virtuel /proc/sys. Les modifications des paramètres du noyau peuvent être temporaires afin que la modification dure jusqu'au redémarrage de l'instance suivante. Vous pouvez également rendre les modifications des paramètres du noyau permanentes afin qu'elles persistent lors des redémarrages de l'instance.

Modifier temporairement un paramètre de noyau
Utilisez la commande sysctl, le nom du paramètre et sa nouvelle valeur.

Par exemple, pour permettre temporairement à l'instance de transmettre les paquets IPv4 reçus sur une interface de réseau à une autre, réglez la valeur du paramètre net.ipv4.ip_forward à 1 :

sudo sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

La modification du paramètre est annulée lors du prochain redémarrage de l'instance.

Effectuer une modification des paramètres du noyau qui persiste après le redémarrage de l'instance
Ajoutez la modification d'un fichier de configuration au répertoire /etc/sysctl.d. Toutes les modifications que vous apportez aux fichiers de ce répertoire prennent effet lorsque l'instance redémarre ou si vous exécutez la commande sysctl --system.

Par exemple, vous pouvez limiter définitivement l'accès aux messages de mémoire tampon en anneau du noyau afin que seuls les utilisateurs disposant d'autorisations racines puissent exécuter la commande dmesg. Pour ce faire, activez kernel.dmesg_restrict à l'aide d'un fichier de configuration afin que la modification persiste lors des redémarrages.

  1. Naviguez jusqu'au répertoire /etc/sysctl.d.
  2. Créez un fichier de configuration, par exemple :
    sudo touch 99-custom-sysctl.conf
  3. Ouvrez le fichier de configuration en mode de modification. Par exemple, modifiez le fichier avec l'éditeur de texte vi :
    sudo vi 99-custom-sysctl.conf
  4. Ajoutez kernel.dmesg_restrict=1 au fichier, enregistrez-le et fermez l'éditeur.
  5. Réinitialisez l'instance afin d'utiliser uniquement les valeurs configurées pour le chargement au démarrage à l'aide de la commande sysctl --system. Tous les fichiers de configuration ajoutés ou les modifications de configuration apportées aux fichiers existants dans le répertoire /etc/sysctl.d sont lus par le système et appliqués.
    Important

    Les valeurs des paramètres du noyau peuvent être définies à plusieurs emplacements. La commande sysctl --system applique immédiatement les modifications de configuration du noyau sans redémarrage, ce qui recharge tous les paramètres à partir de /etc/sysctl.conf, /etc/sysctl.d et de tous les autres emplacements tels que /usr/lib/sysctl.d/*.conf et /run/sysctl.d/*.conf.
    sudo sysctl --system
    * Applying /usr/lib/sysctl.d/01-unprivileged-bpf.conf ...
    * Applying /usr/lib/sysctl.d/10-default-yama-scope.conf ...
    * Applying /usr/lib/sysctl.d/50-coredump.conf ...
    * Applying /usr/lib/sysctl.d/50-default.conf ...
    * Applying /usr/lib/sysctl.d/50-ipv6.conf ...
    * Applying /usr/lib/sysctl.d/50-libkcapi-optmem_max.conf ...
    * Applying /usr/lib/sysctl.d/50-pid-max.conf ...
    * Applying /usr/lib/sysctl.d/50-redhat.conf ...
    * Applying /usr/lib/sysctl.d/50-scsi-logging.conf ...
    * Applying /etc/sysctl.d/99-custom-sysctl.conf ...  <--New configuration file
    * Applying /etc/sysctl.d/99-sysctl.conf ...
    * Applying /etc/sysctl.conf ...
    kernel.unprivileged_bpf_disabled = 1
    kernel.yama.ptrace_scope = 0
    kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %d
    kernel.core_pipe_limit = 16
    fs.suid_dumpable = 2
    kernel.sysrq = 16
    kernel.core_uses_pid = 1
    net.ipv4.conf.default.rp_filter = 2
    net.ipv4.conf.ens3.rp_filter = 2
    net.ipv4.conf.lo.rp_filter = 2
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.ens3.accept_source_route = 0
    net.ipv4.conf.lo.accept_source_route = 0
    net.ipv4.conf.default.promote_secondaries = 1
    net.ipv4.conf.ens3.promote_secondaries = 1
    net.ipv4.conf.lo.promote_secondaries = 1
    net.ipv4.ping_group_range = 0 2147483647
    net.core.default_qdisc = fq_codel
    fs.protected_hardlinks = 1
    fs.protected_symlinks = 1
    fs.protected_regular = 1
    fs.protected_fifos = 1
    net.ipv6.conf.default.disable_ipv6 = 0
    net.ipv6.conf.all.disable_ipv6 = 0
    net.core.optmem_max = 81920
    kernel.pid_max = 4194304
    kernel.kptr_restrict = 1
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.ens3.rp_filter = 1
    net.ipv4.conf.lo.rp_filter = 1
    dev.scsi.logging_level = 68
    kernel.dmesg_restrict = 1  <--Parameter change read from new configuration file.
    kernel.unknown_nmi_panic = 1