이 튜토리얼에서는 사용자가 Virtual Private Cloud(VPC) 네트워크, Border Gateway Protocol (BGP), 가상 사설망 (VPN), IPsec 터널에 익숙하다고 가정합니다.
Google Cloud는 IPsec VPN 연결을 통해 온프레미스 또는 AWS와 같이 Google Cloud 외부에서 실행되는 환경에 VPC 네트워크를 연결할 수 있도록 가용성이 높은 HA VPN 서비스를 제공합니다. HA VPN은 Google 권장사항에 따라 구성되었을 때 99.99% 서비스 가용성 SLA를 제공합니다. 자세한 내용은 Cloud VPN 서비스수준계약(SLA)을 참조하세요.
아키텍처 개요
이 페이지에서 설명하는 아키텍처에는 다음 구성요소가 포함됩니다.
- Cloud Router: BGP를 사용하여 VPC 네트워크에 동적 라우팅을 제공하는 완전히 분산되고 관리되는 Google Cloud 서비스입니다.
- HA VPN 게이트웨이: Google Cloud에서 실행되는 Google에서 관리되는 VPN 게이트웨이입니다. 각 HA VPN 게이트웨이는 각각 고유한 내부 IP 주소를 갖는 인터페이스 2개(인터페이스 0 및 1)가 포함된 리전별 리소스입니다.
- VPN 터널: 암호화된 트래픽을 전달할 수 있도록 HA VPN 게이트웨이와 AWS의 피어 VPN 게이트웨이를 연결합니다.
- 피어 VPN 게이트웨이: AWS Virtual Private Gateway 또는 AWS 전송 게이트웨이에서 시작될 수 있는 2개의 AWS 사이트 간 VPN 엔드포인트입니다. 자세한 내용은 AWS 사이트 간 VPN이란 무엇인가요?를 참조하세요.
각 피어 VPN 게이트웨이 연결은 여기에서 Google Cloud HA VPN 인터페이스에 해당하는 단일 고객 게이트웨이를 가리키도록 사전 구성된 2개의 터널과 함께 제공됩니다. 이 구성에서 99.99% 서비스 가용성 SLA를 충족하기 위한 최소 터널 수는 4개입니다.
VPN 터널을 통한 라우팅 옵션 및 조합 대역폭은 AWS 측에서 사용되는 사이트 간 VPN 옵션에 따라 달라집니다.
전송 게이트웨이: BGP 환경설정 없이 AWS 전송 게이트웨이를 만드는 경우 ECMP가 활성 터널 간에 트래픽을 고르게 배포합니다.
여러 Google 가상 프라이빗 클라우드 네트워크에서 VPN 연결을 사용하려면 연결 VPC 네트워크를 사용하여 여러 VPC 네트워크로 허브 및 스포크 아키텍처를 확장하세요.
AWS 전송 게이트웨이에 대한 자세한 내용은 Amazon VPC 전송 게이트웨이란 무엇인가요?를 참조하세요.
Virtual Private Gateway: AWS Virtual Private Gateway를 사용하는 경우 게이트웨이에서 모든 연결 간에 터널 하나만 선택됩니다. 1개를 초과하는 터널을 사용하려면 등가 멀티 경로(ECMP)를 사용할 수 있도록 AWS 전송 게이트웨이를 대신 사용합니다.
AWS에서 VPN 경로 우선순위에 대한 자세한 내용은 사이트 간 VPN 라우팅 옵션을 참조하세요.
AWS 가상 비공개 게이트웨이에 대한 자세한 내용은 사이트 간 VPN 연결을 위한 터널 옵션을 참조하세요.
다음 다이어그램은 이러한 아키텍처를 보여줍니다.
목표
- Google Cloud에서 VPC 네트워크를 만듭니다.
- Google Cloud에서 HA VPN 게이트웨이 및 Cloud Router를 만듭니다.
- AWS에서 고객 게이트웨이를 만듭니다.
- AWS에서 동적 라우팅을 사용하여 VPN 연결을 만듭니다.
- Google Cloud에서 외부 VPN 게이트웨이 및 VPN 터널을 만듭니다.
- Google Cloud 및 AWS의 VPC 네트워크 간에 VPN 연결을 확인하고 테스트합니다.
Terraform 모듈 예시
gcp-to-aws-ha-vpn-terraform-module
모듈을 사용하여 Google Cloud와 AWS 사이에 HA VPN을 프로비저닝할 수 있습니다.
비용
이 가이드에서는 다음을 포함하여 Google Cloud의 청구 가능한 구성요소가 사용됩니다.
Google Cloud 구성요소에 대한 비용을 예상하려면 Google Cloud 가격 계산기를 사용하세요.
이 가이드에서는 다음을 포함하여 Amazon Web Services의 청구 가능한 구성요소가 사용됩니다.
- AWS 전송 게이트웨이
- AWS 사이트 간 VPN
AWS 구성요소에 대한 비용을 예상하려면 AWS 가격 계산기를 사용하세요.
시작하기 전에
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
-
In the Google Cloud console, activate Cloud Shell.
-
네트워킹 구성요소 구성에 필요한 관리 역할이 있는지 확인합니다.
- 네트워크 관리자:
compute.networkAdmin
- 보안 관리자:
compute.securityAdmin
- Compute 관리자:
compute.admin
이러한 역할의 목적에 대한 자세한 내용은 네트워킹 관련 직무를 위한 IAM 역할을 참조하세요.
- 네트워크 관리자:
Google Cloud에서 HA VPN 게이트웨이 및 Cloud Router 만들기
이 섹션에서는 Google Cloud에서 VPC 네트워크, HA VPN 게이트웨이, Cloud Router를 만듭니다.
Cloud Shell에서 사용자가 만들거나 선택한 Google Cloud 프로젝트에서 작업 중인지 확인합니다.
gcloud config set project YOUR_PROJECT_ID export PROJECT_ID=`gcloud config list --format="value(core.project)"`
YOUR_PROJECT_ID
를 Google Cloud 프로젝트 ID로 바꿉니다.단일 서브넷으로 커스텀 VPC 네트워크를 만들려면
gcloud compute networks create
명령어를 사용합니다.gcloud compute networks create NETWORK \ --subnet-mode SUBNET_MODE \ --bgp-routing-mode BGP_ROUTING_MODE
다음을 바꿉니다.
NETWORK
: 네트워크의 이름입니다.SUBNET_MODE
: 서브넷 모드BGP_ROUTING_MODE
: BGP 라우팅 모드
예를 들어 다음 명령어는 단일 서브넷으로
gc-vpc
이라는 커스텀 VPC 네트워크를 만듭니다.gcloud compute networks create gc-vpc \ --subnet-mode custom \ --bgp-routing-mode global
테스트 VM을 호스팅할 서브넷을 하나 만들려면
gcloud compute networks subnets create
명령어를 사용합니다.gcloud compute networks subnets create SUBNET_NAME \ --network NETWORK \ --region SUBNET_REGION \ --range IP_ADDRESS_RANGE
다음을 바꿉니다.
SUBNET_NAME
: 서브넷 이름SUBNET_REGION
: 서브넷을 만들 리전IP_ADDRESS_RANGE
: 서브넷의 IP 주소 범위예를 들어 다음 명령어는 VPC 네트워크
gc-vpc
에subnet-east4
이라는 서브넷을 만듭니다.
gcloud compute networks subnets create subnet-east4 \ --network gc-vpc \ --region us-east4 \ --range 10.1.1.0/24
HA VPN 게이트웨이를 만들려면
gcloud compute vpn-gateways create
명령어를 사용합니다.gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \ --network NETWORK \ --region REGION
HA_VPN_GATEWAY_NAME
을 HA VPN 게이트웨이의 이름으로 바꿉니다.Cloud Router를 만들려면
gcloud compute routers create
명령어를 사용합니다.gcloud compute routers create ROUTER_NAME \ --region REGION \ --network NETWORK \ --asn GOOGLE_ASN \ --advertisement-mode custom \ --set-advertisement-groups all_subnets
다음을 바꿉니다.
ROUTER_NAME
: Cloud Router의 이름GOOGLE_ASN
: 만들려는 Cloud Router의 비공개 ASN(자율 시스템 번호). 동일한 리전 및 네트워크에서 피어 ASN으로 아직 사용하고 있지 않은64512-65534
또는4200000000-4294967294
범위의 비공개 ASN일 수 있습니다.
예를 들어 다음 명령어는
cloud-router
라는 Cloud Router를 만듭니다.gcloud compute routers create cloud-router \ --region us-east4 \ --network gc-vpc \ --asn 65534 \ --advertisement-mode custom \ --set-advertisement-groups all_subnets
인터페이스가 2개인 VPN 게이트웨이를 만들려면 외부 IP 주소를 기록해 둡니다. AWS 측에서 환경을 설정할 때 이러한 주소가 필요합니다.
AWS에서 게이트웨이 및 VPN 연결 만들기
이 섹션에서는 동적 라우팅을 사용하여 고객 게이트웨이, 대상 게이트웨이, VPN 연결을 만듭니다.
AWS 명령줄 인터페이스를 사용하여 AWS 명령어를 실행합니다.
다음 AWS 명령어를 사용하여 2개의 고객 게이트웨이를 만들려면
create-customer-gateway
AWS CLI 명령어를 사용합니다.aws ec2 create-customer-gateway --type ipsec.1 --public-ip INTERFACE_0_IP_ADDRESS --bgp-asn GOOGLE_ASN aws ec2 create-customer-gateway --type ipsec.1 --public-ip INTERFACE_1_IP_ADDRESS --bgp-asn GOOGLE_ASN
INTERFACE_0_IP_ADDRESS
및INTERFACE_1_IP_ADDRESS
를 이전 섹션의 마지막 단계에 나온 외부 IP 주소로 바꿉니다.대상 게이트웨이를 만들고 이를 Amazon VPC에 연결하려면 다음 단계를 따르세요.
대상 게이트웨이는 가상 비공개 게이트웨이 또는 전송 게이트웨이일 수 있습니다. 자세한 내용은 대상 게이트웨이 만들기를 참조하세요.
가상 비공개 게이트웨이
create-vpn-gateway
AWS CLI 명령어를 사용하여 특정 AWS 측 ASN을 사용하여 가상 비공개 게이트웨이를 만듭니다.aws ec2 create-vpn-gateway --type ipsec.1 --amazon-side-asn AWS_SIDE_ASN
AWS_SIDE_ASN
을 AWS 측의 ASN으로 바꿉니다.이 명령어는 다음 예시와 비슷하게 표시됩니다.
aws ec2 create-vpn-gateway --type ipsec.1 --amazon-side-asn 65001
attach-vpn-gateway
AWS CLI 명령어를 사용하여 VPC 네트워크에 가상 비공개 게이트웨이를 연결합니다.aws ec2 attach-vpn-gateway --vpn-gateway-id VPN_GATEWAY_ID --vpc-id VPC_ID
전송 게이트웨이
create-transit-gateway
AWS CLI 명령어를 사용하여 전달 게이트웨이를 만듭니다.aws ec2 create-transit-gateway --description TRANSIT_GATEWAY_DESCRIPTION \ --options=AmazonSideAsn=65001,AutoAcceptSharedAttachments=enable,DefaultRouteTableAssociation=enable,DefaultRouteTablePropagation=enable,VpnEcmpSupport=enable,DnsSupport=enable
TRANSIT_GATEWAY_DESCRIPTION
을 전송 게이트웨이에 대한 설명으로 바꿉니다.create-transit-gateway-vpc-attachment
AWS CLI 명령어를 사용하여 VPC 네트워크를 전송 게이트웨이에 연결합니다.aws ec2 create-transit-gateway-vpc-attachment \ --transit-gateway-id TRANSIT_GATEWAY_ID \ --vpc-id VPC_ID \ --subnet-ids "SUBNET_ID"
다음을 바꿉니다.
TRANSIT_GATEWAY_ID
: 전송 게이트웨이의 ID입니다.VPC_ID
: VPC의 ID입니다.SUBNET_ID
: 하나 이상의 서브넷 ID입니다.
동적 라우팅을 사용하여 VPN 연결을 만들려면 다음 단계를 따르세요.
동적 라우팅을 사용하여 VPN 연결을 만드는 방법은 대상 게이트웨이가 Virtual Private Gateway 또는 전송 게이트웨이인지에 따라 달라집니다. 자세한 내용은 VPN 연결 만들기를 참조하세요.
가상 비공개 게이트웨이
Virtual Private Gateway와 고객 게이트웨이 사이의 동적 라우팅을 사용하여 VPN 연결을 만들고 VPN 연결에 태그를 적용합니다.
aws ec2 create-vpn-connection \ --type ipsec.1 \ --customer-gateway-id CUSTOMER_GATEWAY_1 \ --vpn-gateway-id VPN_GATEWAY_ID \ --options TunnelOptions='[{TunnelInsideCidr=AWS_T1_IP,PreSharedKey=SHARED_SECRET_1},{TunnelInsideCidr=AWS_T2_IP,PreSharedKey=SHARED_SECRET_2}]' aws ec2 create-vpn-connection \ --type ipsec.1 \ --customer-gateway-id CUSTOMER_GATEWAY_2 \ --vpn-gateway-id VPN_GATEWAY_ID \ --options TunnelOptions='[{TunnelInsideCidr=AWS_T3_IP,PreSharedKey=SHARED_SECRET_3},{TunnelInsideCidr=AWS_T4_IP,PreSharedKey=SHARED_SECRET_4}]'
다음을 바꿉니다.
CUSTOMER_GATEWAY_1
: Google Cloud VPN 게이트웨이, 인터페이스 0CUSTOMER_GATEWAY_2
: Google Cloud VPN 게이트웨이, 인터페이스 1AWS_T1_IP
: 연결 1, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T2_IP
: 연결 1, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T3_IP
: 연결 2, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T4_IP
: 연결 2, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소SHARED_SECRET_1
: 연결 1, 터널 1에 대한 사전 공유 키SHARED_SECRET_2
: 연결 1, 터널 2에 대한 사전 공유 키SHARED_SECRET_3
: 연결 2, 터널 1에 대한 사전 공유 키SHARED_SECRET_4
: 연결 2, 터널 2에 대한 사전 공유 키
전송 게이트웨이
전송 게이트웨이와 고객 게이트웨이 사이에 동적 라우팅을 사용하여 VPN 연결을 만듭니다.
aws ec2 create-vpn-connection \ --type ipsec.1 \ --customer-gateway-id CUSTOMER_GATEWAY_1 \ --transit-gateway-id TRANSIT_GATEWAY_ID \ --options TunnelOptions='[{TunnelInsideCidr=AWS_T1_IP,PreSharedKey=SHARED_SECRET_1},{TunnelInsideCidr=AWS_T2_IP,PreSharedKey=SHARED_SECRET_2}]' aws ec2 create-vpn-connection \ --type ipsec.1 \ --customer-gateway-id CUSTOMER_GATEWAY_2 \ --transit-gateway-id TRANSIT_GATEWAY_ID \ --options TunnelOptions='[{TunnelInsideCidr=AWS_T3_IP,PreSharedKey=SHARED_SECRET_3},{TunnelInsideCidr=AWS_T4_IP,PreSharedKey=SHARED_SECRET_4}]'
다음을 바꿉니다.
CUSTOMER_GATEWAY_1
: Google Cloud VPN 게이트웨이, 인터페이스 0CUSTOMER_GATEWAY_2
: Google Cloud VPN 게이트웨이, 인터페이스 1TRANSIT_GATEWAY_ID
: VPN 연결과 연결된 전달 게이트웨이의 ID입니다.AWS_T1_IP
: 연결 1, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T2_IP
: 연결 1, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T3_IP
: 연결 2, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T4_IP
: 연결 2, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소SHARED_SECRET_1
: 연결 1, 터널 1에 대한 사전 공유 키SHARED_SECRET_2
: 연결 1, 터널 2에 대한 사전 공유 키SHARED_SECRET_3
: 연결 2, 터널 1에 대한 사전 공유 키SHARED_SECRET_4
: 연결 2, 터널 2에 대한 사전 공유 키CUSTOMER_GATEWAY_1
: Google Cloud VPN 게이트웨이, 인터페이스 0CUSTOMER_GATEWAY_2
: Google Cloud VPN 게이트웨이, 인터페이스 1TRANSIT_GATEWAY_ID
: VPN 연결과 연결된 전달 게이트웨이의 ID입니다.AWS_T1_IP
: 연결 1, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T2_IP
: 연결 1, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T3_IP
: 연결 2, 터널 1에 대한 Virtual Private Gateway의 내부 IP 주소AWS_T4_IP
: 연결 2, 터널 2에 대한 Virtual Private Gateway의 내부 IP 주소SHARED_SECRET_1
: 연결 1, 터널 1에 대한 사전 공유 키SHARED_SECRET_2
: 연결 1, 터널 2에 대한 사전 공유 키SHARED_SECRET_3
: 연결 2, 터널 1에 대한 사전 공유 키SHARED_SECRET_4
: 연결 2, 터널 2에 대한 사전 공유 키
AWS는 일부 CIDR 범위를 예약하므로 이러한 범위의 값을 내부 IP 주소(
AWS_T1_IP
,AWS_T2_IP
,AWS_T3_IP
,AWS_T4_IP
)로 사용할 수 없습니다. AWS가 예약하는 CIDR 블록에 대한 자세한 내용은 사이트 간 VPN 연결의 터널 옵션을 참조하세요.이 명령어를 사용하여 Google Cloud에 대해 4개의 터널을 만듭니다.
2개의 VPN 연결에 대해 구성 파일을 다운로드합니다.
다음 단계에서는 다운로드한 구성 파일의 값을 사용하여 Google Cloud 측에서 리소스를 만들고 구성합니다.
Google Cloud에서 VPN 터널 및 Cloud Router 인터페이스 만들기
이 섹션에서는 이전 섹션에서 만든 AWS VPN 연결의 정보를 사용하여 Google Cloud에서 외부 VPN 게이트웨이, VPN 터널, Cloud Router 인터페이스를 만듭니다.
AWS에 대한 Cloud VPN 터널을 구성할 때는 IKEv2 프로토콜을 사용하고 터널 설정을 성공적으로 완료할 수 있도록 IKE 암호화 세트를 하나만 선택해야 합니다. 예를 들어 1단계 암호화 알고리즘 1개, 2단계 암호화 알고리즘 1개, 무결성 알고리즘 1개, Diffie-Hellman (DH) 그룹 1개를 선택합니다. 기본 AWS 변환 세트는 큰 보안 연결(SA) 페이로드를 생성하여 IKE 패킷의 IP 조각화를 일으킬 수 있습니다. Cloud VPN은 단편화된 IKE 패킷을 지원하지 않습니다.
Cloud Shell에서 AWS 외부 IP 주소에 대해 4개의 인터페이스가 있는 외부 VPN 게이트웨이를 만듭니다.
외부 VPN 게이트웨이를 만들기 전에 AWS 외부 IP 주소가 다운로드한 구성 파일의 값과 일치하는지 확인합니다. 외부 VPN 게이트웨이를 만든 후에는 이러한 IP 주소를 수정할 수 없습니다. 주소가 일치하지 않으면 HA VPN 터널 연결을 설정할 수 없습니다.
gcloud compute external-vpn-gateways create PEER_GATEWAY_NAME --interfaces \ 0=AWS_GW_IP_1,1=AWS_GW_IP_2,2=AWS_GW_IP_3,3=AWS_GW_IP_4
다음을 바꿉니다.
AWS_GW_IP_1
: 연결 1, 터널 1에 대한 Virtual Private Gateway의 외부 IP 주소AWS_GW_IP_2
: 연결 1, 터널 2에 대한 Virtual Private Gateway의 외부 IP 주소AWS_GW_IP_3
: 연결 2, 터널 1에 대한 Virtual Private Gateway의 외부 IP 주소AWS_GW_IP_4
: 연결 2, 터널 2에 대한 Virtual Private Gateway의 외부 IP 주소
VPN 터널 4개를 만듭니다.
터널 1:
gcloud compute vpn-tunnels create tunnel-1 \ --peer-external-gateway PEER_GATEWAY_NAME \ --peer-external-gateway-interface 0 \ --region REGION \ --ike-version 2 \ --shared-secret SHARED_SECRET_1 \ --router ROUTER_NAME \ --vpn-gateway HA_VPN_GATEWAY_NAME \ --interface 0
터널 2:
gcloud compute vpn-tunnels create tunnel-2 \ --peer-external-gateway PEER_GATEWAY_NAME \ --peer-external-gateway-interface 1 \ --region REGION \ --ike-version 2 \ --shared-secret SHARED_SECRET_2 \ --router ROUTER_NAME \ --vpn-gateway HA_VPN_GATEWAY_NAME \ --interface 0
터널 3:
gcloud compute vpn-tunnels create tunnel-3 \ --peer-external-gateway PEER_GATEWAY_NAME \ --peer-external-gateway-interface 2 \ --region REGION \ --ike-version 2 \ --shared-secret SHARED_SECRET_3 \ --router ROUTER_NAME \ --vpn-gateway HA_VPN_GATEWAY_NAME \ --interface 1
터널 4:
gcloud compute vpn-tunnels create tunnel-4 \ --peer-external-gateway PEER_GATEWAY_NAME \ --peer-external-gateway-interface 3 \ --region REGION \ --ike-version 2 \ --shared-secret SHARED_SECRET_4 \ --router ROUTER_NAME \ --vpn-gateway HA_VPN_GATEWAY_NAME \ --interface 1
다음을 바꿉니다.
PEER_GATEWAY_NAME
: 1단계에서 만든 외부 피어 게이트웨이의 이름입니다.REGION
: 터널을 만드는 Google Cloud 리전입니다.SHARED_SECRET
: 사전 공유 키 (PSK)로, 피어 게이트웨이에서 만든 파트너 터널의 사전 공유 키와 일치해야 합니다. 강력한 사전 공유 키를 생성하려면 강력한 사전 공유 키 생성을 참고하세요.ROUTER_NAME
: Google Cloud에서 HA VPN 게이트웨이 및 Cloud Router 만들기 섹션에서 만든 Cloud Router 게이트웨이의 이름입니다.HA_VPN_GATEWAY_NAME
: Google Cloud에서 HA VPN 게이트웨이 및 Cloud Router 만들기 섹션에서 만든 HA VPN 게이트웨이의 이름입니다.
4개의 Cloud Router 인터페이스를 만듭니다.
다음 명령어에서 각
GOOGLE_BGP_IP_TUNNEL
자리표시자를 Google Cloud 측의 터널 내부 IP 주소로 바꿉니다. AWS VPN 구성 파일의 값을 각 터널의 고객 게이트웨이 주소로 찾을 수 있습니다. 이러한 각 주소는169.254.0.0/16
네트워크 범위 내의/30
CIDR 범위에 있어야 합니다.Cloud Router 인터페이스 1:
gcloud compute routers add-interface ROUTER_NAME \ --interface-name int-1 \ --vpn-tunnel tunnel-1 \ --ip-address GOOGLE_BGP_IP_TUNNEL_1 \ --mask-length 30 \ --region REGION
Cloud Router 인터페이스 2:
gcloud compute routers add-interface ROUTER_NAME \ --interface-name int-2 \ --vpn-tunnel tunnel-2 \ --ip-address GOOGLE_BGP_IP_TUNNEL_2 \ --mask-length 30 \ --region REGION
Cloud Router 인터페이스 3:
gcloud compute routers add-interface ROUTER_NAME \ --interface-name int-3 \ --vpn-tunnel tunnel-3 \ --ip-address GOOGLE_BGP_IP_TUNNEL_3 \ --mask-length 30 \ --region REGION
Cloud Router 인터페이스 4:
gcloud compute routers add-interface ROUTER_NAME \ --interface-name int-4 \ --vpn-tunnel tunnel-4 \ --ip-address GOOGLE_BGP_IP_TUNNEL_4 \ --mask-length 30 \ --region REGION
BGP 피어를 추가합니다.
다음 명령어에서
PEER_ASN
을 BGP 세션의 AWS 측에 대한 ASN으로 바꿉니다.AWS 연결 1, 터널 1:
gcloud compute routers add-bgp-peer ROUTER_NAME \ --peer-name aws-conn1-tunn1 \ --peer-asn PEER_ASN \ --interface int-1 \ --peer-ip-address AWS_T1_IP \ --region REGION
AWS 연결 1, 터널 2:
gcloud compute routers add-bgp-peer ROUTER_NAME \ --peer-name aws-conn1-tunn2 \ --peer-asn PEER_ASN \ --interface int-2 \ --peer-ip-address AWS_T2_IP \ --region REGION
AWS 연결 2, 터널 1:
gcloud compute routers add-bgp-peer ROUTER_NAME \ --peer-name aws-conn2-tunn1 \ --peer-asn PEER_ASN \ --interface int-3 \ --peer-ip-address AWS_T3_IP \ --region REGION
AWS 연결 2, 터널 2:
gcloud compute routers add-bgp-peer ROUTER_NAME \ --peer-name aws-conn2-tunn2 \ --peer-asn PEER_ASN \ --interface int-4 \ --peer-ip-address AWS_T4_IP \ --region REGION
구성 확인
Cloud Shell에서 Cloud Router 상태를 확인합니다.
gcloud compute routers get-status ROUTER_NAME \ --region REGION \ --format='flattened(result.bgpPeerStatus[].name, result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'
출력은 다음과 비슷합니다.
result.bgpPeerStatus[].peerIpAddress)' result.bgpPeerStatus[0].ipAddress: 169.254.171.18 result.bgpPeerStatus[0].name: aws-conn1-tunn1 result.bgpPeerStatus[0].peerIpAddress: 169.254.171.17 result.bgpPeerStatus[1].ipAddress: 169.254.156.154 result.bgpPeerStatus[1].name: aws-conn1-tunn2 result.bgpPeerStatus[1].peerIpAddress: 169.254.156.153 result.bgpPeerStatus[2].ipAddress: 169.254.123.38 result.bgpPeerStatus[2].name: aws-conn2-tunn1 result.bgpPeerStatus[2].peerIpAddress: 169.254.123.37 result.bgpPeerStatus[3].ipAddress: 169.254.48.186 result.bgpPeerStatus[3].name: aws-conn2-tunn2 result.bgpPeerStatus[3].peerIpAddress: 169.254.48.185
모든 터널을 나열합니다.
gcloud compute vpn-tunnels list
출력은 다음과 비슷합니다.
NAME REGION GATEWAY PEER_ADDRESS tunnel-1 us-east4 ha-vpn-gw 34.205.x.x tunnel-2 us-east4 ha-vpn-gw 52.203.x.x tunnel-3 us-east4 ha-vpn-gw 3.208.x.x tunnel-4 us-east4 ha-vpn-gw 52.204.x.x
터널 상태를 확인합니다.
gcloud compute vpn-tunnels describe tunnel-1 \ --region REGION \ --format='flattened(status,detailedStatus)'
출력은 다음과 비슷합니다.
detailed_status: Tunnel is up and running. status: ESTABLISHED
Cloud Router가 학습한 동적 경로를 나열합니다.
gcloud compute routers get-status ROUTER_NAME \ --region REGION \ --format="flattened(result.bestRoutes)"
출력은 다음과 비슷합니다.
result.bestRoutes[0].creationTimestamp: 2021-01-19T20:42:07.366-08:00 result.bestRoutes[0].destRange: 10.2.2.0/24 result.bestRoutes[0].kind: compute#route result.bestRoutes[0].nextHopIp: 169.254.171.17 result.bestRoutes[0].priority: 100 result.bestRoutes[1].creationTimestamp: 2021-01-19T20:42:07.366-08:00 result.bestRoutes[1].destRange: 10.2.2.0/24 result.bestRoutes[1].kind: compute#route result.bestRoutes[1].nextHopIp: 169.254.156.153 result.bestRoutes[1].priority: 100 result.bestRoutes[2].creationTimestamp: 2021-01-19T20:56:26.588-08:00 result.bestRoutes[2].destRange: 10.2.2.0/24 result.bestRoutes[2].kind: compute#route result.bestRoutes[2].nextHopIp: 169.254.123.37 result.bestRoutes[2].priority: 100 result.bestRoutes[3].creationTimestamp: 2021-01-19T20:56:26.588-08:00 result.bestRoutes[3].destRange: 10.2.2.0/24 result.bestRoutes[3].kind: compute#route result.bestRoutes[3].nextHopIp: 169.254.48.185 result.bestRoutes[3].priority: 100
VPN 연결 테스트
핑 요청을 테스트하기 위해 터널의 양 측면에서 테스트 VM을 만듭니다.
ICMP 트래픽을 허용하는 VPC 방화벽 규칙이 설정되었는지 확인합니다.
Compute Engine VM을 만드는 방법은 Compute Engine 인스턴스 만들기 및 시작을 참고하세요.
AWS에서 EC2 인스턴스를 만드는 방법에 대한 자세한 내용은 Amazon EC2 인스턴스 시작을 참고하세요.
ping
명령어를 사용하여 연결을 테스트합니다.ping
테스트에 실패하면 Google Cloud 및 AWS Site-to-Site VPN 로그의 로그를 확인합니다. 로그의 오류 메시지는 문제를 파악하는 데 도움이 될 수 있습니다. VPN 연결 문제를 해결하는 방법을 알아보려면 다음 리소스를 참고하세요.
iperf를 사용하여 테스트 머신 간에 대역폭을 측정합니다.
서버 측:
iperf3 -s
클라이언트 측:
iperf3 -c SERVER_IP_ADDRESS -P NUMBER_OF_PARALLEL_SESSIONS
삭제
이 튜토리얼을 진행하는 동안 만든 Google Cloud 및 AWS 리소스를 삭제합니다.
Google Cloud 프로젝트 삭제
이 가이드에서 사용한 리소스의 비용이 Google Cloud 계정에 청구되지 않도록 하려면 프로젝트를 삭제하면 됩니다.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
AWS 리소스 삭제
다음 단계
- Google Cloud VPN 자세히 알아보기
- VPC 설계에 관한 권장사항 및 참조 아키텍처 자세히 알아보기