Ubuntu 18.04 で、IPv6 を無効にするときの覚書です。

 

IPv6 を無効にしたい場合、Ubuntu 18.04 には、これまでのように sysctl.conf に

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6  =  1

のような行を追加して、

sudo sysctl -p

としても、一時的には無効にできますが、再起動するともとに戻ってしまうというバグがあるみたいです。

そこで、次のようにして問題を回避します。

Sysctl の設定

まず最初に ip コマンドで、現在のネットワークの状態を確認します。

$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens2:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:08:d2:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.40/24 brd 192.168.10.255 scope global ens2
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe08:d2ef/64 scope link
       valid_lft forever preferred_lft forever

ens2 の項目の中に、inet6 .. とあって、その後にアドレスが表示されており、IPv6 が有効になっていることがわかります。

/etc/sysctl.d/ 以下に設定ファイルを追加します。

$ sudo vi /etc/sysctl.d/99-sysctl.conf

下に続く行を追加します。

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6  =  1

sysctl を再読み込みさせます。

$ sudo sysctl -p

ip a で結果を表示させると、IPv6 が無効になっているのがわかります。

$ ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens2:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:08:d2:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.40/24 brd 192.168.10.255 scope global ens2
       valid_lft forever preferred_lft forever

ただ、このままでは再起動後、ふたたび IPv6 が有効になって起動してしまいます。

再起動後も IPv6 を無効にする方法

/etc/rc.local を作成して、その中に、

#!/bin/bash
/etc/init.d/procps restart

exit 0

として、保存します。

更にこのファイルに実行可能にします。

$ sudo chmod 755 /etc/rc.local

再起動すると、IPv6 は無効のままになっていると思います。

もう一つの方法

/etc/default/grub を編集します。

以下の変数の値に、次の文言を追加します1

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"

保存したら、grub を更新します。

$ sudo update-grub

その後、再起動します。

この回避策の場合は、sysctl の設定も、 /etc/rc.local も必要ありません。


  1. ちなみに、私の環境ではGRUB_CMDLINE_LINUX_DEFAULT の値に予め quiet splash となっていたので、GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ipv6.disable=1" としています。 

1件のコメント

libvirtd を Ubuntu 18.04 にインストールし、部屋の LAN とブリッジする | にろきのメモ帳 · 2019年7月7日 12:58 AM

[…] を実施する)をネットワークが有効になる前に実施してしまうので、ネットワーク関係の設定はここに書いても無視されてしまうようだ: Ubuntu 18.04 で ipv6 を無効にする | 雑廉堂の雑記帳 […]

コメントを残す

メールアドレスが公開されることはありません。