CentOS6、CentOS7 の場合はデフォルトで「IPv6」が「有効化」になっています。
今回は「CentOS6」、「CentOS7」で「恒久的に(OS再起動しても)」IPv6 が「無効」の状態になる手順を解説します。
デフォルトの状態の確認
セットアップ時に明示的に「IPv6」を「無効」にしなかった場合の NIC の状態を確認します。
CentOS 6 の場合
[root@cent06 ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D1:F8:58
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: 2408:210:8105:9500:20c:29ff:fed1:f858/64 Scope:Global
inet6 addr: fe80::20c:29ff:fed1:f858/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:175 errors:0 dropped:0 overruns:0 frame:0
TX packets:105 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:19062 (18.6 KiB) TX bytes:17411 (17.0 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:600 (600.0 b) TX bytes:600 (600.0 b)
[root@cent06 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d1:f8:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global eth0
inet6 2408:210:8105:9500:20c:29ff:fed1:f858/64 scope global dynamic
valid_lft 2591910sec preferred_lft 604710sec
inet6 fe80::20c:29ff:fed1:f858/64 scope link
valid_lft forever preferred_lft forever
|
CentOS 7 の場合
[root@cent07 ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2408:210:8105:9500:c67d:e699:c69b:4876 prefixlen 64 scopeid 0x0<global>
inet6 fe80::bfd4:65d3:639d:2f9c prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:6b:9d:b5 txqueuelen 1000 (Ethernet)
RX packets 288 bytes 29225 (28.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 172 bytes 29157 (28.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 68 bytes 5524 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 5524 (5.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@cent07 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:6b:9d:b5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.12/24 brd 192.168.1.255 scope global ens160
valid_lft forever preferred_lft forever
inet6 2408:210:8105:9500:c67d:e699:c69b:4876/64 scope global noprefixroute dynamic
valid_lft 2591928sec preferred_lft 604728sec
inet6 fe80::bfd4:65d3:639d:2f9c/64 scope link
valid_lft forever preferred_lft forever
|
inet6(IPv6)の見方
簡単ですが、上記コマンド結果の IPv6 アドレスの見方です。
「inet6 addr」が「scope link」
リンクローカルアドレスです。
インターネットには接続できません。
IPv6 アドレスは自己生成します。IPv6 アドレスは「fe80」で始まります。
「inet6 addr」が「scope global dynamic」
グローバルアドレスです。
「dynamic」なので、動的に IPv6 アドレスが生成されています。
どのように IPv6 アドレスが作られるのかというと、MAC アドレスから ID とプレフィックスが作られます。
例えば、MAC アドレスが「00:22:15:64:42:bd」の場合、グローバル IPv6 アドレスは「22:15ff:fe64:42bd」で終わります。
そのため、IPv6 アドレスから MAC アドレスを追うのは簡単です。
「inet6 ::1/128 scope host」
ループバックアドレスです。
CentOS 6 の IPv6 の無効化手順
スタンダードに「/etc/sysctl.conf」ファイルを設定します。
「/etc/sysctl.conf」ファイルは、sysctl によって読み込まれます。
sysctl はカーネルパラメータを設定するコマンドです。
「/etc/sysctl.conf」ファイルに以下のカーネルパラメータを追加します。
追加する場所は、どこでもいいので一番下に追加します。
# vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1 ← 追加します。
net.ipv6.conf.default.disable_ipv6 = 1 ← 追加します。
|
カーネルパラメータを追記したら、下記コマンドで設定を反映します。
# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
error: “net.bridge.bridge-nf-call-ip6tables” is an unknown key
error: “net.bridge.bridge-nf-call-iptables” is an unknown key
error: “net.bridge.bridge-nf-call-arptables” is an unknown key
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
|
IPv6 が無効化されたことを確認します。
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:D1:F8:58
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:74478 errors:0 dropped:0 overruns:0 frame:0
TX packets:3147 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4594239 (4.3 MiB) TX bytes:244383 (238.6 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1248 (1.2 KiB) TX bytes:1248 (1.2 KiB)
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:d1:f8:58 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.11/24 brd 192.168.1.255 scope global eth0
|
IPv6 が無効化されていることが確認できました。
OSを再起動する必要がないのがいいですね。
ちなみにですが、CentOS 6 の /etc/sysconfig/network-scripts/ifcfg-eth0 ファイルの中身は IPv6 を「有効化」「無効化」しても変わりありませんでした。
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:D1:F8:58
TYPE=Ethernet
UUID=5fc822d4-cce6-439a-bc6e-eb3376719709
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.1.11
PREFIX=24
GATEWAY=192.168.1.1
|
CentOS 7 の IPv6 の無効化手順
次は「CentOS 7」です。
CentOS 7 も CentOS 6 と同じくカーネルパラメータの編集で「IPv6 を無効化」します。
# vi /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
net.ipv6.conf.all.disable_ipv6 = 1 ← 追加します。
net.ipv6.conf.default.disable_ipv6 = 1 ← 追加します。
|
下記コマンドで設定を反映します。
# sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
|
IPv6 が無効化されたことを確認します。
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:6b:9d:b5 txqueuelen 1000 (Ethernet)
RX packets 75560 bytes 4676791 (4.4 MiB)
RX errors 0 dropped 10 overruns 0 frame 0
TX packets 5071 bytes 408368 (398.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 68 bytes 5524 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 5524 (5.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:6b:9d:b5 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.12/24 brd 192.168.1.255 scope global ens160
valid_lft forever preferred_lft forever
|
IPv6 が無効化されていることを確認しました。
ちなみに「CentOS 7」の「/etc/sysconfig/network-scripts/ifcfg-ens160」を確認します。
【デフォルト(OSインストール直後)】
# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”ens160″
UUID=”c166843d-ccd2-4a37-9e50-906a2080c25f”
DEVICE=”ens160″
ONBOOT=”yes”
IPADDR=”192.168.1.12″
PREFIX=”24″
GATEWAY=”192.168.1.1″
DNS1=”8.8.8.8″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”
IPV6_PRIVACY=”no”
|
【/etc/sysctl.conf 編集後、sysctl -p コマンド実行後(OSは再起動していない)】
「/etc/sysconfig/network-scripts/ifcfg-ens160」ファイルの中身は変わっていません。
カーネルパラメータを変更しても、OSの再起動はやっていないため、「IPV6INIT=”yes”」のままです。
# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”ens160″
UUID=”c166843d-ccd2-4a37-9e50-906a2080c25f”
DEVICE=”ens160″
ONBOOT=”yes”
IPADDR=”192.168.1.12″
PREFIX=”24″
GATEWAY=”192.168.1.1″
DNS1=”8.8.8.8″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”
IPV6_PRIVACY=”no”
|
【OS 再起動後】
# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”ens160″
UUID=”c166843d-ccd2-4a37-9e50-906a2080c25f”
DEVICE=”ens160″
ONBOOT=”yes”
IPADDR=”192.168.1.12″
PREFIX=”24″
GATEWAY=”192.168.1.1″
DNS1=”8.8.8.8″
IPV6_PEERDNS=”yes”
IPV6_PEERROUTES=”yes”
IPV6_PRIVACY=”no”
|
OS再起動後のコンフィグファイルを確認しましたが、変わりはありませんでした。
結論から言えば、カーネルパラメータで IPv6 を「無効化」してもファイルは変更されないということです。
コメント