【手順】iOSのAPIサーバーに必要なIPv6をEC2に設定してみた（VPC）

# はじめに
構築したサーバーをiOSのAPIサーバーとして使うとき、IPv6に対応することが必須になります。
IPv6に対応していないと、下記のようなエラーが出てしまいます。

```
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 10.2.1 on Wi-Fi connected to an IPv6 network.
```

Appleのアプリ申請が厳しくなったようですね。
IPv6にも対応していないと、申請ができなくなってしまったようです。


# まずは、現状の確認（IPv6）
1.AWSコンソールにログイン

2.IPv6に対応しているかコンソール上で確認。
> [サービス]→[インスタンス]→[対象サーバーにチェック]→[説明]タブ押下
<img width="1020" alt="スクリーンショット 2017-03-13 20.50.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/168635/e7fd0db2-e503-1089-9e83-21525a867ee3.png">
空欄になっていますね！
設定後は、赤枠内にIPv6が表示されるはずです！


# IPv6設定手順
1.AWSコンソールにログイン

2.VPCの編集/作成（今回は既存のVPCを編集します。）
> [サービス]→[VPC]→[VPC]→[既存のVPCにチェック]→[アクション]→[Edit CIDRs]→[Add IPv6 CIDR]→[閉じる]
![WS000003.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/6710a478-6b7d-543d-f7f3-2c875e33201e.jpeg)

>![WS000004.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/71c10ad1-d8ad-4a9f-d7eb-66ff8a31828d.jpeg)


3.サブネットの編集
> [サービス]→[VPC]→[サブネット]→[対象のサブネットにチェック]→[サブネットのアクション]→[Edit IPv6 CIDRs]→[Add IPv6 CIDR]→[チェックを入れる]→[閉じる]
![WS000005.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/17b375fe-afc6-18cd-842c-b06dd4e9718d.jpeg)
> 
> ![WS000006.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/a616d22a-9b13-8b62-6194-91a858ed2989.jpeg)
> まだIPv6はないですね。
> ![WS000007.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/6e0fdd9c-3182-4873-3fbe-e163c72d263e.jpeg)
> IPv6ができました！右の赤枠内のチェックは忘れやすいので、要注意！


4.IPv6をインスタンスに設定
> [サービス]→[EC2]→[インスタンス]→[対象のサーバーにチェック]→[アクション]→[ネットワーキング]→[Manage IP Addresses]→[新しいIPの割り当て（IPv6 Addresses）]→[更新する]
![WS000008.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/1405c306-f142-2cad-2a35-de2b745a9675.jpeg)

> ![WS000009.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/25997e2c-9788-1630-6e96-72b0ebdbbe72.jpeg)


5.コンソール上で確認
> [サービス]→[インスタンス]→[対象サーバーにチェック]→[説明]タブ押下
![WS000010.JPG](https://qiita-image-store.s3.amazonaws.com/0/168635/ad13a36a-d8d8-785d-a111-b53049750fcf.jpeg)
IPv6付与できた！
※プライベートIPv6を付与するために、サーバーの再起動をしたほうがいいかもしれません。


# サーバー内の設定！(上記設定のみだと、VPC内でしか疎通できません。下記は、お外への通信のための設定です。)
1.対象サーバーにログインして、rootにsu

2.まずは、設定前のIPを確認
> コンソールでは、設定されたがサーバー内では設定されていない？？？？

<img width="798" alt="スクリーンショット 2017-03-20 10.48.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/168635/a55bceef-9aee-92f4-f847-d6518c4e27d9.png">

3.IPv6を有効にする
> 下記設定を行います。

```
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
EVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="yes"
PEERDNS="yes"
#IPV6INIT="no"　←★コメントアウト
IPV6INIT="yes"　←★追記！
PERSISTENT_DHCLIENT="1"
DHCPV6C=yes ←★追記！
```

4.設定の反映
> networkの再起動で、IPv6有効設定を反映させます

```
# systemctl restart network
```

5.設定後のIPv6を確認！
> IPv6の欄が増えました！

```
# ip a
```

<img width="802" alt="スクリーンショット 2017-03-20 10.58.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/168635/74056549-926a-3cc2-b96d-2079f14ec035.png">

>後は、下記のツールを用いてお外から通信できるか確かめてください。



#IPv6対応チェックツール！
[こちらで、WebサイトがIPv6に対応しているか確認できます。](http://ipv6-test.com/validate.php)
[こちらは、IPv6アドレスに対して、Pingを飛ばすツールです。](https://ja.infobyip.com/ping.php)


#余談
セキュリティグループで、しっかりとIPv6の許可をしましょう！

<img width="1003" alt="スクリーンショット 2017-03-29 21.31.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/168635/14d866ba-247f-905e-cf08-2429e06ef262.png">