ipv6.methodにおけるdisabledとignoreの違い

当サイトには広告を含みます。

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。
※広告でなく、単に商品やサービスを自主的に紹介しているだけという場合もあります。

"オススメ" として紹介している商品やサービスは、個人的にそう思えたものだけです。

共感、興味をもっていただけるものがあればご利用ください。

1,000P獲得できるお得なAmazonプライム入会

基本的にIPv6対応できるようシステム運用すべきなのですが、事情によりIPv6を無効化しないといけない場合もあります。無効化の方法は多様ですが、その方法の1つとしてNetworkManager経由(nmcli等)による設定が挙げられます。
本記事は、NetworkManager経由でIPv6を無効化する手順や、その際に使用するipv6.methodパラメタにおける”disabled”と”ignore”の違いについてまとめたものです。対象は主にRHEL7、CentOS7以降です。

※システムのIPv6対応は計画的に進めましょう。

本記事の目的

  • LinuxにおけるIPv6の無効化手順の概要を把握する。
  • NetworkManager経由でIPv6を無効化する手順や、その際に使用するipv6.methodパラメタにおける”disabled”と”ignore”の違いを把握する。

目次

基本

NetworkManager経由でIPv6を無効化する手順

nmcliコマンドを使用した手順を記載します。

# nmcli connection mod (device名) ipv6.method disabled
# nmcli connection up (device名)
# ip address show (device名)

指定したdeviceに対し、ipv6.methodパラメタの値を”disabled”に変更後、connection upで反映します。
基本的に”disabled”で良いと思われますが、”ignore”との違いについては後述します。
反映後は、ip address show実行時にinet6のアドレスが表示されないことで、そのインタフェースにIPv6アドレスが割り当てられていないことを確認します。

なお、(device名)の部分は、”eth0″や”ens192″等を指定します。
その環境で認識されているdevice名を確認する場合は、# nmcli connection show# nmcli device statusを実行します。

NetworkManager関連のパラメタ設定状況を確認する場合は、# nmcli connection show (device名)です。

ipv6.methodにおける"disabled"と"ignore"の違い

“disabled”の方が、”ignore”より強力な無効化設定です。

  • “disabled”
    そのネットワークデバイスに対するIPv6設定を行いません。さらに、同デバイスに対するカーネルパラメタdisable_ipv6に”1″が設定されるため、そのデバイスでIPv6自体を使用不可にします。
    /proc/sys/net/ipv6/conf/(device名)/disable_ipv6(net.ipv6.conf.(device名).disable_ipv6)の値のことです。

  • “ignore”
    そのネットワークデバイスに対するIPv6設定を行いません。カーネルパラメタは変更されないので、NetworkManager以外の方法でネットワークデバイスに対するIPv6設定をすることは可能です。
    内部的にIPv6スタックは有効な状態のままという意味です。

よって、「そのネットワークデバイスでIPv6が動作しないようにしたい」という意味では、”disabled”が安心です。

詳細

(一般的な話)ネットワーク設定方法の選び方

IPv6の無効化手順として、本記事ではNetworkManagerを使用した方法を記載していますが、他にも色々な方法があります。
より根本的に無効化したい場合は、カーネルパラメタやgrubの設定といった方法が考えられます(カーネルパラメタのnet.ipv6.conf.all.disable_ipv6 = 1やnet.ipv6.conf.default.disable_ipv6 = 1、grubのipv6.disable=1やipv6.disable_ipv6=1等)。

Linuxのネットワーク設定方法としては、以下のような種類が挙げられます。

  • NetworkManager(管理ツール)
  • ネットワークデバイス設定の実体(network-script、ifcfg-xxx)
  • カーネルパラメタ(/proc/sys/net/xxx、net.xxx)
  • カーネル起動時のパラメタ(grub等のブートローダがカーネル起動する際の設定)

上から、管理ツール(ユーザインタフェース)寄りの設定方法、下にいくほどカーネル寄りで内部的な設定方法と言えます。

標準でNetworkManagerを採用するLinuxディストリビューションでは、基本的にNetworkManager経由での設定が推奨されていると思います。
逆に、NetworkManagerを使用するのであれば、network-scriptを直接変更することは避けましょう。
NetworkManagerで調整できない設定については、カーネルパラメタやカーネル起動時のパラメタを使用する必要性があります。

