Manpages

NAME

sysctl.d - 在 启 动 时 配 置 内 核 参 数

SYNOPSIS

/etc/sysctl.d/*.conf

/run/sysctl.d/*.conf

/usr/lib/sysctl.d/*.conf

描 述

在 系 统 启 动 时 , systemd-sysctl.service(8) 根 据 上 面 列 出 的 配 置 文 件 设 置 sysctl(8) [1] 内 核 参 数 。

配 置 文 件 格 式

配 置 文 件 的 格 式 是 一 系 列 "KEY=VALUE"行 (每 行 一 对 )。 空 行 以 及 以 "#" 或 ";" 开 头 的 行 都 将 被 忽 略 。 注 意 , 在 KEY内 部 , 可 以 使 用 "/" 或 "." 作 为 分 隔 符 。 如 果 第 一 个 分 隔 符 是 "/" , 那 么 其 余 的 分 隔 符 将 保 持 原 样 ; 如 果 第 一 个 分 隔 符 是 "." , 那 么 互 换 所 有 的 "/" 与 "." ; 例 如 , "kernel.domainname=foo" 等 价 于 "kernel/domainname=foo" , 都 会 将 "foo" 写 入 /proc/sys/kernel/domainname 参 数 中 。 同 样 的 , "net.ipv4.conf.enp3s0/200.forwarding" 等 价 于 "net/ipv4/conf/enp3s0.200/forwarding" , 都 是 指 /proc/sys/net/ipv4/conf/enp3s0.200/forwarding 参 数 。

sysctl.d/ 中 的 设 置 将 在 系 统 启 动 的 早 期 被 应 用 。 针 对 网 络 接 口 的 配 置 , 则 会 在 对 应 的 网 络 接 口 出 现 的 时 候 被 应 用 , 具 体 说 来 就 是 net.ipv4.conf.*, net.ipv6.conf.*, net.ipv4.neigh.*, net.ipv6.neigh.* 参 数 。 许 多 sysctl 参 数 仅 在 加 载 相 应 的 内 核 模 块 之 后 才 可 用 。 因 为 内 核 模 块 是 按 需 动 态 加 载 的 (例 如 在 插 入 新 硬 件 或 启 动 网 络 时 ), 所 以 在 系 统 启 动 早 期 运 行 的 systemd-sysctl.service(8) 无 法 设 置 那 些 依 赖 于 特 定 内 核 模 块 的 参 数 。 对 于 这 些 参 数 , 首 选 的 方 法 是 通 过 udev(7) 规 则 来 设 置 , 次 选 的 方 法 是 将 这 些 模 块 添 加 到 modules-load.d(5) 中 , 因 为 modules-load.d(5) 中 的 模 块 会 在 运 行 systemd-sysctl.service(8) 前 被 无 条 件 的 静 态 加 载 (参 见 "例 子 "小 节 )。

配 置 目 录 及 其 优 先 级

配 置 文 件 依 次 从 /etc/, /run/, /usr/lib/ 目 录 中 读 取 。 配 置 文 件 的 名 称 必 须 符 合 filename.conf 格 式 。 对 于 不 同 目 录 下 的 同 名 配 置 文 件 , 仅 以 优 先 级 最 高 的 目 录 中 的 那 一 个 为 准 。 具 体 说 来 就 是 : /etc/ 的 优 先 级 最 高 、 /run/ 的 优 先 级 居 中 、 /usr/lib/ 的 优 先 级 最 低 。 软 件 包 应 该 将 自 带 的 配 置 文 件 安 装 在 /usr/lib/ 目 录 中 。 /etc/ 目 录 仅 供 系 统 管 理 员 使 用 。 所 有 的 配 置 文 件 (无 论 位 于 哪 个 目 录 中 ), 统 一 按 照 文 件 名 的 字 典 顺 序 处 理 。 如 果 在 多 个 配 置 文 件 中 设 置 了 同 一 个 选 项 , 那 么 仅 以 文 件 名 最 靠 后 (字 典 顺 序 )的 那 一 个 为 准 。 为 了 便 于 排 序 , 建 议 给 所 有 配 置 文 件 都 加 上 两 位 十 进 制 数 字 的 文 件 名 前 缀 。 如 果 系 统 管 理 员 想 要 屏 蔽 /usr/lib/ 目 录 中 的 某 个 配 置 文 件 , 那 么 最 佳 做 法 是 在 /etc/ 目 录 中 创 建 一 个 指 向 /dev/null 的 同 名 符 号 链 接 , 即 可 彻 底 屏 蔽 /usr/lib/ 目 录 中 的 同 名 文 件 。 如 果 软 件 包 自 带 的 某 个 配 置 文 件 位 于 initrd 镜 像 中 , 那 么 还 必 须 重 新 生 成 initrd 镜 像 。

例 子

Example 1. 设 置 内 核 YP域 名

/etc/sysctl.d/domain-name.conf:

kernel.domainname=example.com

Example 2. 利 用 udev规 则 设 置 动 态 内 核 模 块 的 参 数 (方 法 一 )

/etc/udev/rules.d/99-bridge.rules:

ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \
RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/bridge"

/etc/sysctl.d/bridge.conf:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0 因 为 此 方 法 在 加 载 模 块 的 同 时 设 置 模 块 的 参 数 , 所 以 仅 在 加 载 br_netfilter 模 块 之 后 才 能 过 滤 桥 接 包 , 若 不 想 过 滤 桥 接 包 , 只 要 不 加 载 br_netfilter 模 块 即 可 。

Example 3. 利 用 modules-load.d 目 录 设 置 动 态 内 核 模 块 的 参 数 (方 法 二 )

/etc/modules-load.d/bridge.conf:

br_netfilter

/etc/sysctl.d/bridge.conf:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0 因 为 此 方 法 总 是 无 条 件 的 加 载 br_netfilter 模 块 , 并 且 总 是 无 条 件 的 设 置 模 块 的 参 数 , 所 以 总 是 无 条 件 的 过 滤 桥 接 包 , 若 不 想 过 滤 桥 接 包 , 必 须 主 动 卸 载 br_netfilter 模 块 。

参 见

systemd(1), systemd-sysctl.service(8), systemd-delta(1), sysctl(8) [1] , sysctl.conf(5), modprobe(8)

NOTES

1.

sysctl(8)

[set $man.base.url.for.relative.links]//man/sysctl.html

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 翻 译 人 员 : 金 步 国 金 步 国 作 品 集 : http://www.jinbuguo.com 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh