2026年5月24日
2026年5月24日
IPv6を無効化する方法と注意点(Linux/Windows)
IPv6 は Linux なら sysctl かカーネルの起動オプション、Windows ならレジストリやアダプターの設定で無効化できます。ただし、困っている症状の多くは「IPv6 を止める」より「IPv4 を優先させる」「誤った AAAA レコードを直す」ほうが副作用なく解決します。この記事では、無効化の前に確認したいこと、Linux と Windows での具体的な手順、無効化で起こりやすいトラブルと元に戻す方法を説明します。
無効化する前に確認したいこと
本当の原因は何か
IPv6 の無効化を考えるきっかけは、たいてい次のような症状です。
aptやdnf、curlの通信が、しばらく待たされたあとでつながる、またはタイムアウトする- WordPress の更新やプラグインのインストールで、外部への接続がタイムアウトする
- 一部の利用者だけサイトにつながらない
前の2つは、サーバーに IPv6 のアドレスはあるのに、IPv6 で外に出る経路が実際には使えない場合に起こります。OS は IPv6 を優先して試し、失敗してから IPv4 に切り替えるので、その分だけ待たされます。次のように IPv4 と IPv6 を分けて試すと、原因を確かめられます。
curl -4 -sI https://api.wordpress.org/ | head -n 1
curl -6 -sI https://api.wordpress.org/ | head -n 1
ip -6 route show default
-4 だけ成功して -6 が失敗するなら、IPv6 の経路の問題です。3つ目の結果にデフォルト経路がない、または事業者が想定する値と違うなら、まずはそちらを直すのが筋です。VPS では、管理画面で IPv6 を有効にしていなかったり、OS 側の設定と事業者の割り当てがずれていたりすることがあります。
3つ目の「一部の利用者だけつながらない」場合は、ドメインの AAAA レコードが古い、または IPv6 で待ち受けていないアドレスを指している可能性があります。この場合はサーバーの IPv6 を止めても解決しないので、DNS の AAAA レコードとウェブサーバーの待ち受け設定を見直します。
無効化より穏当な選択肢
IPv6 そのものは残し、IPv4 を優先させる方法もあります。
- Linux(glibc の名前解決):
/etc/gai.confのprecedence ::ffff:0:0/96 100の行のコメントを外すと、名前解決の結果で IPv4 が優先されます。 - 個別のコマンド:
curl -4、apt-get -o Acquire::ForceIPv4=true updateのように、そのコマンドだけ IPv4 に限定できます。 - Windows:後述のレジストリ設定で「IPv4 を IPv6 より優先」にできます。
Linux で無効化する
作業前に、どのサービスが IPv6 で待ち受けているかを確認しておきます。
sudo ss -tlnp | grep -F '['
ip -6 addr show
方法1:sysctl で無効化する(元に戻しやすい)
もっとも一般的な方法です。設定ファイルを作り、すぐに反映できます。
sudo tee /etc/sysctl.d/99-disable-ipv6.conf > /dev/null <<'EOF'
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF
sudo sysctl --system
all は既存のインターフェース、default はあとから作られるインターフェースに効きます。net.ipv6.conf.lo.disable_ipv6 = 1 を加えるとループバック(::1)の IPv6 も止まりますが、localhost を ::1 で待ち受けたり接続したりするソフトウェアが動かなくなることがあるため、特別な理由がなければループバックは残しておくほうが安全です。
確認は cat /proc/sys/net/ipv6/conf/all/disable_ipv6(1 なら無効)と ip -6 addr で行います。
方法2:カーネルの起動オプションで無効化する
IPv6 の機能そのものを読み込ませない方法です。GRUB の設定で GRUB_CMDLINE_LINUX に ipv6.disable=1 を追加し、設定を再生成して再起動します。
# /etc/default/grub を編集したあと
sudo update-grub # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL 系(環境により出力先が異なる)
この方法では、[::] で待ち受ける設定のソフトウェアが起動に失敗します(後述)。元に戻すにも再起動が必要なので、sysctl で足りるなら方法1を選びます。RHEL 系では grubby を使う手順が案内されていることもあるので、ディストリビューションの公式ドキュメントを確認してください。
NetworkManager や netplan を使っている場合
NetworkManager では、接続単位で IPv6 を止められます。
sudo nmcli connection modify "接続名" ipv6.method disabled
sudo nmcli connection up "接続名"
netplan では、dhcp6 を使わない、accept-ra: false にする、link-local から IPv6 を外す、といった指定で IPv6 のアドレスを付けないようにできます。ただし細かい挙動は版によって異なるため(2026年10月現在)、sysctl と組み合わせて、反映後に ip -6 addr で結果を確かめてください。
Windows で無効化・優先度を変える
Microsoft は、IPv6 を無効にすることを推奨していません。Windows のいくつかの機能は IPv6 を前提にしているためです。困っている症状が「IPv6 で待たされる」ことなら、まず IPv4 を優先させる設定を試します。
# 管理者として実行。0x20 = IPv4 を IPv6 より優先
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters" `
-Name "DisabledComponents" -PropertyType DWord -Value 0x20 -Force
# 反映には再起動が必要
この値を変えると IPv6 の各機能の扱いが変わります。設定できる値の意味は Microsoft の IPv6 構成のガイダンスで確認してから使ってください。レジストリを変更する前には、復元ポイントの作成やレジストリのエクスポートでバックアップを取っておきます。元に戻すときは、この値を削除して再起動します。
特定のアダプターだけ IPv6 を外すこともできます(アダプターのプロパティで IPv6 のチェックを外すのと同じ操作です)。ただしこれも推奨されていない方法なので、検証用途にとどめます。
Get-NetAdapterBinding -ComponentID ms_tcpip6
Disable-NetAdapterBinding -Name "イーサネット" -ComponentID ms_tcpip6
# 戻すとき
Enable-NetAdapterBinding -Name "イーサネット" -ComponentID ms_tcpip6
無効化で起こりやすいトラブル
- ウェブサーバーが起動しない:Nginx の
listen [::]:80;のように IPv6 で待ち受ける設定は、カーネルで IPv6 を止めると「アドレスファミリーがサポートされていない」という旨のエラーで起動に失敗します。IPv6 のlisten行を外すか、IPv6 を戻します。 - メールサーバーや一部のデーモンが警告を出す:Postfix の
inet_protocols = allのように、両方のプロトコルを前提にした設定はエラーや警告の原因になります。ipv4に変えます。 - AAAA レコードが残ったまま:サーバーの IPv6 を止めても、DNS に AAAA レコードが残っていると、IPv6 を使う利用者はつながらなくなります。サイトの IPv6 対応をやめるなら AAAA レコードも削除します。
- セキュリティ対策のつもりの無効化:IPv6 を止めること自体は防御策ではありません。IPv6 を使うなら、ファイアウォールが IPv6 にも適用されているかを確認するほうが大切です。ufw では
/etc/default/ufwのIPV6=yesで IPv6 のルールも管理されます。
本番サーバーで試す前に、同じ構成の検証環境で確認し、リモート接続が切れたときのためにコンソールを使える状態にしておいてください。
まとめ
- 待たされる・つながらない症状は、IPv6 の経路の不備や古い AAAA レコードが原因であることが多く、無効化より原因の修正が先
- IPv4 を優先させるだけなら、Linux は
/etc/gai.conf、Windows はDisabledComponentsの0x20で対応できる - Linux で止めるなら sysctl が元に戻しやすく、ループバックは残すのが無難
- カーネルの起動オプションでの無効化は、IPv6 で待ち受ける設定のソフトウェアが起動しなくなる
- Windows での無効化は Microsoft が推奨していないため、検証用途にとどめる