手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 sysctl の基本設定 – カーネルパラメータとネットワーク設定を管理する

関連する記事

sysctl は、Linux カーネルの実行時パラメータを確認・変更する仕組みです。Ubuntu 26.04 では、ネットワーク転送、Reverse Path Filtering、ファイルハンドル、カーネル挙動などを /etc/sysctl.d/*.conf に分けて永続化できます。

この記事では、/etc/sysctl.d/90-my.conf を例に、現在値の確認、設定ファイル作成、sysctl -p による反映、sysctl --system、再起動後確認、戻し方を扱います。

sysctl で管理するもの

  • ネットワーク転送やフィルタリングに関わる net.* の値。
  • ファイルハンドルや inotify などの fs.* の値。
  • メモリやカーネル挙動に関わる vm.*kernel.* の値。
  • 一時変更と永続設定を分けて確認すること。

現在値を確認する

変更前に現在値を確認します。単一のキーを見る場合は sysctl キー名、まとめて見る場合は sysctl -a を使います。

sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.rp_filter
sysctl fs.file-max

設定ファイルの置き場所

Ubuntu 26.04 では、独自の sysctl 設定を /etc/sysctl.d/ 配下に置くと管理しやすくなります。この記事では /etc/sysctl.d/90-my.conf を使います。

ls -l /etc/sysctl.d
systemd-sysctl --cat-config

設定ファイルを作成する

以下は最小例です。値は用途に合わせて変更します。ネットワーク転送や rp_filter は、ルーティング設計や複数インターフェイス構成に影響するため、理由を決めてから設定します。

sudo tee /etc/sysctl.d/90-my.conf >/dev/null <<'EOF'
net.ipv4.ip_forward = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
fs.file-max = 1048576
EOF
sudo chmod 0644 /etc/sysctl.d/90-my.conf

設定を即時反映する

作成したファイルだけを反映する場合は sysctl -p にファイルを指定します。ここでエラーが出る場合は、キー名や値の形式を修正します。

sudo sysctl -p /etc/sysctl.d/90-my.conf

全体の sysctl 設定を反映する

/etc/sysctl.d/ など、読み込み対象全体を反映する場合は sysctl --system を使います。複数ファイルの優先順や重複も確認できます。

sudo sysctl --system

反映後の値を確認する

設定ファイルを置いただけで終わらせず、実際のカーネル値が変わっているかを確認します。

sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter
sysctl fs.file-max

一時的に値を変更する

検証だけ行いたい場合は sysctl -w で一時変更できます。ただし、再起動後には永続化されません。永続化する場合は設定ファイルにも反映します。

sudo sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forward
sudo sysctl -w net.ipv4.ip_forward=0

再起動後に確認する

/etc/sysctl.d/ 配下の設定は起動時に読み込まれます。再起動後に値が維持されているか確認します。

sudo reboot
sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.rp_filter
sysctl fs.file-max
systemctl status systemd-sysctl.service --no-pager

Kubernetes ノードで確認する値

Kubernetes ノードでは、container runtime や CNI の前提として sysctl を確認することがあります。bridge 関連の値は、必要なカーネルモジュールが読み込まれているかも合わせて確認します。

sysctl net.bridge.bridge-nf-call-iptables || true
sysctl net.bridge.bridge-nf-call-ip6tables || true
lsmod | grep br_netfilter || true

rp_filter を変更する時の注意

rp_filter は戻り経路の確認に関わります。複数インターフェイス、Policy Based Routing、非対称経路を使う環境では、通信が落ちる原因にもなるため、インターフェイスごとの値を確認します。

sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter
sysctl net.ipv4.conf.eth0.rp_filter || true
ip route
ip rule

設定を戻す

問題が出た場合は、設定ファイルをバックアップから戻すか、該当行を削除して再反映します。再起動前に現在値と設定ファイルの両方を確認します。

sudo cp -a /etc/sysctl.d/90-my.conf /etc/sysctl.d/90-my.conf.bak.$(date +%Y%m%d%H%M%S)
sudo rm /etc/sysctl.d/90-my.conf
sudo sysctl --system

確認項目

  • 変更前の現在値を控えていること。
  • 設定ファイルのキーが key = value の形式になっていること。
  • sudo sysctl -p /etc/sysctl.d/90-my.conf がエラーなく通ること。
  • 再起動後も意図した値になっていること。
  • ネットワーク系の値は、ルーティングやインターフェイス設計と矛盾していないこと。

まとめ

Ubuntu 26.04 の sysctl 設定は、現在値の確認、設定ファイル作成、即時反映、再起動後確認を分けて扱うと安全です。特にネットワーク系の値は通信経路に直接影響するため、/etc/sysctl.d/90-my.conf のように管理単位を分け、変更理由と確認コマンドをセットにして運用します。

関連する記事
Ubuntu 26.04 sysctl の基本設定 – カーネルパラメータとネットワーク設定を管理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る