AWS와 다른 환경을 VPN으로 연결할 때의 「VPN 접속」의 작성을 쉘 스크립트로 해 보았다.

10893 단어 VPNvpcAWS

소개



AWS와 다른 환경을 VPN 연결하는 경우 AWS 측에서 'VPN 연결'을 생성해야 합니다.
관리 화면에서 딱딱하게 조작하는 것은 번거롭기 때문에 스크립트를 만들었습니다.

흐름



스크립트의 대략적인 흐름입니다.
  • 가상 프라이빗 게이트웨이 만들기
  • 가상 프라이빗 게이트웨이를 VPC로 attach
  • 고객 게이트웨이 만들기
  • VPN 연결 만들기

  • 스크립트



    아래 스크립트입니다.

    create-vpn.sh
    #!/bin/bash
    
    # == Check number of arguments. ==================================== #
    if [ $# -ne 2 ]; then
      echo "ERROR: Please check the number of arguments."
      echo "   -usage-----------------------------"
      echo "     $0 [VPC ID] [Counter VPN-IP] "
      echo "   -----------------------------------"
      echo ""
      exit 1
    fi
    
    
    # == Set ENV. ====================================================== #
    VPC_ID="$1"
    PUBLIC_IP="$2"
    TAG_VALUE="VPNConnectTo${PUBLIC_IP}"
    
    
    # == Create VPN ==================================================== #
    # Create VPN Gateway
    echo "==[VGW]======================================="
    echo "Create the VGW."
    VGW_ID=`aws ec2 create-vpn-gateway --type ipsec.1 | jq -r .VpnGateway.VpnGatewayId`
    
    echo "VGW_ID:${VGW_ID}"
    if [ -n "${VGW_ID}" -a "${VGW_ID}" != "null" ]; then
      echo "SUCCESS: Create the VirtualGateWay."
    else
      echo "ERROR: Can't create the VirtualGateWay."
      exit 1
    fi
    echo ""
    
    echo "Tagged to the VGW."
    aws ec2 create-tags --resources ${VGW_ID} --tags Key=Name,Value=${TAG_VALUE}
    
    echo "Attach the VGW to the VPC."
    VGW_STAT=`aws ec2 attach-vpn-gateway --vpn-gateway-id ${VGW_ID} --vpc-id ${VPC_ID} | jq -r .VpcAttachment.State`
    
    if [ "${VGW_STAT}" = "attaching" ]; then
      echo "SUCCESS: Attaching the VGW to the VPC."
    else
      echo "ERROR: Can't attach the VGW to the VPC."
      exit 1
    fi
    echo ""
    echo ""
    
    
    # Create CustomerGateway
    echo "==[CGW]======================================="
    echo "Create the VGW."
    CGW_ID=`aws ec2 create-customer-gateway --type ipsec.1 --public-ip ${PUBLIC_IP} --bgp-asn 65000 | jq -r .CustomerGateway.CustomerGatewayId`
    
    echo "CGW_ID:${CGW_ID}"
    if [ -n "${CGW_ID}" -a "${CGW_ID}" != "null" ]; then
      echo "SUCCESS: Create the CustomerGateWay."
    else
      echo "ERROR: Can't create the CustomerGateWay."
      exit 1
    fi
    echo ""
    
    echo "Tagged to the CGW."
    aws ec2 create-tags --resources ${CGW_ID} --tags Key=Name,Value=${TAG_VALUE}
    echo ""
    echo ""
    
    
    # Create VPN Connection
    echo "==[VPN]======================================="
    echo "Create the VPN."
    VPN_ID=`aws ec2 create-vpn-connection --type ipsec.1 --customer-gateway-id ${CGW_ID} --vpn-gateway-id ${VGW_ID} | jq -r .VpnConnection.VpnConnectionId`
    
    echo "VPN_ID:${VPN_ID}"
    if [ -n "${VPN_ID}" -a "${VPN_ID}" != "null" ]; then
      echo "SUCCESS: Create the VPN Connection."
    else
      echo "ERROR: Can't create the VPN Connection."
      exit 1
    fi
    echo ""
    
    echo "Tagged to the VPN."
    aws ec2 create-tags --resources ${VPN_ID} --tags Key=Name,Value=${TAG_VALUE}
    
    echo ""
    echo ""
    
    echo "--------------------------------------------------"
    echo "COMPLETED: All of the task has been completed."
    
    exit 0
    

    실행



    명령 실행의 예입니다.

    실행 예
    $ sh create-vpn.sh vpc-1e1ed97b 210.129.19.42
    

    결과



    이하, 관리 화면에서 본 작성 결과입니다.

    · 가상 프라이빗 게이트웨이


    · 고객 게이트웨이


    · VPN 연결


    결론



    스크립트 실행 후, 「VPN 접속」으로부터 「설정의 다운로드」를 해 그 컨피그를 대항이 되는 라우터에 흘려 넣으면 OK입니다.

    좋은 웹페이지 즐겨찾기