この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
今回わたしが実施しますハンズオンはAWSハンズオン資料にあります、“Network編#2 AmazonVPC間およびAmazonVPCとオンプレミスのプライベートネットワーク接続”です。
わたしは日々の業務を通して、AmazonVPCとオンプレミスを接続する方法を知っていることは今後益々必要になってくるのではと感じています。
“AWS Hands-on for BeginnersNetwork編#2”はAmazonVPC上で、VPC間の接続およびVPCとオンプレミスの接続に興味がある方向けのハンズオンです。実際に手を動かしてやってみることで、VPC間の接続やVPNの仕組みが理解できればと、わたしは今回実施してみました。
“AWS Hands-on for BeginnersNetwork編#2”はボリュームが多いので、Amazon VPC間を接続する方法とAmazon VPCとオンプレミスを接続する方法を前編・後編に分けて紹介していきます。今回は前編として、AmazonVPC間を接続する方法のハンズオンです。
Amazon VPC間を接続する方法 ~ピアリング接続~
“AWS Hands-on for BeginnersNetwork編#2”のハンズオンでは、
- Amazon VPC間を接続する方法
- Amazon VPCとオンプレミスを接続する方法
が紹介されています。
前半のAmazon VPC間を接続する方法では、VPCピアリング接続を使用したハンズオンを実施し、後半のAmazon VPCとオンプレミスを接続する方法では、AWS Site-to-Site VPNを使用したハンズオンを実施することで、具体的な設定方法を理解できるはずです。
まずは「Amazon VPC間を接続する方法」のハンズオンをやっていきましょう。
1.メインVPC作成
まずはメインのVPCを作成していきます。AWSマネージメントコンソールにログインし、リージョンを確認してください。わたしはシンガーポールリージョンで作成していきます。
それでは、サービスメニューからVPCをクリックし、次に“VPCを作成”ボタンを押してください。
メインVPCのパラメータは以下の通りです。
項目 | 設定値 |
---|---|
作成するリソース | VPCなど |
名前タグの自動生成 | Main VPC |
IPv4 CIDR ブロック | 10.0.0.0/16 |
IPv6 CIDR ブロック | IPv6 CIDR ブロックなし |
テナンシー | デフォルト |
アベイラビリティゾーン(AZ)の数 | 1 |
AZのカスタマイズ | ap-southeast-1a |
パブリックサブネットの数 | 1 |
プライベートサブネットの数 | 0 |
サブネット CIDR ブロックをカスタマイズ | 10.0.0.0/24 |
NATゲートウェイ | なし |
VPCエンドポイント | なし |
DNSホスト名を有効化 | ☑ |
DNS解決を有効化 | ☑ |
コンソール画面で見ると、下の画像の通りです。
↓
2.ルートテーブル(メインVPC)の名前を編集
VPCのダッシュボード画面の左ペインにあります“VPCフィルタリング”から「Main VPC」を選択します。
その次に左ペインから“ルートテーブル”をクリックすると、MainVPCと関連のあるルートテーブルが2つ表示されます。
2つあるルートテーブルのうち、送信先が“0.0.0.0/0”に向いているルートテーブルを「Main Public Route Table」とし、VPC内のルートのみを持つルートテーブルを「Main Private Route Table」と名前を変更します。
3.ピアリング接続用VPC作成
メインVPCが準備できましたので、ピアリング接続用VPCを作成していきます。左のペインのVPCダッシュボードをクリックし、“VPCを作成”を押します。
Peearing VPCのパラメータは以下の通りです。
項目 | 設定値 |
---|---|
作成するリソース | VPCなど |
名前タグの自動生成 | Peering VPC |
IPv4 CIDR ブロック | 10.1.0.0/16 |
IPv6 CIDR ブロック | IPv6 CIDR ブロックなし |
テナンシー | デフォルト |
アベイラビリティゾーン(AZ)の数 | 1 |
AZのカスタマイズ | ap-southeast-1a |
パブリックサブネットの数 | 1 |
プライベートサブネットの数 | 0 |
サブネット CIDR ブロックをカスタマイズ | 10.1.0.0/24 |
NATゲートウェイ | なし |
VPCエンドポイント | なし |
DNSホスト名を有効化 | ☑ |
DNS解決を有効化 | ☑ |
コンソール画面で見ると、下の画像の通りです。
↓
4.ルートテーブル(ピアリング接続用VPC)の名前を編集
VPCのダッシュボード画面の左ペインにあります“VPCフィルタリング”から「Peering VPC」を選択します。
その次に左ペインから“ルートテーブル”をクリックすると、Peering VPCと関連のあるルートテーブルが2つ表示されます。
2つあるルートテーブルのうち、送信先が“0.0.0.0/0”に向いているルートテーブルを「Peering Public Route Table」とし、VPC内のルートのみを持つルートテーブルを「Peering Private Route Table」と名前を変更します。
5.ピアリング接続の作成
VPCサービス画面の左ペインにあります“ピアリング接続”をクリックし、“ピアリング接続を作成”ボタンを押します。
VPCピアリング接続のパラメータは以下の通りです。
項目 | 設定値 |
---|---|
名前 | peering-handson |
VPC ID (リクエスタ) | Main VPCを選択 |
アカウント | 自分のアカウント |
リージョン | このリージョン |
VPC ID (アクセプタ) | Peering VPC |
設定が入力できましたら、“ピアリング接続を作成”ボタンをクリックします。
ピアリング接続の画面を見てみると、先ほど作成したピアリング接続のステータスが承諾の保留中になっているのです。この承諾の保留は、時間がたってもそのままなんですよね。
承諾保留の理由は、VPCピアリングは他のアカウントのVPCと接続ができるので、ピアリングのリクエストをして承諾するという2ステップになっているからです。
承諾するために作成したピアリング接続を選択し、アクションから“リクエストの承諾”をクリックしてください。
“リクエストを承諾”ボタンを押してください。ステータスがアクティブに変わっていれば、成功です。
次にルートテーブルの編集です。左ペインからルートテーブルを押してください。
「Main Public Route Table」を選択し、ルートタブをクリック、“ルートの編集”ボタンを押してください。
ルートの編集画面で“ルートの追加”ボタンを押します。以下の設定で入力してください。
項目 | 設定値 |
---|---|
送信先 | 10.1.0.0/16 |
ターゲット | ピアリング接続⇒「Peering handson」 |
設定が完了しましたら、“ルートの保存”ボタンを押してください。
「Peering Public Route Table」のルートも同様に編集します。「Peering Public Route Table」を選択し、ルートタブで“ルートの編集”をクリックしてください。
ルートの編集画面で“ルートの追加”ボタンを押します。
項目 | 設定値 |
---|---|
送信先 | 10.0.0.0/16 |
ターゲット | ピアリング接続⇒「Peering handson」 |
6.疎通確認用EC2インスタンス作成
VPC間の疎通確認をするため、ピアリング接続用VPCにEC2インスタンスの作成と、メインVPCにCloud9を作成していきます。
まずはVPC(ピアリング接続用)にEC2インスタンスを作成します。EC2ダッシュボード画面で、“EC2インスタンスを起動”ボタンを押してください。
EC2インスタンスのパラメータは以下の通りです。
項目 | 設定値 |
---|---|
名前 | Peering |
AMI | デフォルト(Amazon Linux 2 Kernel 5.10) |
インスタンスタイプ | デフォルト(t2.micro) |
キーペア | 任意のキーペアを利用 |
ネットワーク | Peering VPC |
サブネット | Peering VPC subnet-public1-ap-southeast-1a |
パブリックIPの自動割り当て | 有効化 |
セキュリティグループを作成する | ● |
セキュリティグループ名 | peering |
説明 | peering |
インバウンドルール | |
タイプ | すべてのトラフィック |
プロトコル | すべて |
ソースタイプ | カスタム |
ソース | 10.0.0.0/16 |
説明 | なし |
高度なネットワーク設定 | ネットワークインターフェイス1 |
プライマリ | 10.1.0.100 |
ストレージ設定 | デフォルト |
高度な詳細 | デフォルト |
インスタンス数 | 1 |
↓
入力が完了しましたら、“EC2インスタンスを起動”をクリックしてください。
次にCloud9を作成していきます。Cloud9とはクラウドベースの統合開発環境です。今回開発などはしないのですが、環境差分をなくすために使います。
サービス検索で“Cloud9”と検索し、クリックしてください。
“Create environment”ボタンを押してください。
Cloud9のパラメータは以下の通りです。
項目 | 設定値 |
---|---|
Name | handson |
Environment type | デフォルト(Create a new EC2 instance for environment) |
Instance type | デフォルト(t2.micro (1 GiB RAM + 1 vCPU)) |
Platform | デフォルト(Amazon Linux 2 (recommended)) |
Cost-saving setting | default |
Network settings | 選択 |
Network (VPC) | Main VPC |
Subnet | Main VPC-subnet-public1-ap-southeast-1a |
↓
入力が終わりましたら、“Next step”を押してください。
最後は確認画面ですので、問題がなければ“Create environment”をクリックしてください。※作成に数分かかります。
↓
起動画面が出てきましたので、疎通確認をしていきます。
※人によっては背景色が違うかもしれません。もし背景色を変えたければ、左上の“Cloud9”をクリックし、“preference”を押してください。THEMESと書かれた欄で、背景色を白や黒に変えられます。
7.疎通確認
Cloud9からピアリング接続用VPCにあるEC2インスタンスに対し疎通確認をし、ピアリング接続が正常に行われていることを確認していきます。
まずはCloud9のIPアドレスを確認し、メインVPC内にあることを確認しましょう。
ip addr
CPI-SAITOU:~/environment $ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 02:51:65:83:1f:d2 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.21/24 brd 10.0.0.255 scope global dynamic eth0
valid_lft 3581sec preferred_lft 3581sec
inet6 fe80::51:65ff:fe83:1fd2/64 scope link
valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:22:d1:ad:7b brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
10行目に「10.0.0.21/24」とありますので、メインVPC内にいることがわかりました。
次にピアリング接続用VPCにあるEC2インスタンスに対し、pingを実行し、帰ってくることを確認します。EC2インスタンスのプライベートIPアドレスはEC2インスタンス作成時に指定した「10.1.0.100」です。
CPI-SAITOU:~/environment $ ping 10.1.0.100
CPI-SAITOU:~/environment $ ping 10.1.0.100
PING 10.1.0.100 (10.1.0.100) 56(84) bytes of data.
64 bytes from 10.1.0.100: icmp_seq=1 ttl=255 time=0.789 ms
64 bytes from 10.1.0.100: icmp_seq=2 ttl=255 time=0.412 ms
64 bytes from 10.1.0.100: icmp_seq=3 ttl=255 time=0.453 ms
64 bytes from 10.1.0.100: icmp_seq=4 ttl=255 time=0.590 ms
64 bytes from 10.1.0.100: icmp_seq=5 ttl=255 time=0.398 ms
64 bytes from 10.1.0.100: icmp_seq=6 ttl=255 time=0.444 ms
64 bytes from 10.1.0.100: icmp_seq=7 ttl=255 time=0.481 ms
64 bytes from 10.1.0.100: icmp_seq=8 ttl=255 time=0.435 ms
64 bytes from 10.1.0.100: icmp_seq=9 ttl=255 time=0.486 ms
64 bytes from 10.1.0.100: icmp_seq=10 ttl=255 time=0.418 ms
64 bytes from 10.1.0.100: icmp_seq=11 ttl=255 time=0.442 ms
pingが返ってきたので、疎通確認ができました。念のためピアリング接続を外すと疎通が取れなくなるのかも確認します。
VPCの画面の左ペインから、“ピアリング接続”をクリックしてください。「peering-handson」を選択し、右上のアクションから“VPCピアリングの削除”をクリックしてください。
↓
↓
ステータスが削除済みになりましたら、Cloud9から疎通確認してみます。
“↑”キーを押すと、コマンド履歴が出てきます。「ping 10.1.0.100」を実行してください。
CPI-SAITOU:~/environment $ ping 10.1.0.100
CPI-SAITOU:~/environment $ ping 10.1.0.100
PING 10.1.0.100 (10.1.0.100) 56(84) bytes of data.
^C
--- 10.1.0.100 ping statistics ---
19 packets transmitted, 0 received, 100% packet loss, time 18422ms
pingが返ってこないことを確認しましたら、“CtrlC”で止めてください。これでVPCピアリング接続のおかげで、疎通が取れていたということが確認できました。
8.ピアリング接続の再作成
ブログ後編のハンズオンのために環境を戻したいので、ピアリング接続をもう一度作成します。ピアリング接続画面から、“ピアリング接続の作成”をクリックしてください。削除したものと名前が混同しないように、名前は変えてあります。
項目 | 設定値 |
---|---|
名前 | handson |
VPC ID (リクエスタ) | Main VPCを選択 |
アカウント | 自分のアカウント |
リージョン | このリージョン |
VPC ID (アクセプタ) | Peering VPC |
入力が完了しましたら、“ピアリング接続を作成”ボタンを押してください。
前回作ったときと同様に、ステータスが承諾の保留中になっているかと思います。
今回作成したピアリング接続「handson」を選択し、右上のアクションから“リクエストを承諾”をクリックしてください。
つぎにルートテーブルの編集にいきます。左のペインからルートテーブルをクリックしてください。「Main Public Route Table」を選択し、ルートタブを押し、“ルートを編集”ボタンをクリックしてください。
“ルートの追加”を押し、以下のパラメータを入力してください。
項目 | 設定値 |
---|---|
送信先 | 10.1.0.0/16 |
ターゲット | ピアリング接続⇒「handson」 |
ターゲットはピアリング接続を選択し、VPCピアリング接続「handson」を設定してください。最後にステータスが“バックホール”になっている送信先を削除し、
“変更を保存”ボタンをクリックしてください。
※先ほどVPCピアリング接続を削除してしまったので、そこ宛のルートのステータスがバックホールとなっています。
「Peering Public Route Table」も同様に、編集します。「Peering Public Route Table」を選択し、ルートタブを押し、“ルートを編集”ボタンをクリックしてください。“ルートの追加”を押し、以下のパラメータを入力してください。
項目 | 設定値 |
---|---|
送信先 | 10.0.0.0/16 |
ターゲット | ピアリング接続⇒「handson」 |
ターゲットはピアリング接続を選択し、VPCピアリング接続「handson」に設定してください。最後にステータスが“バックホール”になっている古い送信先を削除し、“変更を保存”ボタンをクリックしてください。
ピアリング接続の再作成は以上です。Cloud9を使って、もう一度疎通確認を行っていきます。
Cloud9画面で、“↑”キーを押し、pingを実行しましょう。
CPI-SAITOU:~/environment $ ping 10.1.0.100
CPI-SAITOU:~/environment $ ping 10.1.0.100
PING 10.1.0.100 (10.1.0.100) 56(84) bytes of data.
64 bytes from 10.1.0.100: icmp_seq=1 ttl=255 time=0.423 ms
64 bytes from 10.1.0.100: icmp_seq=2 ttl=255 time=0.371 ms
64 bytes from 10.1.0.100: icmp_seq=3 ttl=255 time=0.450 ms
64 bytes from 10.1.0.100: icmp_seq=4 ttl=255 time=0.463 ms
64 bytes from 10.1.0.100: icmp_seq=5 ttl=255 time=0.405 ms
64 bytes from 10.1.0.100: icmp_seq=6 ttl=255 time=0.610 ms
^C
--- 10.1.0.100 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5126ms
rtt min/avg/max/mdev = 0.371/0.453/0.610/0.079 ms
無事pingが返ってきましたので、環境をもとに戻すことができました。【AWSハンズオン】“AmazonVPC間およびAmazonVPCとオンプレミスのプライベートネットワーク接続”する方法:前編の「Amazon VPC間を接続する方法」は以上です。
まとめ:Amazon VPC間を接続する方法 ~ピアリング接続~
2つのVPCを接続する方法や疎通確認のやり方が理解できました。“AWS Hands-on for BeginnersNetwork編#2”のゴールである、
- AmazonVPC間を接続する方法を理解する
- VPCピアリング接続を使ってAmazonVPC間を接続する方法を、実際に手を動かして理解する
を達成できたと思います。
後編のハンズオンはAmazon VPCとオンプレミスを接続する方法です。前編に比べ、少し難易度が上がりますが、ぜひチャレンジしてみましょう。
参考サイトリンク:AWS ハンズオン資料
↓ほかの協栄情報メンバーもVPCに関する記事を公開しています。ぜひ参考にしてみてください。
■CloudFormationでVPC(NATGatewayを作成しない)を作成してみました。(AWS CloudShellよりCLI実行で作成)(小林 剛)
https://cloud5.jp/create-vpc-no-nat-gateway/
■CloudFormationを使ってVPC構築(INAMURA)
https://cloud5.jp/cfn_vpc/
■CLIによる「VPC」構築(umemoto)
https://cloud5.jp/cli-vpc/