on
YAMAHA RTX830 で AWS と VPN
概要
YAMAHA RTX830 を買ったので、AWS と VPN 接続をしたのでその備忘録です。
基本的には次の公式とクラメソのを見てもらえれば解決すると思います。
CFn テンプレート
VPN 接続するに当たって AWS 側の必要なリソースは次が挙げられます。
- プライベートゲートウェイ
- AWS 側のマネージドな VPN エンドポイント(冗長化のためトンネルが 2 つ作成される)
- カスタマーゲートウェイ
- AmazonVPCReadOnlyAccess ポリシーがアタッチされた IAM ユーザ
本テンプレートでは、VPC、プラベートサブネット、ルートテーブルまで作成しています。そのため、YAMAHA RTX830 と AWS 側で VPN 接続が完了した場合には、EC2 インスタンスを立てるだけで接続可能となっています。(ルートテーブルなどベット作成不要!)
パラメータの CustomerGatewayIpAddress
に RTX830 側のグローバル IP アドレスを指定ください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
| AWSTemplateFormatVersion: "2010-09-09"
Description: YAMAHA RTX830
Parameters:
CustomerGatewayIpAddress:
Type: String
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
VpcCidr:
AllowedPattern: ^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])
Default: "10.0"
Description: VPC CIDR (*.*.0.0/16)
Type: String
Resources:
### VPC AND SUBNETS RESOURCES
Vpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Sub ${VpcCidr}.0.0/16
Tags:
- Key: Name
Value: !Ref AWS::StackName
PrivateSubnet01:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: !Sub ${VpcCidr}.1.0/24
AvailabilityZone: !Select
- 0
- !GetAZs
Ref: AWS::Region
VpcId: !Ref Vpc
Tags:
- Key: Name
Value: !Sub ${AWS::StackName}-private-subnet-1
PrivateSubnet02:
Type: AWS::EC2::Subnet
Properties:
CidrBlock: !Sub ${VpcCidr}.2.0/24
AvailabilityZone: !Select
- 1
- !GetAZs
Ref: AWS::Region
VpcId: !Ref Vpc
Tags:
- Key: Name
Value: !Sub ${AWS::StackName}-private-subnet-2
RouteTableForPrivateSubnets:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref Vpc
Tags:
- Key: Name
Value: !Sub ${AWS::StackName}-route-table
PrivateSubnetRouteTableAssociation01:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref RouteTableForPrivateSubnets
SubnetId: !Ref PrivateSubnet01
PrivateSubnetRouteTableAssociation02:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref RouteTableForPrivateSubnets
SubnetId: !Ref PrivateSubnet02
### VPN RESOURCES
VpnGateway:
Type: AWS::EC2::VPNGateway
Properties:
Type: ipsec.1
Tags:
- Key: Name
Value: !Ref AWS::StackName
VpnGatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId: !Ref Vpc
VpnGatewayId: !Ref VpnGateway
CustomerGateway:
Type: AWS::EC2::CustomerGateway
Properties:
Type: ipsec.1
BgpAsn: 65000
IpAddress: !Ref CustomerGatewayIpAddress
Tags:
- Key: Name
Value: !Ref AWS::StackName
VpnConnection:
Type: AWS::EC2::VPNConnection
Properties:
Type: ipsec.1
CustomerGatewayId: !Ref CustomerGateway
VpnGatewayId: !Ref VpnGateway
Tags:
- Key: Name
Value: !Ref AWS::StackName
VpnGatewayRoutePropagation:
DependsOn: VpnConnection
Type: AWS::EC2::VPNGatewayRoutePropagation
Properties:
RouteTableIds:
- !Ref RouteTableForPrivateSubnets
VpnGatewayId: !Ref VpnGateway
### VPN IAM USER AND SECRETKEY RESOURCES
VpnUser:
Type: AWS::IAM::User
Properties:
ManagedPolicyArns:
- arn:aws:iam::aws:policy/AmazonVPCReadOnlyAccess
AccessKey:
Type: AWS::IAM::AccessKey
Properties:
UserName: !Ref VpnUser
Outputs:
AccessKeyID:
Description: IAM User Access Key
Value: !Ref AccessKey
SecretAccessKey:
Description: IAM User Access Secret Key
Value: !GetAtt AccessKey.SecretAccessKey
VpnConnectonID:
Description: VPN Connection ID
Value: !Ref VpnConnection
VpcID:
Description: VPC ID, Private Gawateay exists
Value: !Ref Vpc
Export:
Name: !Sub ${AWS::StackName}-vpcid
|
デプロイ
グルーバル IP の確認
1
2
| curl inet-ip.info
xxx.xxx.xxx.xxx
|
デプロイ
1
| aws cloudformation deploy --stack-name rtx830-vpn --template template.yaml --capabilities CAPABILITY_IAM --parameter-overrides CustomerGatewayIpAddress=xxx.xxx.xxx.xxx
|
テスト
作成した VPC のプライベートサブネットに EC2 インスタンスを立てる(パブリック IP アドレスなし)。セキュリティグループに自宅のローカル LAN からのアクセスのみ許可します。
きっと EC2 インスタンスのプライベート IP アドレスに対して ssh できるはずです。