問題
RHEL 7 サーバーで再起動した後、sysctl パラメーターが有効になりませんでした。サーバーを再起動する前に、パラメーター「net.ipv4.conf.all.forwarding」が無効になっていました。
# cat /proc/sys/net/ipv4/conf/all/forwarding 1
# sysctl net.ipv4.conf.all.forwarding=0 net.ipv4.conf.all.forwarding = 0
# cat /proc/sys/net/ipv4/conf/all/forwarding 0
#cat /etc/sysctl.conf|grep net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 0
# shutdown -r now
# cat /proc/sys/net/ipv4/conf/all/forwarding ### Gets enabled after reboot. 1
解決策
RHEL 7 には「tuned」という名前のサービスがあります これは、カスタム プロファイルの作成に役立ち、/etc/sysctl.conf ファイルに設定されている「sysctl」値を上書きします。これは、「tuned」サービスが「sysctl」サービスの後に開始されるためです。以下のいずれかの方法を使用して、RHEL/CentOS 7 サーバーでカーネル パラメーターを定義します。
1. 影響を受けるサーバーでアクティブな調整プロファイルを確認します。
# tuned-adm active Current active profile: virtual-guest
2. それぞれの調整されたプロファイル ディレクトリに移動し、問題のある sysctl カーネル パラメータが代替値で定義されているかどうかを確認します。
# cd /usr/lib/tuned/virtual-guest # cat tuned.conf # # tuned configuration # [main] include=throughput-performance [sysctl] net.ipv4.conf.all.forwarding = 1
はいの場合、再起動後に誤った sysctl カーネル パラメータを修正するための 2 つのオプションがあります。
a) 「/etc/sysctl.conf」の値が有効になるように、tuned プロファイルのエントリを削除します。
# cd /usr/lib/tuned/virtual-guest # cat tuned.conf # # tuned configuration # [main] include=throughput-performance [sysctl]
b) それ以外の場合は、「/etc/sysctl.conf」のエントリを削除して、再起動後も調整された値を永続化します。
# cat /etc/sysctl.conf | grep net.ipv4.conf.all.forwarding #
この場合、調整されたプロファイル ファイルにパラメータが存在することを確認してください。
# cd /usr/lib/tuned/virtual-guest # cat tuned.conf # # tuned configuration # [main] include=throughput-performance [sysctl] net.ipv4.conf.all.forwarding = 0