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