/ procに直接書き込むか、sysctl -wを使用するか


8

Linuxサーバーのカーネルを設定して、ルーターとして機能しないようにして、セキュリティを強化しようとしています。ポイントは、パケットを転送することではありません。

私はこれを見つけました:

echo 0 > /proc/sys/net/ipv4/ip_forward  

この:

sysctl -w net.ipv4.ip_forward=0  

どちらも同じことを行うのは明らかですが、両者の実際の違いが何かはわかりません。できれば、その効果を永続的なものにしたいと思います。


違いはありません。sysctlはechoコマンドと同じです。簡単です。
フォンブランド2013年

回答:


6

違いはありません。sysctlLinux のコマンドは、のファイルに直接書き込みます/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/


デフォルトでは、転送は常にオフではありませんか?
user1686 2013年

それも私が思うことですが、そこにはどんな野生の分布があるのか​​決してわかりません:-)
Cristian Ciupitu 2013年

@grawityは確かに、私のディストリビューションでもデフォルトでオフになっています。私は少し混乱していますが、システムがルーターとして実行されないようにするために他のカーネル構成はありますか?
John M.

@JohnM .:デフォルトが無効になっている場合に回避すべきことは何ですか?
クリスティアンCiupitu 2013年

@CristianCiupitu、私は知りません、私はLinuxが初めてなので、サーバーをルーターとして実行できないようにしたいのですが。したがって、このコマンドで十分かどうかはわかりません:)
John M.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.