【手順】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に対応しているかコンソール上で確認。

[サービス]→[インスタンス]→[対象サーバーにチェック]→[説明]タブ押下

空欄になっていますね!
設定後は、赤枠内にIPv6が表示されるはずです!

IPv6設定手順

1.AWSコンソールにログイン

2.VPCの編集/作成(今回は既存のVPCを編集します。)

[サービス]→[VPC]→[VPC]→[既存のVPCにチェック]→[アクション]→[Edit CIDRs]→[Add IPv6 CIDR]→[閉じる]

3.サブネットの編集

[サービス]→[VPC]→[サブネット]→[対象のサブネットにチェック]→[サブネットのアクション]→[Edit IPv6 CIDRs]→[Add IPv6 CIDR]→[チェックを入れる]→[閉じる]


まだIPv6はないですね。

IPv6ができました!右の赤枠内のチェックは忘れやすいので、要注意!

4.IPv6をインスタンスに設定

[サービス]→[EC2]→[インスタンス]→[対象のサーバーにチェック]→[アクション]→[ネットワーキング]→[Manage IP Addresses]→[新しいIPの割り当て(IPv6 Addresses)]→[更新する]

5.コンソール上で確認

[サービス]→[インスタンス]→[対象サーバーにチェック]→[説明]タブ押下

IPv6付与できた!
※プライベートIPv6を付与するために、サーバーの再起動をしたほうがいいかもしれません。

サーバー内の設定!(上記設定のみだと、VPC内でしか疎通できません。下記は、お外への通信のための設定です。)

1.対象サーバーにログインして、rootにsu

2.まずは、設定前のIPを確認

コンソールでは、設定されたがサーバー内では設定されていない????

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

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

IPv6対応チェックツール!

こちらで、WebサイトがIPv6に対応しているか確認できます。
こちらは、IPv6アドレスに対して、Pingを飛ばすツールです。

余談

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