砂漠の旅人(たびと)

UNIX / MS-DOS 時代から電脳砂漠を旅しています

【IPv6 環境構築】CentOS 7 と Windows 11 にユニークローカルな IPv6 アドレスを設定する

こんにちは、たびとです。

仕事で IPv6 を使う機会がありましたが、これまで使ったことがないため、右も左もわかりません。 インターネットで調べてみても、難しい説明ばかりで何をすればいいのか、よく理解できません。

結局、いろいろなサイトを調べて、試行錯誤しながら IPv6 の動作環境を作りあげることができました。 この時の備忘録として、Hyper-V 上に作った CentOS 7 と Windows 11 に IPv6 を設定して、通信してみたいと思います。

この記事の対象者

  • IPv6 のアドレスを使ってみたいけど、よくわからない。
  • 説明や理論はいいから、とにかく直ぐに試せるサンプルがほしい。

IPv6 について

IPv6 のアドレスは以下の3種類があります。

  • リンクローカル(同一セグメント)
  • ユニークローカル(組織内ネットワーク)
  • グローバル(グローバルネットワーク)

今回は、ユニークローカルアドレスを使ってみたいと思います。 調べてみると、以下の 2通りあるようなので、fd00::8 の方を使うことをします。

アドレス 説明
fc00::/8 将来の定義用
fd00::/8 40ビットのグローバル識別子+16ビットのサブネット

結局、fd の後ろ 56ビットに適当な数値を当てはめて、残り 64 ビットが一意になるように割り振ります。 アドレス表記は以下のような特徴があります。

  1. 先頭の 0 は省略することができる
  2. 連続した 0:0: の繰り返しは一度だけ、:: に省略することができる

例えば、fd00:0010:0020:0030:0000:0000:0000:0001 という IPv6 アドレスがあった場合、 1 を適用し、fd00:10:20:30:0:0:0:1 になり、2を適用し、fd00:10:20:30::1 と省略することができます。

ということで、上記の fd00:10:20:30::/64 を使って IPv6 アドレスを割り当ててみます。

CentOS 7 に IPv6 を設定する

最初に、ネットワーク設定をバックアップします。 ここで注意することは、ディレクトリ内は自動で読み取られるため、サブディレクトリを作って、そこにバックアップを作成してください。 また、eth0 の箇所は、異なることがあるので ip a でネットワークインターフェース名を確認してください。

$ cd /etc/sysconfig/network-scripts
$ sudo mkdir backup
$ cp -p ifcfg-eth0 ./backup/ifcfg-eth0.org

バックアップが終わったら、ifcfg-eth0.org を編集します。 IPV6_AUTOCONF="yes" を "no" に変更し、IPV6ADDR を追加します。 IPv6 アドレスは「fd00:10:20:30::101」とします。

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="no"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
UUID="dbecf02c-025c-4398-955b-519ed63f1f02"
DEVICE="eth0"
ONBOOT="yes"
IPV6ADDR="fd00:10:20:30::101/64"

ネットワークを再起動します。

$ sudo systemctl restart NetworkManager
$ sudo systemctl restart network

IPv6 アドレスが追加されていることを確認します。

$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:44:3b:01 brd ff:ff:ff:ff:ff:ff
    inet 172.31.125.241/20 brd 172.31.127.255 scope global noprefixroute dynamic eth0
       valid_lft 86377sec preferred_lft 86377sec
    inet6 fd00:10:20:30::101/64 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 fe80::c5a4:3e4d:9ae3:c7da/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

先ほど設定した「fd00:10:20:30::101/64」が表示されています。 fe80 で始まるのはリンクローカルアドレスで最初から設定されている IPv6 アドレスで、 ユニークローカルと共存することになります。

Windows 11 に IPv6 を設定する

コンソールを開き、IP アドレスを確認します。

C:\> ipconfig

Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .: mshome.net
   リンクローカル IPv6 アドレス. . . . .: fe80::b7f8:e669:b819:a1da%7
   IPv4 アドレス . . . . . . . . . . . .: 172.31.116.48
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .: 172.31.112.1

ファイアウォールの設定

Windows 11 から CentOS 7 へ ping が通って、CentOS 7 から Windows 11 への ping が通らないときは、 Windows Defender ファイアウォールの設定を確認します。

Windows Defender ファイアウォール

左メニューの「詳細設定」をクリックし、セキュリティが強化された Windows Defender ファイアウォールの画面を開き、 受信の規則から「ファイルとプリンターの共有(エコー要求 - IPMCv4受信)」をクリックします。 ドメインとプライベート,パブリックの2種類があるので、「プライベート,パブリック」の方を選択します。

セキュリティが強化された Windows Defender ファイアウォール

有効(E) をチェックして、ダイアログを閉じます。

有効(E) にチェックする

同様に、「ファイルとプリンターの共有(エコー要求 - IPMCv6受信)」も同様に有効にします。有効になると、先頭に緑のチェックマークアイコンが表示されます。

