LoginSignup
5
1

More than 5 years have passed since last update.

Amazon AWS EC2 VPCのIPv6対応 インスタンスからのIPv6アドレス通信

Last updated at Posted at 2017-01-15

やったこととサマリ

構築した環境と疎通を試したIPv6通信

オハイオリージョンの同一サブネット内に ubuntu 16.04 LTS のインスタンスを2つ立てて、下記のIPv6通信をしてみた。

  1. 同一サブネット内のインスタンス間の直接IPv6通信
    • グローバルユニキャストアドレス経由
    • リンクローカルユニキャストアドレス経由
  2. All Node Address (ff02::1) リンクローカルマルチキャストアドレスあての通信
  3. stateful DHCPv6に頼らず勝手IPv6アドレスをインスタンスに付与しての通信

サマリ

  • インスタンス間の直接IPv6通信はグローバルアドレス, リンクローカルアドレスともに制限なくできた。
  • All Node Address (ff02::1) へのping6 (ICMP echo request送信) で近隣ノード(デフォルトルータを含む)を見つけられない。
  • 勝手にIPv6アドレスを割り当てても使えずAWSのインフラが割り当てたIPv6アドレスだけしか使えない。現時点(2017.1.15)ではVPN用途でユーザが自前のグローバルIPv6アドレスを持ち込んだり、プライベートIPv4アドレスの感覚で、ユニークローカルIPv6アドレス(ULA)を付けられない様子。

構成図

VPCの同一サブネット内にインスタンスを2つ立てた。

                                             +---------+
                                             |    GW   |
                                             +----+----+
                                                  |RA fe80::4fd:d1ff:fec8:f9cf
                                                  |↓
   2001:1f16:XXXX:YYYY::/64([P1]と表記)            |
   --+------------------------------------+-------+--------
     |                               |
     |     [P1]:f557:112e:f9bd:c7f3  |     [P1]:d326:143a:2015:79fa
     |eth0 fe80::4df:a5ff:fe6c:5d57  |eth0 fe80::4f0:13ff:feeb:c61d
+----+----+                     +----+----+
| ubuntu1 |                     | ubuntu2 |
+---------+                     +---------+

インスタンス間の直接IPv6通信

ubuntu1 to ubuntu2 (グローバルユニキャストアドレス)

OK

ubuntu1# ping6 2600:1f16:XXXX:YYYY:d326:143a:2015:79fa
PING 2600:1f16:8df:XXXX:YYYY:112e:f9bd:c7f3(2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f3) 56 data bytes
64 bytes from 2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f3: icmp_seq=1 ttl=64 time=0.523 ms
64 bytes from 2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f3: icmp_seq=2 ttl=64 time=0.603 ms
^C

ubuntu1 to ubutu2 (リンクローカルユニキャストアドレス)

OK

ubuntu1# ping6 fe80::4f0:13ff:feeb:c61d%eth0
PING fe80::4f0:13ff:feeb:c61d%eth0(fe80::4f0:13ff:feeb:c61d) 56 data bytes
64 bytes from fe80::4f0:13ff:feeb:c61d: icmp_seq=1 ttl=64 time=0.466 ms
64 bytes from fe80::4f0:13ff:feeb:c61d: icmp_seq=2 ttl=64 time=0.553 ms
^C

ubuntu1 to All Nodes Address (リンクローカルマルチキャスト)

ubuntu1# ping6 ff02::1%eth0
64 bytes from fe80::4df:a5ff:fe6c:5d57: icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from fe80::4df:a5ff:fe6c:5d57: icmp_seq=2 ttl=64 time=0.032 ms

同一リンク内にいるはずの、ubuntu2からもデフォルトルータからECHO replyは来ず、自分自身からのみ返事がくる。ubuntu2側のeth0を見ていてもECHO requestが来ないので、インスタンス間にある仮想スイッチで止められている動きだった。

ubunut1の近隣キャッシュを見ると

ubuntu1# ip -6 nei
fe80::4f0:13ff:feeb:c61d dev eth0 lladdr 06:f0:13:eb:c6:1d STALE
fe80::4fd:d1ff:fec8:f9cf dev eth0 lladdr 06:fd:d1:c8:f9:cf router STALE

ICMP ECHO requst/reply は疎通しないもののの、ubuntu2,デフォルトルータいずれも近隣探索は成功しておりMACアドレスの解決はできている。仮想スイッチは近隣探索は通している。

