見出し画像

Linuxの sysctl コマンドとは?カーネルパラメータを調整してシステムを最適化!

「サーバーのパフォーマンスを上げたい」「ネットワークの動作を細かく調整したい」
そんなときに便利なのが sysctl コマンド です。

Linux では、カーネルの動作を決める カーネルパラメータ を変更することで、パフォーマンスやセキュリティを調整できます。これを手軽に変更できるのが sysctl。
この記事では、sysctl コマンドの基本的な使い方や、よく使われるカーネルパラメータを紹介します!


🔹 そもそも「カーネルパラメータ」とは?

カーネルは、OS の 心臓部 です。CPU・メモリ・ネットワークといった ハードウェアとアプリケーションの橋渡し をしており、その動作を決めるのが カーネルパラメータ です。

例えば、

  • 「メモリが足りなくなったら、どれくらいスワップを使う?」 (vm.swappiness)

  • 「サーバーで大量の接続を捌くために、接続待ちキューのサイズを大きくする?」 (net.core.somaxconn)

こうした細かい設定を変更することで、システムをより 用途に合わせた最適な状態 に調整できます。


✅ sysctl コマンドの基本的な使い方

sysctl はカーネルパラメータの 表示・変更 を行うコマンドです。
設定は /proc/sys/ にある仮想ファイルシステムを通じて適用されます。

(1) カーネルパラメータの表示

現在のカーネルパラメータを確認するには、以下のコマンドを実行します。

sysctl -a

🔹 すべてのカーネルパラメータ を一覧表示します。

特定のパラメータだけ知りたい場合は、以下のように指定できます。

sysctl net.ipv4.ip_forward

🔹 net.ipv4.ip_forward の値を表示(IPフォワーディングの設定を確認)


(2) カーネルパラメータを一時的に変更

次のコマンドで、カーネルパラメータを 一時的に変更 できます。

sysctl -w net.ipv4.ip_forward=1

🔹 -w オプションを使うと、値を変更できます。
ただし OSを再起動すると元に戻る ので注意しましょう。


(3) カーネルパラメータを永続的に変更

OSを再起動しても設定を維持したい場合は、/etc/sysctl.conf に設定を追加します。

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

🔹 /etc/sysctl.conf に記述すれば 永続化 できます。
🔹 sysctl -p を実行すると、設定をすぐに適用できます。※ -p の意味は"load parameters"(パラメータの読み込み)


✅ よく使われるカーネルパラメータ

実際に変更する際によく使われるカーネルパラメータを紹介します。

📌 ネットワーク関連

  • net.ipv4.ip_forward:ルーター機能の有効化(1: 有効, 0: 無効)

  • net.ipv4.conf.all.rp_filter:逆引きフィルタリング(IPスプーフィング対策)

  • net.core.somaxconn:待機接続キューの最大数(大量アクセス対策)

📌 メモリ管理

  • vm.swappiness:スワップの使用頻度(0:最小, 100:最大)

  • vm.overcommit_memory:メモリのオーバーコミット設定(0: 通常, 1: 許可, 2: 厳格)

📌 セキュリティ

  • kernel.sysrq:SysRq キーの有効化(デバッグ・緊急用)

  • fs.suid_dumpable:SUID プログラムのコアダンプ許可(0: 禁止, 1: 許可)


✅ sysctl の適用範囲

変更したカーネルパラメータは、設定方法によって適用範囲が異なります。

  • 一時的な変更 → sysctl -w を使用(OS再起動でリセット)

  • 永続的な変更 → /etc/sysctl.conf に記述し、sysctl -p で適用

変更がすぐに反映されない場合は OSの再起動 または 関連サービスの再起動 が必要な場合があります。


✅ macOS での sysctl の違い

Linux では /proc/sys/ を通じて sysctl が動作しますが、macOS では挙動が異なります。

  • macOS では /etc/sysctl.conf は使用されない

  • 設定の永続化には launchctl を使用する必要がある

sudo sysctl -w kern.maxfiles=65536

🔹 macOS でも sysctl -w で一時的に変更できますが、再起動するとリセットされます。


✅ まとめ

  • カーネルパラメータ は OS の動作を調整する重要な設定

  • sysctl コマンド でカーネルパラメータの 表示・変更 が可能

  • sysctl -w一時的に変更 できるが、再起動でリセット

  • /etc/sysctl.conf に記述 & sysctl -p永続化 可能

  • macOS では sysctl.conf を使わず、launchctl で管理

sysctl を活用すれば、サーバーのチューニングやセキュリティ強化が可能になります。
ただし 設定変更は慎重に! 特にネットワークやメモリ関連のパラメータを変更する際は、事前に調査してから適用しましょう。

いいなと思ったら応援しよう!