Ubuntu 24.04でIPv6を無効にする方法
これは、システムの再起動の有無にかかわらず、Ubuntu 24.04 LTS で IPv6 を無効にする方法を示すステップバイステップの初心者ガイドです。
IPv6 はインターネット プロトコルの未来です。しかし、特定のネットワークとの互換性、テスト目的、セキュリティ上の懸念などの理由により、または単にそれを使用しないため、ユーザーはマシンで IPv6 を無効にしたい場合があります。
IPv6 を無効にしても、通常は安全です。 IPv6 用に最適化された一部の Web サイトやサービスでは、パフォーマンスが若干低下する可能性がありますが、必要に応じていつでも再度有効にすることができます。
オプション 1: カーネル パラメータを使用して IPv6 を無効にする
ipv6 カーネル モジュールには、機能全体を無効にするか、すべてのネットワーク インターフェイスで ipv6 を無効にするオプションがあります。
起動するたびに ipv6 を無効にしてカーネルを読み込むように Grub ブートローダーを設定することも、マシンを再起動せずに実行時にカーネル パラメータを変更することもできます。
1. sysctl を使用して、再起動せずに IPv6 を無効にします
sysctl は、実行時にカーネルパラメータを設定するコマンドラインツールです。
すべてのネットワーク インターフェイスで IPv6 を無効にするには、次のコマンドを使用します。
sudo sysctl --write net.ipv6.conf.all.disable_ipv6=1
IPv6 はすぐに無効になり、マシンを再起動するまで維持されます。確認するには、ip addr
コマンドを使用して「inet6
」セクションがあるかどうかを確認するか、ip -6 addr
を実行して出力があるかどうかを確認します。
選択として、特定のネットワーク インターフェイスに対して ipv6 を無効にすることができます。まず、コマンド ip addr
を使用してネットワーク インターフェイス名を取得します。私の場合 (上のスクリーンショットを参照)、lo
、enp0s31f6
、wlp61s0
などのネットワーク インターフェイスがあります。
たとえば、wlp61s0
に対してのみ ipv6 を無効にするには、次のコマンドを使用します。
sudo sysctl --write net.ipv6.conf.wlp61s0.disable_ipv6=1
また、上記のコマンドの 1 を 0 に置き換えることで、すべてまたは特定のネットワーク デバイスに対して ipv6 が再度有効になります。
sysctl コマンドを何度も実行しなくても、ルールを /etc/sysctl.conf
ファイルまたは /etc/sysctl.d/
のカスタム ファイルに書き込むことができます。 > ディレクトリです。
/etc/sysctl.conf
ファイルを編集するには、次のコマンドを使用します。
sudo nano /etc/sysctl.conf
コマンド ライン テキスト エディタでファイルが開いたら、下にスクロールして次の行を追加し、すべてのネットワーク インターフェイス、デフォルト インターフェイス、および lo ネットワーク インターフェイスで ipv6 を無効にするように指示します。
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
Ctrl+S を押してから Ctrl+X を押してファイルを保存した後、以下のコマンドを実行すると変更がすぐに適用されます。
sudo sysctl -p
構成にカスタム構成ファイル (例: /etc/sysctl.d/99-ipv6.conf
) を使用する場合は、構成ファイルへのパスを指定する代わりに以下のコマンドを実行してそれを適用します。 :
sudo sysctl -p /etc/sysctl.d/99-ipv6.conf
残念ながら、2006 年以来このバグが原因で、/etc/sysctl.conf
または /etc/sysctl.d/
の下のカスタム ファイルに加えた変更は影響を受けません。再起動後は持続しません。
起動するたびに最後の sysctl -p
コマンドを再実行するか、起動時にコマンドが自動的に実行されるようにスケジュール ジョブを作成する必要があります。これを行うには、次のコマンドを実行します。
sudo crontab -e
プロンプトが表示されたらデフォルトの nano テキスト エディタを選択し、下にスクロールして以下の行を追加します。
@reboot /usr/bin/sleep 15 && /usr/sbin/sysctl --system
この行は、/usr/sbin/sysctl --system
コマンドを実行して、起動ごとに 15 秒の遅延を伴い、すべての構成ファイルをロードするように指示しています。最後に、Ctrl+S を押して保存し、Ctrl+X を押して終了します。
2. Grub を使用して、IPv6 を無効にしてカーネルをロードします
ブートごとに sysctl 設定をロードする回避策として crontab を使用したくない場合は、代わりに Grub ブートローダーを設定できます。
まず、Ubuntu サーバーに接続するか、Ctrl+Alt+T
を押して Ubuntu デスクトップでターミナルを開き、コマンドを実行して Grub の構成ファイルを開きます。
sudo nano /etc/default/grub
ファイルが開いたら、ipv6.disable=1 または ipv6.disable_ipv6=1 のいずれかを GRUB_CMDLINE_LINUX_DEFAULT の値として追加します。最後に、Ctrl+S を押して保存し、Ctrl+X を押して終了します。
カーネルのドキュメントによると、次のようになります。
ipv6.disable=1
オプションは、ipv6 機能全体を無効にします。ipv6.disable_ipv6=1
は、どのインターフェイスにも IPv6 アドレスを割り当てないように指示します。
変更を適用するには、コマンドを実行してブートローダー エントリを再生成する必要があります。
sudo update-grub
Grub-Customizer がインストールされた Ubuntu デスクトップで実行している場合は、アプリを起動し、「一般設定」タブに移動してカーネル パラメーターを追加できます。
オプション 2: ネットワーク マネージャーを使用して IPv6 を無効にする
ネットワーク マネージャーは、デバイスごとまたは接続ごとに ipv6 を無効にするオプションも提供します。
まず、コマンドを実行して接続をリストします。
nmcli connection show
以下のスクリーンショットが示すように、私の場合、wlp61s0
Wi-Fi デバイスが elite01
Wi-Fi ネットワークに接続されており、サーバーと通信するためのループバック インターフェイスが lo
です。ローカル マシン、コンテナーの場合は lxcbr0
。
デバイスごと (wlp61s0
など) に ipv6 を無効にするには、次のコマンドを使用します。
nmcli device modify wlp61s0 ipv6.method "disabled"
次に、ip addr
を実行してすべてのネットワーク インターフェイスをチェックするか、ip addr show wlp61s0
を実行して特定のインターフェイス (この場合は wlp61s0
) を実行して確認します。
接続ベース、たとえば elite01
Wi-Fi ネットワークごとに ipv6 を無効にするには、次のコマンドを使用します。
nmcli connection modify elite01 ipv6.method "disabled"
この方法では、ネットワーク デバイスには IPv6 アドレスが割り当てられたままで、選択した接続に対してのみ IPv6 が無効になります。また、Ubuntu Desktop の場合、通常、同じ作業を実行するためのグラフィカル ネットワーク オプションがあります。
上記の変更を元に戻すには、"disabled"
を "auto"
に置き換えて最後のコマンドを再実行します。