RAで通知されたデフォルトルータへのアクセス

ubuntu1# ip -6 route
fe80::/64 dev eth0  proto kernel  metric 256  pref medium
default via fe80::4fd:d1ff:fec8:f9cf dev eth0  proto ra  metric 1024  expires 1799sec hoplimit 64 pref medium

ubuntu1# ping6 fe80::4fd:d1ff:fec8:f9cf%eth0
^C

リンクローカルユニキャストアドレスでデフォルトルータへICMP ECHO requstを飛ばしても返事なし。

インスタンスに勝手IPv6アドレスをつける

prefix::1 (グローバルユニキャストアドレス)をつける

stateful DHCPv6で割り当てられるIPv6アドレス(マネージメントコンソールで確認できるIPv6アドレス)ではないアドレスを手動でつけて通信を試みる。

ubuntu1 to Internet (インスタンス to Internet)

ubuntu1# ip -6 addr add 2001:1f16:XXXX:YYYY::1/64 dev eth0

DADの重複検知がないことを確認して

# ping6 ipv6.google.com
PING ipv6.google.com(2607:f8b0:4001:c09::71) 56 data bytes
^C

結果: IPv6インターネットへの通信不可

ubuntu1 to ubuntu2 (インスタンス同士)

ubuntu1# ping6 2600:1f16:XXXX:YYYY:d326:143a:2015:79fa
PING 2600:1f16:XXXX:YYYY:d326:143a:2015:79fa(2600:1f16:XXXX:YYYY:d326:143a:2015:79fa) 56 data bytes
^C

近隣要請に対して近隣通知が返ってこず近隣探索に失敗している。

ubuntu1# ip -6 nei
2600:1f16:XXXX:YYYY:d326:143a:2015:79fa dev eth0  INCOMPLETE

結果: 通信不可

管理されているアドレスに近いグローバルユニキャストアドレスをつける

DHCPv6で取れるアドレス (2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f3) + 1 をつける

ubuntu1# ip -6 addr add 2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f4/64 dev eth0

ubuntu1 to Internet

ubuntu1# ping6 ipv6.google.com
PING ipv6.google.com(in-in-x8a.1e100.net) 56 data bytes
^C

結果: 通信不可

ubuntu1 to ubuntu2

ubuntu1# ping6 2600:1f16:XXXX:YYYY:d326:143a:2015:79fa
PING 2600:1f16:XXXX:YYYY:d326:143a:2015:79fa(2600:1f16:XXXX:YYYY:d326:143a:2015:79fa) 56 data bytes
From 2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f4 icmp_seq=1 Destination unreachable: Address unreachable
From 2600:1f16:XXXX:YYYY:f557:112e:f9bd:c7f4 icmp_seq=2 Destination unreachable: Address unreachable
^C

結果: 通信不可

グローバルユニキャストアドレス(ULAを含む)はユーザが勝手持込IPv6アドレスを付けられない様子。

リンクローカルユニキャストアドレス

ubuntu1 のリンクローカルアドレスとして手動で fe80::1234 を付ける

ubuntu1# ip addr del fe80::4df:a5ff:fe6c:5d57/64 dev eth0
ubuntu1# ip addr add fe80::1234/64 dev eth0

ubuntu2のリンクローカルアドレスへICMP ECHO requestを飛ばすが返事はない。ubuntu2の近隣探索にも失敗している。

ubuntu1# ping6 fe80::4f0:13ff:feeb:c61d%eth0
PING fe80::4f0:13ff:feeb:c61d%eth0(fe80::4f0:13ff:feeb:c61d) 56 data bytes
From fe80::1234 icmp_seq=1 Destination unreachable: Address unreachable
From fe80::1234 icmp_seq=2 Destination unreachable: Address unreachable
^C

ubuntu1# ip -6 nei
fe80::4f0:13ff:feeb:c61d dev eth0  INCOMPLETE

リンクローカルアドレスも勝手アドレスを付けらず、インフラ(仮想スイッチ)がアドレス(/128)単位でアクセス制限をしているようである。個々のインスタンスを管理するためにstateful DHCPv6を使うのが合理的であるし、ネットワークも割り当てたIPv6アドレスでない勝手IPv6アドレスによる通信を抑止しているようだ。

関連記事

■ Amazon EC2 VPCのIPv6対応 インスタンスへのIPv6アドレス付与は m-flagつきRA + stateful DHCPv6
http://qiita.com/ip6/items/5c307af204ea83097755

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1