Answers:
没有区别。sysctl
Linux上的命令直接写入中的文件/proc/sys
。源代码中的以下代码片段sysctl
证明了这一点:
/*
* Write a sysctl setting
*/
static int WriteSetting(const char *setting)
{
/* ... */
/* used to open the file */
tmpname = xmalloc(equals - name + 1 + strlen(PROC_PATH));
strcpy(tmpname, PROC_PATH);
strncat(tmpname, name, (int) (equals - name));
tmpname[equals - name + strlen(PROC_PATH)] = 0;
/* change . to / */
slashdot(tmpname + strlen(PROC_PATH), '.', '/');
/* ... */
fp = fopen(tmpname, "w");
/* some error checking ... */
rc = fprintf(fp, "%s\n", value);
/* ... */
}
如果您想要永久性/etc/sysctl.conf
的文件,则需要在/etc/sysctl.d
(例如/etc/sysctl.d/99-disable-ip-forwarding.conf
)下编辑或添加文件,其中包含:
# Disable IP packet forwarding
net.ipv4.ip_forward = 0
顺便说一下,默认情况下,某些发行版已经明确禁用了此功能。例如,RHEL <= 6或Fedora <= 15包含以下内容/etc/sysctl.conf
:
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
Fedora 20不再明确禁用它。有没有转发设定/etc/sysctl.conf
,/etc/sysctl.d/
或/usr/lib/sysctl.d/
。