Provided by: manpages-zh_1.6.3.2-1_all
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