この記事は公開されてから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 の理解を深めておきたいなと思いました。
ではでは