ネットワーク設定に限らず、システムを運用する上で、どの設定方法を優先して使用するか決めておくと、構成管理や作業管理の品質を確保しやすくなります。

"disabled"と"ignore"に関するマニュアル等の記載

ipv6.methodで指定可能な値は、”auto”(デフォルト)、”dhcp”、”disabled”、”ignore”、”link-local”、”manual”、”shared”です。

$ man nm-settings-nmcliにて、ipv4.methodipv6.methodに指定可能な値についての記載があります。

method
IP configuration method. NMSettingIP4Config and NMSettingIP6Config both support “disabled”, “auto”, “manual”, and “link-local”. See the subclass-specific documentation for other values. …
https://developer-old.gnome.org/NetworkManager/stable/nm-settings-nmcli.html#nm-settings-nmcli.property.ipv4.method

“disabled”は明記されていますが、”ignore”については記載されていないので、別ドキュメントを参照する必要性がありそうです(“See the subclass-specific documentation for other values.”)。

うまくドキュメントを辿れなかったのですが、おそらくnm-setting-ip6-config.hにある以下の説明が該当しそうです。

/*
* NM_SETTING_IP6_CONFIG_METHOD_IGNORE:
*
* IPv6 is not required or is handled by some other mechanism, and NetworkManager
* should not configure IPv6 for this connection.
/
https://github.com/heftig/NetworkManager/blob/master/libnm-util/nm-setting-ip6-config.h

“ignore”は、IPv6が不要であるか、他の機能によって制御される場合を想定した値のようです。

ipv6.methodを変更した際のカーネルパラメタの変化

ipv6.methodを変更した際のカーネルパラメタの変化を確認してみます(network-scriptの方への影響は確認していません)。

  • ipv6.methodが”auto”の場合(デフォルト)
# cat /proc/sys/net/ipv6/conf/ens192/disable_ipv6
0
  • ipv6.methodが”disabled”の場合
# nmcli connection modify ens192 ipv6.method disabled
# nmcli connection up ens192
# cat /proc/sys/net/ipv6/conf/ens192/disable_ipv6
1
  • ipv6.methodが”ignore”の場合
(いったんautoに戻してから確認)
# nmcli connection modify ens192 ipv6.method auto
# nmcli connection up ens192
# cat /proc/sys/net/ipv6/conf/ens192/disable_ipv6
0# nmcli connection modify ens192 ipv6.method ignore
# nmcli connection up ens192
# cat /proc/sys/net/ipv6/conf/ens192/disable_ipv6
0
  • (参考)ipv6.methodの値を変更しても、全デバイスを対象(all)としたnet.ipv6.conf.all.disable_ipv6の値は影響を受けない
# cat /proc/sys/net/ipv6/conf/all/disable_ipv6
0

参考URL等

  • RHEL8のマニュアル

  • SIOS社の記事

  • カーネル起動時のパラメタとカーネルパラメタの関係(コミュニティ上のやり取り)

    When ipv6 is compiled as a module, you can disable it with modprobe or sysctl.
    When ipv6 is compiled in-kernel, you can disable it in two ways.
    You can disable the ipv6 stack by adding “ipv6.disable=1” to the kernel cmdline.
    You can disable the assignment of ipv6 addresses to nics by adding “ipv6.disable_ipv6=1” to the kernel cmdline.
    The latter’s the equivalent of creating “/etc/sysctl.d/disable_ipv6.conf” where
    # cat /etc/sysctl.d/disable_ipv6.conf
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv6.conf.default.disable_ipv6=1
    net.ipv6.conf.eth.disable_ipv6=1
    (or you can “echo 1 > /proc/sys/net/ipv6/conf/…/disable_ipv6” at boot)
    https://groups.google.com/g/linux.debian.user/c/W8pH70atFFc/m/vbr8nELKAT0J

記事作成、サイト管理
プロフ画像 (暫定版)

happynap
(はっぴぃなっぷ)

3人家族で暮らし
ITっぽい仕事をしつつ
ポイ活、投資を趣味的に
スキマ時間に、ゆるく全力でブログ
のんびり昼寝したい

お得情報

出張先、旅行先のホテル予約はお早めに

よろしければシェアいただけると
目次