web-dev-qa-db-ja.com

sysctl.confおよびsysctl.dに関連するカーネルオプションの値を見つける

私のUbuntuマシンでは、/etc/sysctl.confファイル、デフォルトで次のようにコメントアウトされているリバースパスフィルタリングオプションがあります。

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

/etc/sysctl.d/10-network-security.confそれらは(再度、デフォルトで)コメントアウトされていません:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

では、リバースパスフィルタリングは有効になっていますか?どの構成場所が優先されますか?これらおよびその他のカーネルオプションの現在の値を確認するにはどうすればよいですか?

23
Desmond Hume

Sysctl変数の値のチェックは、

sysctl <variable name>

ちなみに、sysctl変数の設定は、次のように簡単です。

Sudo sysctl -w <variable name>=<value>

ただし、この方法で行った変更は、おそらく次の再起動までしか保持されません。

構成場所のどれについては、/etc/sysctl.confまたは/etc/sysctl.d/、優先、ここに/etc/sysctl.d/READMEファイルは言う:

エンドユーザーは60-*。conf以上を使用するか、/ etc/sysctl.confを直接使用して、このディレクトリ内のすべてを上書きするを使用できます。

2つの場所のいずれかで設定を編集した後、変更を適用するには

Sudo sysctl -p
36
Desmond Hume

この種のものは通常/procおよび/または/sysカーネルインターフェース(最初に、これらのディレクトリには通常のディスクファイルがないことに注意してください。これらはすべてカーネルへの直接の行です)。

したがって、たとえば:

»for x in /proc/sys/net/ipv4/conf/*/rp_filter; do echo -ne "$x "`cat $x`"\n"; done
/proc/sys/net/ipv4/conf/all/rp_filter 0
/proc/sys/net/ipv4/conf/default/rp_filter 1
/proc/sys/net/ipv4/conf/em1/rp_filter 1
/proc/sys/net/ipv4/conf/lo/rp_filter 0
/proc/sys/net/ipv4/conf/wlan0/rp_filter 1

Rp_filterがem1、wlan0、および「default」に設定されているようです。ファイルハンドルに書き込むだけで、それらを設定または設定解除できます。

»cd /proc/sys/net/ipv4/conf/lo
»echo 1 > rp_filter
»cat rp_filter
1
»echo 0 > rp_filter
»cat rp_filter
0

前述のように、これはカーネルとの直接通信であるため、すぐに有効になります。これらのではない構成ファイル。何か間違ったことをしようとすると:

»echo whatever > rp_filter
bash: echo: write error: Invalid argument

もちろん、この方法で物事を台無しにできないというわけではありません。そして、以下のコメントを必ずお読みください。

2
goldilocks

受け入れられた回答 を完了するには、/etc/sysctl.confの設定が/etc/sysctl.d/の設定よりも優先されることは事実ですが、元の質問で公開されている例では、2つのコメント化された変数が/etc/sysctl.conf

#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

/etc/sysctl.d/10-network-security.confでコメント化されていない同じ変数:

net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

コメントはではなく設定であるため、誤解を招く可能性がありますが、可能性があることのコメントのみです設定。

この状況では、より強力な構成ファイルではコメント化されているにもかかわらず、変数は実際には両方とも1に設定されています。

/etc/sysctl.confの場合:

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0

その後、変数は最終的に0に設定されます。

0
Bozzy