【随時更新】Amazonタイムセール情報

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

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

当サイトでは、広告掲載ポリシーに沿って広告を掲載しています。

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

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

基本的に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

日ごろのお買い物等にご利用いただけると当ブログ継続の励みになります

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

シェア=ありがたみ
  • URLをコピーしました!
目次