私の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
もしそうなら、リバースパスフィルタリングは有効ですか?どの設定場所が優先的に適用されますか?これらのカーネルオプションと他のカーネルオプションの現在の値をどのように確認できますか?
答え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 まっすぐ、このディレクトリのすべてのエントリを上書きします。。
任意の場所で設定を編集したら、変更を適用できます。
sudo sysctl -p
答え2
/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
em1、wlan0、および「default」にrp_filterが設定されているようです。ファイルハンドルに書き込むだけで設定または設定解除できます。
»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
もちろん、このように仕事を台無しにすることはできません。以下のコメントを必ずお読みください。
答え3
完了する受け入れられた回答/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
その後、変数は最終的にゼロに設定されます。