ECS で IPv6 が使えるか検証してみた

2017.08.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

本記事は、技術的興味による実験的な検証記事となります。 ECS コンテナで IPv6 が公式にサポートされているわけではありませんので、予めご了承ください。

Docker 環境での IPv6 に関するドキュメントについては、公式サイトをご確認ください。

前提条件

本記事では、ECS 環境が構築済みであることを前提としております。ECS 環境を構築した事が無い読者の方は、こちらの記事を参考に環境を構築してみてください。

ECS 環境で IPv6 を設定する

予め ECS インスタンスへ SSH 接続し、IPv6 の設定を行います。

$ sudo su -
# echo '{"ipv6":true, "fixed-cidr-v6":"2001:db8:1::/64"}' > /etc/docker/daemon.json
# service docker restart
# start ecs

IPv6 アドレスを確認する

設定は完了しました。IPv6 の 80 ポートを LISTEN する nginx コンテナを起動し、IPv6 アドレスが割当てられているか確認してみます。

$ cat default.conf
server {
listen [::]:80 ipv6only=on;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
$ docker run --name nginx -v `pwd`:/etc/nginx/conf.d -d nginx
c631f628251e25521ed87eb84f415841d008a4719753b64798af8cabf78a5574
$ docker network inspect bridge | grep IPv
"EnableIPv6": true,
"IPv4Address": "172.17.0.2/16",
"IPv6Address": "2001:db8:1::242:ac11:2/64"
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c631f628251e nginx "nginx -g 'daemon ..." 2 minutes ago Up 2 minutes 80/tcp nginx
6e05aedfa9cb amazon/amazon-ecs-agent:latest "/agent" 57 minutes ago Up 57 minutes ecs-agent

ちゃんと IPv6 のアドレスが割当たってますね。

IPv6 で通信出来るか確認する

まずは、ECS インスタンスから ping6 で接続確認してみます。

$ ping6 2001:db8:1::242:ac11:2 -c 3
PING 2001:db8:1::242:ac11:2(2001:db8:1::242:ac11:2) 56 data bytes
64 bytes from 2001:db8:1::242:ac11:2: icmp_seq=1 ttl=64 time=0.056 ms
64 bytes from 2001:db8:1::242:ac11:2: icmp_seq=2 ttl=64 time=0.056 ms
64 bytes from 2001:db8:1::242:ac11:2: icmp_seq=3 ttl=64 time=0.042 ms

--- 2001:db8:1::242:ac11:2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2053ms
rtt min/avg/max/mdev = 0.042/0.051/0.056/0.008 ms

ちゃんと繋がりますね。では次に curl で welcome page を取得してみます。

$ curl -g 'http://[2001:db8:1::242:ac11:2]'


<style>
    body {<br />
        width: 35em;<br />
        margin: 0 auto;<br />
        font-family: Tahoma, Verdana, Arial, sans-serif;<br />
    }<br />
</style>

 
<h1>Welcome to nginx!</h1>
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.

For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.

<em>Thank you for using nginx.</em>


$

nginx コンテナ起動時に Port#80 ポートフォーワードの設定を実施していませんが、IPv6 を設定していることにより welcome page を取得できました。

さいごに

ECS の Docker Daemon に対して IPv6 設定を有効化することにより、IPv6 が利用出来ることは確認出来ました。 いずれやってくるであろう IPv6 の時代に備えて IPv6 の理解を深めておきたいなと思いました。

ではでは