![見出し画像](https://assets.st-note.com/production/uploads/images/172854474/rectangle_large_type_2_38c626e2513e03550f04d913f33f188e.png?width=1200)
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 を活用すれば、サーバーのチューニングやセキュリティ強化が可能になります。
ただし 設定変更は慎重に! 特にネットワークやメモリ関連のパラメータを変更する際は、事前に調査してから適用しましょう。