【CentOS7/RHEL7】 IPv6 を無効化 & nmcli を用いたネットワーク設定

こんにちは。サイオステクノロジー OSS サポート担当何敏欽です。

IPv6 を無効にする方法

CentOS7/RHEL7 では、IPv6 がデフォルトで利用可能です。ただし、IPv6 を無効にしたい時ってありますよね。CentOS7/RHEL7 における IPv6 を無効にする方法を紹介します。なお、ブリッジインターフェースにおいても、IPv6 を無効にする場合はこちらの方法を実施するだけで十分であり、ブリッジインターフェースごとの設定は必要ありません。

IPv6 を無効にする方法

■カーネルに組み込まれている ipv6 モジュールを無効にする方法 (再起動が必要)

/etc/default/grub を編集し、以下のように GRUB_CMDLINE_LINUX に ipv6.disable=1 を追加します。

# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto ipv6.disable=1 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

grub2-mkconfig コマンドを実行して、grub.cfg ファイルを再生成します。

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-7b1ccbc4cf424feda5270da1bc2409af
Found initrd image: /boot/initramfs-0-rescue-7b1ccbc4cf424feda5270da1bc2409af.img
done

設定を反映するために、システムを再起動する必要があります。

■sysctl 設定を使用して IPv6 を無効にする方法 (再起動は不要)

/etc/sysctl.conf を編集し、以下のように設定を追加します。

# vim /etc/sysctl.conf
# すべてのインターフェイスを無効にする
net.ipv6.conf.all.disable_ipv6 = 1
# 特定のインタフェースを無効にする
net.ipv6.conf.[interface].disable_ipv6 = 1

sysctl -p コマンドを実行して、設定を反映します。

# sysctl -p

IPv4、IPv6 の関連オプションについて

インターフェイス設定ファイルにある IPv4、IPv6 の関連オプションの意味について、纏める記事が少ないので、下記に説明します。

    • IPV4_FAILURE_FATAL:デフォルト値は no です。

この値が yes の場合は、IPv4 設定に失敗すると当該インタフェース全体の設定を失敗させることを示します。この設定は「この接続を完了するにはIPv4アドレス化が必要になります。」チェックを入れる設定です。
IPV4_FAILURE_FATAL は may-fail プロパティとは逆の意味を持ちます。

    • IPV6INIT:デフォルト値は yes です。

この値が no の場合は、このインターフェイスで IPv6 アドレスが設定されないことを network-scripts に通知します。この設定は「IPv6のセッティング」タブで、「方式」を「無視する」にする設定です。
IPv6 アドレスの設定を行わないだけで、IPv6 を無効化する設定ではありません。

    • IPV6_AUTOCONF:デフォルト値は yes です。

この値が no の場合は、このインターフェイスで IPv6 の自動設定を無効にします。
IPV6_AUTOCONF のデフォルト値は、次のように IPV6FORWARDING に依存することに注意してください。
IPV6FORWARDING = yes の場合、IPV6_AUTOCONF はデフォルトで no になります。
IPV6FORWARDING = no の場合、IPV6_AUTOCONF はデフォルトで yes になり、IPV6_ROUTER は無効になります。

    • IPV6_DEFROUTE:デフォルト値は yes です。

この値が no の場合は、このインターフェイスで IPv6 アドレスが設定されないことを network-scripts に通知します。
IPV6_DEFROUTE は never-default プロパティとは逆の意味を持ちます。

    • IPV6_FAILURE_FATAL:デフォルト値は no です。

この値が yes の場合は、IPv6 設定に失敗すると当該インタフェース全体の設定を失敗させることを示します。
IPV6_FAILURE_FATAL は may-fail プロパティとは逆の意味を持ちます。

    • IPV6_ADDR_GEN_MODE:デフォルト値は eui64 です。

この値は stable-privacy の場合は、アドレスがランダム化され、ネットワークカードの MAC アドレスに基づいていない IPv6 アドレスが割り当てられます。この機能では、選択したサブネットの範囲内で IPv6 アドレスを割り当てようとします。
アドレスをランダム化する利点の1つは、アドレスがより安全であることです。

NetworkManager コマンドラインツール (nmcli) の使用

CentOS6/RHEL6 までは、インタフェースを設定する場合は /etc/sysconfig/network-scripts/ifcfg-ethX を編集するのが一般的でしたが、CentOS7/RHEL7 ではこのやり方が非推奨になりました。CentOS7/RHEL7 からはネットワークを設定するためのコマンドとして、NetworkManager に付属する nmcli の使用が推奨されます。nmcli は、ネットワークデバイスの状態を制御および表示するのに加えて、ネットワーク接続を作成、表示、編集、削除、アクティブ化、および非アクティブ化するのに用いられます。

nmcli を使用した設定例をいくつか紹介します。nmcli はたくさんのオプションがありますので、詳細は man nmcli でご参照ください。

■デバイス情報、ネットワーク設定情報の確認

# nmcli d show ens192
GENERAL.デバイス:                       ens192
GENERAL.タイプ:                         ethernet
GENERAL.ハードウェアアドレス:           00:50:56:80:DA:ED
GENERAL.MTU:                            1500
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           ens192
GENERAL.CON パス:                       /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.キャリア:              オン
IP4.アドレス[1]:                        aaa.aaa.aaa.aaa/24
IP4.ゲートウェイ:                       aaa.aaa.aaa.bbb
IP4.DNS[1]:                             aaa.aaa.aaa.ccc
IP4.ドメイン[1]:                        xxx.xxx.xxx
IP6.ゲートウェイ:                       --

■IP アドレス、ゲートウェイの設定

# nmcli c mod ens192 ipv4.addresses aaa.aaa.aaa.aaa/24
# nmcli c mod ens192 ipv4.gateway aaa.aaa.aaa.bbb

■ネットワーク接続の有効化

# nmcli c mod ens160 connection.autoconnect yes

上記コマンドを実施することで、ONBOOT の設定値は yes になります。

■IPv4 設定に失敗するとインタフェース全体の設定を失敗させる

# nmcli con mod ens192 ipv4.may-fail no

上記コマンドを実施することで、IPV4_FAILURE_FATAL の設定値は yes になります。

■IPv6 アドレス設定を行わない

# nmcli con mod ens192 ipv6.method ignore

上記コマンドを実施することで、IPV6INIT の設定値は no になります。

■変更内容を適用

# nmcli con up ens192
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/6)

以上で IPv6 を無効にする方法、IPv4、IPv6 の関連オプションの意味や nmcli コマンドの使用方法ついて説明しました。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

4人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です