Uso de sysctl para cambiar los parámetros del núcleo

Utilice el comando sysctl para ver y cambiar los parámetros del núcleo para modificar el comportamiento del sistema operativo, como la configuración de red, las funciones de seguridad y los límites de recursos.

Para obtener más información, consulte la página del comando man sysctl(8).

Enumeración de parámetros y valores del núcleo

Utilice el comando sysctl para examinar los parámetros del sistema de núcleo definidos en el sistema de archivos virtual /proc/sys.

Nota

El carácter delimitador del nombre de un valor es un punto (.) en lugar de una barra diagonal (/) en una ruta relativa a /proc/sys. Por ejemplo, net.ipv4.ip_forward representa net/ipv4/ip_forward.
  • Para ver todos los parámetros del núcleo y sus valores para el núcleo en ejecución, ejecute sysctl -a, por ejemplo:
    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
    ...
  • Para ver un parámetro específico y su valor, ejecute sysctl y el nombre del parámetro, por ejemplo:
    sudo sysctl kernel.dmesg_restrict
    kernel.dmesg_restrict = 0 
  • Para ver una recopilación de valores de parámetros, ejecute sysctl y el nombre de una recopilación, por ejemplo:
    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
    

Actualizar parámetros de núcleo

Utilice el comando sysctl para cambiar los valores de los parámetros del núcleo definidos en el sistema de archivos virtual /proc/sys. Los cambios de parámetros del núcleo pueden ser temporales para que el cambio dure hasta el siguiente reinicio de la instancia. O bien, puede hacer que los cambios de parámetros del núcleo sean permanentes para que se mantengan tras los reinicios de la instancia.

Realizar un cambio temporal en un parámetro del núcleo
Utilice el comando sysctl, el nombre del parámetro y su nuevo valor.

Por ejemplo, para permitir temporalmente que la instancia reenvíe paquetes IPv4 recibidos en una interfaz de red a otra, defina el valor del parámetro net.ipv4.ip_forward en 1:

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

El cambio de parámetro se revierte la próxima vez que se reinicia la instancia.

Realizar un cambio de parámetro de núcleo que se mantenga después de reiniciar la instancia
Agregue el cambio en un archivo de configuración al directorio /etc/sysctl.d. Los cambios que realice en los archivos de este directorio se aplicarán cuando se reinicie la instancia o si ejecuta el comando sysctl --system.

Por ejemplo, puede que desee limitar de forma permanente el acceso a los mensajes de buffer de anillo de núcleo para que solo los usuarios con permisos root puedan ejecutar el comando dmesg. Para ello, active kernel.dmesg_restrict mediante un archivo de configuración para que el cambio se mantenga mediante reinicios.

  1. Navegue hasta el directorio /etc/sysctl.d.
  2. Cree un archivo del tipo de configuración, por ejemplo:
    sudo touch 99-custom-sysctl.conf
  3. Abra el archivo de configuración en modo de edición. Por ejemplo, edite el archivo con el editor de texto vi:
    sudo vi 99-custom-sysctl.conf
  4. Agregar kernel.dmesg_restrict=1 al archivo, guardarlo y cerrar el editor.
  5. Restablezca la instancia para que utilice solo los valores configurados para cargarse en el momento del inicio mediante el comando sysctl --system. El sistema lee y aplica todos los archivos de configuración agregados o los cambios de configuración en los archivos existentes en el directorio /etc/sysctl.d.
    Importante

    Los valores de los parámetros del núcleo se pueden definir en varias ubicaciones. El comando sysctl --system aplica los cambios de configuración del núcleo inmediatamente sin reiniciar, lo que vuelve a cargar todos los valores de /etc/sysctl.conf, /etc/sysctl.d y todas las demás ubicaciones, como /usr/lib/sysctl.d/*.conf y /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