セキュリティを強化するために、Linuxサーバーのカーネルをルーターとして機能しないように構成しようとしています。重要なのは、パケットを転送しないことです。
私はこれを見つけました:
echo 0 > /proc/sys/net/ipv4/ip_forward
この:
sysctl -w net.ipv4.ip_forward=0
明らかに両方とも同じことをしますが、私はそれらの本当の違いが何であるかわかりません。また、可能であれば効果を永続的にしたいと思います。
違いはありません。 Linuxのsysctl
コマンドは、/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/
には転送設定はありません。