CentOS7でIPv6の設定方法についてです。
IPv4と同様にnmtuiまたはnmcliを使ってIPv6アドレスを設定します。以下ではnmcliコマンドを使ったIPv6アドレスの設定方法について記載しています。デフォルトでIPv6は有効となっており、リンクローカルアドレスが割り振られています。
# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:1a:a0:0c:a6:12 brd ff:ff:ff:ff:ff:ff inet 192.168.18.130/24 brd 133.92.18.255 scope global eno1 valid_lft forever preferred_lft forever inet6 fe80::21a:a0ff:fe0c:a612/64 scope link valid_lft forever preferred_lft forever |
IPv6で外部と通信を実施する際にはグローバルユニキャストアドレスが必要となりますのでそれように設定する必要があります。まず、以下のファイルでIPv6アドレスを設定できるようインターフェイスの設定を実施しておく必要があります。
# vi /etc/sysconfig/network-scripts/ifcfg-eno1 <省略> IPV6INIT=yes |
上記設定を有効にするためにNetworkManagerを再起動します。
# systemctl restart NetworkManager |
続いてnmcliコマンドでグローバルユニキャストアドレスを設定します。実際の設定コマンドは下記となります。
※下記を入れないとIPv6アドレスが設定ができなかった # nmcli connection modify eno1 ipv6.method "auto" ※IPv6アドレスおよびゲートウェイの設定 # nmcli connection modify eno1 ipv6.addresses "2001:db8::100/64 2001:db8:0::1" ※autoからmanualに変更 # nmcli connection modify eno1 ipv6.method "manual" ※DNSサーバの設定 # nmcli connection modify eno1 ipv6.dns "2001:db8:0::1 2001:db8:0::2" |
そして再度、設定を有効にするためにネットワークを再起動します。IPv6を設定した場合、NetworkManagerとnetworkの両方を再起動しないと有効になりませんでした。
# systemctl restart NetworkManager # systemctl restart network |
再度IPアドレスを表示すると上記で設定したIPv6アドレスが表示されます。
# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:1a:a0:0c:a6:12 brd ff:ff:ff:ff:ff:ff inet 192.168.18.130/24 brd 133.92.18.255 scope global eno1 valid_lft forever preferred_lft forever inet6 2001:db8::100/64 scope global valid_lft forever preferred_lft forever inet6 fe80::21a:a0ff:fe0c:a612/64 scope link valid_lft forever preferred_lft forever |
ちなみにIPv6のアドレスのみを表示したい場合はオプションで-6を付け加えることでIPv4は非表示とできます。
# ip -6 addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:db8::100/64 scope global valid_lft forever preferred_lft forever inet6 fe80::21a:a0ff:fe0c:a612/64 scope link valid_lft forever preferred_lft forever |
IPv6のルーティングテーブルも同様に-6オプションをつけることによってIPv6のものを表示することができます。
# ip -6 route unreachable ::/96 dev lo metric 1024 error -101 unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -101 2001:db8::/64 dev eno1 proto kernel metric 256 unreachable 2002:a00::/24 dev lo metric 1024 error -101 unreachable 2002:7f00::/24 dev lo metric 1024 error -101 unreachable 2002:a9fe::/32 dev lo metric 1024 error -101 unreachable 2002:ac10::/28 dev lo metric 1024 error -101 unreachable 2002:c0a8::/32 dev lo metric 1024 error -101 unreachable 2002:e000::/19 dev lo metric 1024 error -101 unreachable 3ffe:ffff::/32 dev lo metric 1024 error -101 fe80::/64 dev eno1 proto kernel metric 256 default via 2001:db8::1 dev eno1 proto static metric 1024 |
ping6コマンドで自分自身に応答があることも確認しておきます。
# ping6 2001:db8::100 PING 2001:db8::100(2001:db8::100) 56 data bytes 64 bytes from 2001:db8::100: icmp_seq=1 ttl=64 time=0.081 ms 64 bytes from 2001:db8::100: icmp_seq=2 ttl=64 time=0.019 ms 64 bytes from 2001:db8::100: icmp_seq=3 ttl=64 time=0.017 ms |
さらにもとから設定されているリンクローカルアドレス ( fe80::21a:a0ff:fe0c:a612/64 ) は使わないのでこれのみ削除するコマンドが以下となります。
# ip addr del fe80::21a:a0ff:fe0c:a612/64 dev eno1 |
再度IPv6アドレスを表示するとグローバルユニキャストアドレスのみであることが確認できます。
# ip -6 addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:db8::100/64 scope global valid_lft forever preferred_lft forever |
そもそもIPv6は使用しないので無効にしておきたいという方もたくさんいらっしゃると思います。この場合はCentOS6までと同様の方法でIPv6を無効とすることができます。/etc/sysctl.confを編集します。
# vi /etc/sysctl.conf <下記を追記> 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アドレスが表示されなくなったことを確認します。
# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 valid_lft forever preferred_lft forever 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:1a:a0:0c:a6:12 brd ff:ff:ff:ff:ff:ff inet 192.168.18.130/24 brd 133.92.18.255 scope global eno1 valid_lft forever preferred_lft forever |