「時代はIPv6」と呼ばれてから四半世紀。未だにIPv4が幅をきかせているという状態。
- DNSの都合上、IPv4でないと困る
- IPv6は管理で手に負えない
等の問題を抱えている運用者(つまり私)のため、「カーネルレベルでIPv4のみにする」手順のメモです。
環境
- Ubuntu 24.04
そろそろUbuntu 26.04が出るタイミングではありますが、おそらく大幅な変化はないでしょう。
さっくりとした手順
- 現状を確認します。
sysctlでIPv6を無効化するファイルを作成します。- 作成したファイルを有効化してIPv6を無効化します。
- (利用している方は)ufw側の設定でIPv6を無効化します。
作業の前に
- 本作業はカーネルをいじります。つまり、神経を使うという作業です。
- 念には念を入れてサーバ再起動も伴います。
構築作業であれば好きなタイミングでサーバ再起動ができる環境を祝いましょう。
本番運用であればタイミングを調整する政治交渉が必要な環境を呪いましょう。
現状の確認
- IPv6アドレス割当の確認
ip -6 addr
アドレスが返ってくればIPv6アドレスは有効化されています。何も表示されていなければ、ここからの作業は不要です。
ファイル追記
cat <<- __EOF__ | sudo tee -a /etc/sysctl.d/99-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
__EOF__
元々存在しないファイルなのでコマンドで流し込みます。
設定反映
- 設定反映
sudo sysctl --system
エラーがなければOKです。
- 設定反映確認
ip -6 addr
IPv6アドレスが無いことを確認します。
- 念のためのサーバ再起動
sudo reboot
サーバ再起動を行います。
- 再起動後にIPv6がないことを確認
ip -6 addr
link-local IPv6のみが見えていればOKです。(NICの中でのみ使えるv6アドレスです)
(オプション)ufwでIPv6の無効化
※この作業はufwをいじります。ufwを有効化しているという方は、下手にいじると自分自身がロックアウトされる怖さを知っていると思います。
慎重に、深呼吸をするなり飲み物を飲むなどして落ち着かせてから作業を行いましょう。もっと具体的に言うと
- 物理環境であればコンソール近くにいること
- vps環境はWebコンソールを開いて
- SSH接続しかない場合は新規セッションで接続を維持する
の作業を推奨します。(この場合の推奨は義務という意味です
- ufw設定ファイルのバックアップ
sudo cp -pi /etc/default/ufw /path/to/backup/directory/ufw.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイルのバックアップ確認
diff -u /path/to/backup/directory/ufw.$(date +%Y%m%d) /etc/default/ufw
差分が無いことを確認します。
- ファイル修正
以下のような形で修正します。
IPV6=yes
これを
#IPV6=yes
#yyyy/mm/dd IPv6無効
IPV6=no
という形です。
日付管理をしないと「万が一のことがあったときにどっからおかしくなったか」を管理しやすくなります。同様に、コメントin/outとすることで切磋の対応をしやすくします。
- ファイル修正確認
diff -u /path/to/backup/directory/ufw.$(date +%Y%m%d) /etc/default/ufw
-IPV6=yes
+#IPV6=yes
+#yyyy/mm/dd IPv6無効
+IPV6=no
- ufw再起動
三回ぐらい深呼吸をしましょう。
sudo ufw reload
最終確認
- IPv6無効化確認
ip -6 addr
link-local IPv6のみが見えていればOKです。
- LISTENがない
ss -lntup | grep :::
v6 のLISTENがないことを確認します。
- ufw確認
sudo ufw status verbose
IPv6に関わるルールが無いことを確認します。
まとめ
以上、「IPv6無効」と簡単に言うけれど、言うほど簡単では無いという作業でした。