AWS環境とオンプレミス環境を繋ぐVPN、専用線まとめ


# オンプレミス環境とAWS環境を安全に接続する

選択肢
1. Client VPN
1. AWS Site-to-Site VPN
1.  AWS Direct Connect

## 1. Client VPN

クライアントPCからAWS環境へのアクセスに利用するVPN。クライアントソフトを導入する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/8e2db74d-d27b-da6b-d50e-9a78218b9e64.png)

OpenVPNクライアントを導入したクライアントPCからClientVPNのDNS名を利用してアクセス。
VPC内のリソースへはENIを通してアクセスされる。この時、ENIではアクセス元のIPアドレスがNATされるためアクセス先のリソースからはアクセス元は見えない。
なお、ClientVPNエンドポイントを介してインターネットにアクセスしたい場合にはルートテーブルに記載する必要がある。

## 2. AWS Site-to-Site VPN

組織の拠点とAWS環境を安全に接続するVPN。
オンプレミス環境にカスタマーゲートウェイを構築し、VPC側には仮想プライベートゲートウェイ(VGW)を用意するか、複数のVPCヘの接続があるのであればTransit Gatewayを用意する。

CGW - VGW → 1つのVPCとの接続まで。
CGW - TGW → 複数のVPCとの接続可能。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/e74a32d2-01b3-2012-4f82-1732b865cee9.png)

なお、AWS Site-to-Site VPN接続は内部的には2本に冗長化されており、AWS側の終端であるルータは2つのAZに設置されている。

## 3. AWS Direct Connect

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/f49a262a-0012-7a26-4e11-2da8f4f18d9d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/5b93c559-3240-f286-c34d-e9d2fa001982.png)

オンプレミス環境からAWS環境への専用線を引く。
専用線は回線をまるごと契約するものか、その中の論理的に切り出されたVIFを必要な帯域分だけ契約するかを選択できる。後者の場合は、パートナーアカウントが契約している`接続`リソースから一部のVIFを切り出してユーザアカウントが使用している状態となる。そのためこの場合には、コンソール上からは`接続`リソースは確認できない。sub-1Gでは仮想的に`接続`ごとユーザアカウントに作成し、その中にVIFを1本だけ作成する。そのためコンソールで確認できる。(違いはわかってない)

__参考__
- https://atbex.attokyo.co.jp/blog/detail/9/
- https://blog.serverworks.co.jp/tech/2018/12/11/concepts-of-direct-connect/
- https://docs.aws.amazon.com/ja_jp/directconnect/latest/UserGuide/Welcome.html
- https://dev.classmethod.jp/articles/re-introduction-2020-direct-connect/
- https://dev.classmethod.jp/articles/re-introduction-2020-direct-connect/
- https://atbex.attokyo.co.jp/blog/detail/85/
- https://dev.classmethod.jp/articles/20230428-aws-direct-connect-quotas-update/
- https://dev.classmethod.jp/articles/direct-connect-connection-pattern-vif/
- https://repost.aws/ja/knowledge-center/direct-connect-types
- https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/accelerated-vpn.html

# 途中出てきたネットワークの用語

各ゲートウェイにはAS番号(ASN)を指定し、BGPでルート情報を交換できるようにする必要がある。
以下その辺の前提知識の整理。

## AS (Autonomous System : 自律システム)

一定量のIPアドレス空間を制御するネットワーク。ASが互いに接続し合い巨大なインターネットが構成される。
各ASにはAPNIC(実際には地域ごとに代行する団体、日本ならJPNIC)によって管理されるAS番号(ASN)が振られ、インターネットサービスプロバイダ(ISP)や大規模な企業など1つの大規模な組織によって運営される。
ASNは、1～65534の間の固有の16ビット番号、または131072～4294967294の間の32ビット番号です。

__参考__
- https://www.cloudflare.com/ja-jp/learning/network-layer/what-is-an-autonomous-system/

## BGP (Border Gateway Protocol)

AS間の経路交換のためのルータ間のプロトコル。
「このIPアドレス空間へのパケットはこのASに転送する」といったルート情報を交換する。
AS内でルート情報交換するためのBGPはiBGP、AS間でルート情報交換するためのBGPはeBGPと呼ばれる。

隣接するルータ(ネイバーやピアと呼ばれる)からの情報を受け取った時に、
受け取ったルート情報に自身のASNが含まれる場合はループが発生しているので破棄する。
より経路数の少ないルート情報を受け取った場合はそちらを優先し、その情報が広報されなくなったらもう一方の遠回りの情報を使用する。

__参考__
- https://milestone-of-se.nesuke.com/nw-advanced/bgp/bgp-summary/

## IX (インターネットエクスチェンジ)

異なるネットワークのエッジに位置し、ISPなどのインターネットインフラを提供する企業が相互に接続する通信施設。
従来、異なるISPをまたがってトラフィックを転送する場合、個別に回線を引く必要があるが、善ISPが相互に回線を引き合うのは非常に非効率であり、無駄が多い。
そこで、1ヶ所の物理的な施設にて各ISPのルータを設置し互いに接続している。
IXがない場合、非常に近いネットワークであっても異なるISP間の接続のために非効率な経路を通るトロンボーン現象が発生しうる。

__参考__
- https://www.cloudflare.com/ja-jp/learning/cdn/glossary/internet-exchange-point-ixp/
- https://xtech.nikkei.com/atcl/nxt/column/18/01842/072000017/