AWS VPCへVPN接続
VPN Basic
VPN接続時に接続先が認識するIPについて
いつもの インターネット
「自分」 -> 「ルータ(IP:xxx.xxx.xxx.xxx)」 -> 「接続先」(お!IP:xxx.xxx.xxx.xxxというやつが接続してきたぞ)
VPNを使ったインターネット パターン1
「自分」 -> 「ルータ(IP:xxx.xxx.xxx.xxx)」 -> 「VPN接続先(IP:yyy.yyy.yyy.yyy)」 -> 「接続先」(お!IP:yyy.yyy.yyy.yyyというやつが接続してきたぞ)
VPNを使ったインターネット パターン2
「自分」 -> 「ルータ(IP:xxx.xxx.xxx.xxx)」 -> 「VPN接続先(IP:yyy.yyy.yyy.yyy)」 -> 「接続先」(お!IP:xxx.xxx.xxx.xxxというやつが接続してきたぞ)
パターン1,2の違いは?
パターン1
- VPNのIPを使うパターン
- 以下の設定を入れるとVPNのIPを使う
windowなら
- TCP/IP詳細設定 -> 「全般」->「リモート ネットワークでデフォルト ゲートウェイを使う」にチェック
macなら
- VPN設定を作った -> Advanced.. -> Send all traffic over VPN connectionのチェック
パターン2
上の設定でチェックを外す
VPN接続Option
- AWS ハードウェア VPN
- AWS Direct Connect
- AWS VPN CloudHub
- ソフトウェア VPN
VPCのセキュリティ
3つのfeature
- セキュリティグループ(Security Group)
- ネットワークアクセスコントロールリスト (ACLs - Network access control lists)
- フローフラグ(Flow logs)
instanceとsecurity group
- instanceを起動するときにsecurity groupに属することになる
- security groupを指定しないとdefault security groupが自動に割り当てられる。
- security group以外にACLsでsecond layer of defenseをすることができる
Comparison of Security Gruops and Network ACLs
Security Group | Network ACL |
---|---|
Operates at the instance level (first layer of defense) | Operates at the subnet level (second layer of defense) |
Supports allow rules only | Supports allow rules and deny rules |
接続イメージ
VPCにVPN Gatewayを追加して外部と接続可能にする
接続に使えうもの
まだ2つの違いがなにかはわからない。
VPNピアリング
- AWSコンテンツの集約
- Redshiftなどを複数のVPCからアクセスし1つに集約したいときに使用する。
- アカウント間の通信
- AWSアカウントが複数ある場合で通信を行いたい際に使用する。
- VPNを使用する場合
- AWSとVPNを使用する際には、同一IPで2つのVPNを作成できない制約があります。
- VPCピアリングと踏み台サーバを利用することでVPN経由でSSHなどを使用することができます。
- ※踏み台を挟まないとVPCを跨いで直接通信することはできない。
やってみよう
ここでは docket-ipsec-vpn-serverを利用してVPN serverを構築する
client setting
https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/clients.md
macOS
iOS
uninstall VPN
- https://github.com/hwdsl2/setup-ipsec-vpn/blob/master/docs/uninstall.md
- docketの場合は docketを作成すればOK?
用語
default VPC
- 削除しては行けない
- 削除するとセキュリティグループとか一緒に削除される
- 削除した場合には「AWS サポートに問い合わせ」する
NAT
- ネットワークアドレス変換
- IPアドレスレンジを他のIPアドレスレンジに変換するマプを持っている
- NAT では、複数のプライベート IP アドレスが 1 つのパブリック IP アドレスにマップされます
- NAT デバイスは Elastic IP アドレスを持ち、インターネットゲートウェイを介してインターネットに接続されます
VPNトンネル
- ハードウェアVPN接続では2つのVPNトンネルを使用します
- これはAWSの冗長性確保の思想によるもの
- 1つのトンネルに障害が発生し使用出来なくなった場合、仮想プライベートゲートウェイは自動的にもう1つのトンネルにルーティングする
setup-ipsec-vpnで設置してみる
Option 1: Have the script generate random VPN credentials for you (will be displayed when finished):
centosを利用
yum update
wget https://git.io/vpnsetup-centos -O vpnsetup.sh && sudo sh vpnsetup.sh
ubuntuを利用
sudo apt-get update && apt-get dist-upgrade
wget https://git.io/vpnsetup -O vpnsetup.sh && sudo sh vpnsetup.sh
UDP ports 500 & 4500, and TCP port 22を許可
References
- Amazon VPC とは?
- VPN 接続
- AWSにOpenVPNでVPNを構築してみた
- AWS環境にOpenVPNでVPNを構築
- Amazon VPC ハードウェアVPN接続を設定する
- SoftEtherによるVPN(IPSec)に、IPhone及び、OS X からの接続してみた
- Amazon EC2とOpenVPNでサーバ-多拠点クライアント間通信をセキュアに行う
- Amazon VPCとGoogle Compute EngineをVPN接続する
- Scripts to build your own IPsec VPN server, with IPsec/L2TP and Cisco IPsec on Ubuntu, Debian and CentOS