こんにちは。サイオステクノロジー 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 コマンドの使用方法ついて説明しました。