ファイアウォールの有効化

これで、CentOS 7 側から Windows 11 への ping ができるようになります。

IPv6 アドレスの設定

「ネットワークとインターネット - ネットワークの詳細設定」から「ネットワーク アダプター オプションの詳細」をクリックします。

ネットワークアダプター オプションの詳細

ネットワーク接続画面が表示されるので、「イーサネット」アイコンをクリックし、イーサネットの状態ダイアログの「プロパティ(P)」をクリックします。

ネットワーク接続

イーサネットのプロパティ ダイアログから「インターネット プロトコル バージョン 6 (TCP/IPv6)」を選択し、プロパティ(R) ボタンをクリックします。

イーサネットのプロパティ

「次の IPv6 アドレスを使う(S):」をクリックし、IPv6 アドレスに「fd00:10:20:30::102」、サブネット プレフィックスの長さに「64」を設定します。

IPv6 アドレスの設定

これで、IPv6 アドレスの設定は完了です。コマンドラインで ipconfig コマンドを実行すると、「fd00:10:20:30::102」のアドレスが表示されます。 注意する点は、リンクローカル IPv6 アドレスも存在していることで、どちらに対してもアクセスすることができます。

 C:\> ipconfig

Windows IP 構成


イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .: mshome.net
   IPv6 アドレス . . . . . . . . . . . .: fd00:10:20:30::102
   リンクローカル IPv6 アドレス. . . . .: fe80::b7f8:e669:b819:a1da%7
   IPv4 アドレス . . . . . . . . . . . .: 172.31.116.48
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .: 172.31.112.1

CentOS 7 と Windows 11 で通信する

Windows 11 から CentOS 7 へ ping を実行します。

 C:\> ping fd00:10:20:30::101

fd00:10:20:30::101 に ping を送信しています 32 バイトのデータ:
fd00:10:20:30::101 からの応答: 時間 <1ms
fd00:10:20:30::101 からの応答: 時間 =1ms
fd00:10:20:30::101 からの応答: 時間 =1ms
fd00:10:20:30::101 からの応答: 時間 <1ms

fd00:10:20:30::101 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 1ms、平均 = 0ms

CentOS 7 から Windows 11 へ ping6 を実行します。ping ではなく ping6 コマンドを使います。

$ ping6 fd00:10:20:30::102
PING fd00:10:20:30::102(fd00:10:20:30::102) 56 data bytes
64 bytes from fd00:10:20:30::102: icmp_seq=1 ttl=128 time=0.821 ms
64 bytes from fd00:10:20:30::102: icmp_seq=2 ttl=128 time=0.884 ms
64 bytes from fd00:10:20:30::102: icmp_seq=3 ttl=128 time=1.02 ms
64 bytes from fd00:10:20:30::102: icmp_seq=4 ttl=128 time=0.911 ms
^C
--- fd00:10:20:30::102 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3064ms
rtt min/avg/max/mdev = 0.821/0.909/1.023/0.081 ms

ちなみに、Windows 11 のリンクローカルアドレスに ping6 を実行するときは、 -I オプションでインターフェース名を指定する必要があります。

$ ping6 -I eth0 fe80::b7f8:e669:b819:a1da
PING fe80::b7f8:e669:b819:a1da(fe80::b7f8:e669:b819:a1da) from fe80::c5a4:3e4d:9ae3:c7da%eth0 eth0: 56 data bytes
64 bytes from fe80::b7f8:e669:b819:a1da%eth0: icmp_seq=1 ttl=128 time=0.600 ms
64 bytes from fe80::b7f8:e669:b819:a1da%eth0: icmp_seq=2 ttl=128 time=0.988 ms
64 bytes from fe80::b7f8:e669:b819:a1da%eth0: icmp_seq=3 ttl=128 time=1.14 ms
64 bytes from fe80::b7f8:e669:b819:a1da%eth0: icmp_seq=4 ttl=128 time=1.09 ms
^C
--- fe80::b7f8:e669:b819:a1da ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3039ms
rtt min/avg/max/mdev = 0.600/0.957/1.149/0.216 ms

CentOS 7 の ApacheIPv6 を使ってアクセスします。このとき URL の IPv6 アドレスは http://[fd00:10:20:30::101] のように、大カッコで囲む必要があります。

ApacheIPv6 でアクセスする

まとめ

IPv6 アドレスは複数持つことが可能で、ユニークローカル IPv6 アドレスを設定しても、 リンクローカル IPv6 アドレスは上書きされずに残ります。

このユニークローカル IPv6 アドレスを設定し、CentOS 7 と Windows 11 で IPv6 通信を確認し、 CentOS 7 の ApacheIPv6 の URL でアクセスできることも確認できました。 意外と簡単に IPv6 環境が構築できることが理解できたかと思います。

では、皆さん、よい旅を。