'\" t .TH "SYSCTL\&.D" "5" "" "systemd 231" "sysctl.d" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" sysctl.d \- 在启动时配置内核参数 .SH "SYNOPSIS" .PP /etc/sysctl\&.d/*\&.conf .PP /run/sysctl\&.d/*\&.conf .PP /usr/lib/sysctl\&.d/*\&.conf .SH "描述" .PP 在系统启动时, \fBsystemd-sysctl.service\fR(8) 根据上面列出的配置文件设置 \m[blue]\fBsysctl(8)\fR\m[]\&\s-2\u[1]\d\s+2 内核参数。 .SH "配置文件格式" .PP 配置文件的格式是 一系列"KEY=VALUE"行(每行一对)。 空行以及以 "#" 或 ";" 开头的行都将被忽略。 .PP 注意,在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 参数。 .PP sysctl\&.d/ 中的设置将在系统启动的早期被应用。 针对网络接口的配置, 则会在对应的网络接口出现的时候被应用, 具体说来就是 net\&.ipv4\&.conf\&.*, net\&.ipv6\&.conf\&.*, net\&.ipv4\&.neigh\&.*, net\&.ipv6\&.neigh\&.* 参数。 .PP 许多 sysctl 参数仅在加载相应的内核模块之后才可用。 因为内核模块是按需动态加载的 (例如在插入新硬件或启动网络时), 所以在系统启动早期运行的 \fBsystemd-sysctl.service\fR(8) 无法设置那些依赖于特定内核模块的参数。 对于这些参数, 首选的方法是通过 \fBudev\fR(7) 规则来设置, 次选的方法是将这些模块添加到 \fBmodules-load.d\fR(5) 中, 因为 \fBmodules-load.d\fR(5) 中的模块会在运行 \fBsystemd-sysctl.service\fR(8) 前被无条件的静态加载(参见"例子"小节)。 .SH "配置目录及其优先级" .PP 配置文件依次从 /etc/, /run/, /usr/lib/ 目录中读取。 配置文件的名称必须符合 \fIfilename\fR\&.conf 格式。 对于不同目录下的同名配置文件,仅以优先级最高的目录中的那一个为准。 具体说来就是: /etc/ 的优先级最高、 /run/ 的优先级居中、 /usr/lib/ 的优先级最低。 .PP 软件包应该将自带的配置文件安装在 /usr/lib/ 目录中。 /etc/ 目录仅供系统管理员使用。 所有的配置文件(无论位于哪个目录中),统一按照文件名的字典顺序处理。 如果在多个配置文件中设置了同一个选项, 那么仅以文件名最靠后(字典顺序)的那一个为准。 为了便于排序,建议给所有配置文件 都加上两位十进制数字的文件名前缀。 .PP 如果系统管理员想要屏蔽 /usr/lib/ 目录中的某个配置文件, 那么最佳做法是在 /etc/ 目录中 创建一个指向 /dev/null 的同名符号链接, 即可彻底屏蔽 /usr/lib/ 目录中的同名文件。 如果软件包自带的某个配置文件位于 initrd 镜像中, 那么还必须重新生成 initrd 镜像。 .SH "例子" .PP \fBExample\ \&1.\ \&设置内核YP域名\fR .PP /etc/sysctl\&.d/domain\-name\&.conf: .sp .if n \{\ .RS 4 .\} .nf kernel\&.domainname=example\&.com .fi .if n \{\ .RE .\} .PP \fBExample\ \&2.\ \&利用udev规则设置动态内核模块的参数(方法一)\fR .PP /etc/udev/rules\&.d/99\-bridge\&.rules: .sp .if n \{\ .RS 4 .\} .nf ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \e RUN+="/usr/lib/systemd/systemd\-sysctl \-\-prefix=/net/bridge" .fi .if n \{\ .RE .\} .PP /etc/sysctl\&.d/bridge\&.conf: .sp .if n \{\ .RS 4 .\} .nf net\&.bridge\&.bridge\-nf\-call\-ip6tables = 0 net\&.bridge\&.bridge\-nf\-call\-iptables = 0 net\&.bridge\&.bridge\-nf\-call\-arptables = 0 .fi .if n \{\ .RE .\} .PP 因为此方法在加载模块的同时设置模块的参数, 所以仅在加载 br_netfilter 模块之后才能过滤桥接包, 若不想过滤桥接包, 只要不加载 br_netfilter 模块即可。 .PP \fBExample\ \&3.\ \&利用 modules\-load\&.d 目录设置动态内核模块的参数(方法二)\fR .PP /etc/modules\-load\&.d/bridge\&.conf: .sp .if n \{\ .RS 4 .\} .nf br_netfilter .fi .if n \{\ .RE .\} .PP /etc/sysctl\&.d/bridge\&.conf: .sp .if n \{\ .RS 4 .\} .nf net\&.bridge\&.bridge\-nf\-call\-ip6tables = 0 net\&.bridge\&.bridge\-nf\-call\-iptables = 0 net\&.bridge\&.bridge\-nf\-call\-arptables = 0 .fi .if n \{\ .RE .\} .PP 因为此方法总是无条件的加载 br_netfilter 模块, 并且总是无条件的设置模块的参数, 所以总是无条件的过滤桥接包,若不想过滤桥接包, 必须主动卸载 br_netfilter 模块。 .SH "参见" .PP \fBsystemd\fR(1), \fBsystemd-sysctl.service\fR(8), \fBsystemd-delta\fR(1), \m[blue]\fBsysctl(8)\fR\m[]\&\s-2\u[1]\d\s+2, \fBsysctl.conf\fR(5), \fBmodprobe\fR(8) .SH "NOTES" .IP " 1." 4 sysctl(8) .RS 4 \%[set $man.base.url.for.relative.links]//man/sysctl.html .RE .SH "跋" .br 本页面中文版由中文 man 手册页计划提供。 .PP 翻译人员:金步国 .br 金步国作品集:http://www.jinbuguo.com .br .br 中文 man 手册页计划:\fBhttps://github.com/man-pages-zh/manpages-zh\fR