私の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
では、リバースパスフィルタリングは有効になっていますか?どの構成場所が優先されますか?これらおよびその他のカーネルオプションの現在の値を確認するにはどうすればよいですか?
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
この種のものは通常/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
もちろん、この方法で物事を台無しにできないというわけではありません。そして、以下のコメントを必ずお読みください。
受け入れられた回答 を完了するには、/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に設定されます。