ホビー向けではIPv6無効化はしない方がよさそうというのが結論だが、無効化設定には、いろいろある。
① /etc/sysctl.confで設定
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
② /etc/modprobe.d/ipv6.confで設定(ファイル名は任意)
# Don't load ipv6 by default alias net-pf-10 off alias ipv6 off # https://www.raspberrypi.org/forums/viewtopic.php?t=138899 options ipv6 disable_ipv6=1 blacklist ipv6
②は、Debian9 stretch amd64ではIPv6を無効化できない。それは、Kernel構築時の.configにおいて、CONFIG_IPV6=m → y となり、IPv6モジュールがKernelに埋め込まれたためだ。
一方で、ラズパイのRaspbian stretchでは、ここにある通りKernel外出しのモジュールで定義されており、IPv6をモジュール単位で根こそぎ無効化できるということだと思う。
ラズパイでは②の方が良いかもしれない。理由は、
$ netstat -na | grep tcp6
と打てば分かる。①の設定では、IPv6は確かに無効にはなっているが、アプリレベルではIPv6のポートが開いている。②はアプリレベルでも開いていない。
③ Kernel起動パラメータ ipv6.disable=1
パソコンなら/etc/default/grubに追記してinitrdを再生成、ラズパイなら/boot/cmdline.txtに追記する。
IPv6無効化の副作用:
Windowsや別Linuxホストからxrdp(リモートデスクトップ)でログインしたいケースで、正しく動作しない。Debian9 stretch amd64ではxrdpデーモンが起動しない。Raspbianでは、xrdpログイン画面は出るが、やはりひっかかる。
対策例ばこちら↓(要・ビルド)。
github.com