全部產品
Search
文件中心

:ALIYUN::VPC::VpnConnection

更新時間:Jun 19, 2024

ALIYUN::VPC::VpnConnection類型用於建立IPsec串連。

文法

{
  "Type": "ALIYUN::VPC::VpnConnection",
  "Properties": {
    "IpsecConfig": Map,
    "Name": String,
    "IkeConfig": Map,
    "HealthCheckConfig": Map,
    "VpnGatewayId": String,
    "CustomerGatewayId": String,
    "RemoteSubnet": String,
    "LocalSubnet": String,
    "EffectImmediately": Boolean,
    "EnableTunnelsBgp": Boolean,
    "RemoteCaCertificate": String,
    "BgpConfig": Map,
    "AutoConfigRoute": Boolean,
    "EnableDpd": Boolean,
    "EnableNatTraversal": Boolean,
    "TunnelOptionsSpecification": List
  }
}

屬性

屬性名稱

類型

必須

允許更新

描述

約束

Name

String

IPsec串連的名稱。

長度為2~128個字元。必須以英文字母或漢字開頭,不能以http://https://開頭。可包含英文字母、漢字、數字、英文句點(.)、底線(_)和短劃線(-)。

IkeConfig

Map

第一階段協商的配置資訊。

詳情請參見IkeConfig屬性

IpsecConfig

Map

第二階段協商的配置資訊。

詳情請參見IpsecConfig屬性

HealthCheckConfig

Map

健全狀態檢查的配置資訊。

詳情請參見HealthCheckConfig屬性

VpnGatewayId

String

VPN網關的ID。

CustomerGatewayId

String

使用者網關的ID。

RemoteSubnet

String

本地IDC的網段,用於第二階段協商。

多個網段之間用半形逗號(,)分隔,例如:192.168.3.0/24,192.168.4.0/24。

LocalSubnet

String

和本地IDC互連的VPC側的網段,用於第二階段協商。

多個網段之間用半形逗號(,)分隔,例如:192.168.1.0/24,192.168.2.0/24。

EffectImmediately

Boolean

是否刪除當前已協商成功的IPsec隧道並重新發起協商。

取值:

  • true:配置完成後立即進行協商。

  • false(預設值):當有流量進入時進行協商。

EnableTunnelsBgp

Boolean

隧道BGP的開啟狀態。

取值:

  • true:已開啟。

  • false:未開啟。

RemoteCaCertificate

String

對端的CA認證。

BgpConfig

Map

隧道的BGP配置資訊。

更多資訊,請參見BgpConfig屬性

AutoConfigRoute

Boolean

是否自動設定路由。 

取值:

  • false:手動設定路由。 

  • true(預設):自動設定路由。 

EnableDpd

Boolean

IPsec串連是否已開啟DPD(對等體存活檢測)功能。

取值:

  • true:開啟DPD功能。

    IPsec發起端會發送DPD報文用來檢測對端的裝置是否存活,如果在設定時間內未收到正確回應則認為對端已經斷線,IPsec將刪除ISAKMP SA和相應的IPsec SA,安全隧道同樣也會被刪除。

  • false:不開啟DPD功能,IPsec發起端不會發送DPD探測報文。

EnableNatTraversal

Boolean

隧道是否已開啟NAT穿越功能。

取值:

  • false:未開啟。

  • true:已開啟。

TunnelOptionsSpecification

List

IPsec串連的隧道配置資訊。

更多資訊,請參見TunnelOptionsSpecification屬性

IkeConfig文法

"IkeConfig": {
  "RemoteId": String,
  "Psk": String,
  "IkeVersion": String,
  "IkeMode": String,
  "IkeAuthAlg": String,
  "IkeEncAlg": String,
  "IkePfs": String,
  "IkeLifetime": Integer,
  "LocalId": String
}

IkeConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

RemoteId

String

使用者網關的標識。

最大長度為100個字元。預設值為使用者網關的公網IP地址。

Psk

String

IPsec VPN網關與使用者網關之間的身份認證。

最大長度為100個字元。預設情況下該參數值會隨機產生,您也可以手動指定密鑰。

IkeVersion

String

IKE協議的版本。

取值:

  • ikev1(預設值)

  • ikev2

IkeMode

String

IKE V1版本的協商模式。

取值:

  • main(預設值)

  • aggressive

IkeAuthAlg

String

第一階段協商的認證演算法。

取值:

  • md5(預設值)

  • sha1

IkeEncAlg

String

第一階段協商的密碼編譯演算法。

取值:

  • aes(預設值)

  • aes192

  • aes256

  • des

  • 3des

IkePfs

String

第一階段協商使用的Diffie-Hellman金鑰交換演算法。

取值:

  • group1

  • group2(預設值)

  • group5

  • group14

  • group24

IkeLifetime

Integer

第一階段協商出的SA的生存周期。

取值範圍:0~86,400。

預設值:86,400。

LocalId

String

VPN網關的標識。

長度限制為100個字元,預設值為VPN網關的IP地址。

IpsecConfig文法

"IpsecConfig": {
  "IpsecAuthAlg": String,
  "IpsecEncAlg": String,
  "IpsecLifetime": Integer,
  "IpsecPfs": String
}

IpsecConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

IpsecAuthAlg

String

第二階段協商的認證演算法。

取值:

  • md5(預設值)

  • sha1

IpsecEncAlg

String

第二階段協商的密碼編譯演算法。

取值:

  • aes(預設值)

  • aes192

  • aes256

  • des

  • 3des

IpsecLifetime

Integer

第二階段協商出的SA的生存周期。

取值範圍:0~86,400。

單位:秒。

預設值:86,400。

IpsecPfs

String

第二階段協商使用的Diffie-Hellman金鑰交換演算法。

取值:

  • group1

  • group2(預設值)

  • group5

  • group14

  • group24

HealthCheckConfig文法

"HealthCheckConfig": {
  "Enable": Boolean,
  "Dip": Boolean,
  "Retry": Integer,
  "Sip": String,
  "Interval": Integer,
  "Policy": String 
}   

HealthCheckConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

Enable

Boolean

是否開啟健全狀態檢查。

取值:

  • true

  • false

如果取值為true,則其他參數必須配置。

Interval

Integer

健全狀態檢查的稍候再試時間。

單位:秒。

Retry

Integer

健全狀態檢查的重試發包次數。

Dip

String

目標IP,即通過IPSec串連可以訪問的線下IDC的IP地址。

Sip

String

源IP,即線下IDC通過IPSec串連可以訪問的IP地址。

Policy

String

健全狀態檢查失敗時是否撤銷發布的路由。 

BgpConfig文法

"BgpConfig": {
  "TunnelCidr": String,
  "LocalBgpIp": String,
  "EnableBgp": Boolean,
  "LocalAsn": Number
}   

BgpConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

TunnelCidr

String

隧道的BGP網段。

LocalBgpIp

String

隧道本端(阿里雲側)的BGP地址。

EnableBgp

Boolean

指定隧道是否啟用BGP特性。 

取值: 

  • true。

  • false。 

預設值:false。

LocalAsn

Number

隧道本端(阿里雲側)的自治系統號。

TunnelOptionsSpecification文法

"TunnelOptionsSpecification": [
  {
    "RemoteCaCertificate": String,
    "CustomerGatewayId": String,
    "TunnelBgpConfig": Map,
    "TunnelIpsecConfig": Map,
    "EnableDpd": Boolean,
    "TunnelIkeConfig": Map,
    "EnableNatTraversal": Boolean,
    "Role": String
  }
]

TunnelOptionsSpecification屬性

屬性名稱

類型

必須

允許更新

描述

約束

RemoteCaCertificate

String

隧道對端的CA認證。

僅VPN網關執行個體的類型為國密型時才會返回當前參數。

CustomerGatewayId

String

隧道關聯的使用者網關ID。

TunnelBgpConfig

Map

隧道的BGP配置資訊。

更多資訊,請參見TunnelBgpConfig屬性

TunnelIpsecConfig

Map

第二階段協商的配置。

更多資訊,請參見TunnelIpsecConfig屬性

EnableDpd

Boolean

IPsec串連是否已開啟DPD(對等體存活檢測)功能。

取值:

  • true:開啟DPD功能。

    IPsec發起端會發送DPD報文用來檢測對端的裝置是否存活,如果在設定時間內未收到正確回應則認為對端已經斷線,IPsec將刪除ISAKMP SA和相應的IPsec SA,安全隧道同樣也會被刪除。

  • false:不開啟DPD功能,IPsec發起端不會發送DPD探測報文。

TunnelIkeConfig

Map

第一階段協商的配置。

更多資訊,請參見TunnelIkeConfig屬性

EnableNatTraversal

Boolean

IPsec串連是否已開啟NAT穿越功能。

取值:

  • true:開啟NAT穿越功能。

    開啟後,IKE協商過程會刪除對UDP連接埠號碼的驗證過程,同時實現對VPN隧道中NAT Gateway裝置的發現功能。

  • false:不開啟NAT穿越功能。

Role

String

隧道的角色。

取值:

  • master:表示當前隧道為主隧道。

  • slave:表示當前隧道為備隧道。

TunnelBgpConfig文法

"TunnelBgpConfig": {
  "TunnelCidr": String,
  "LocalAsn": Number,
  "LocalBgpIp": String
}   

TunnelBgpConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

TunnelCidr

String

隧道的BGP網段。

LocalBgpIp

String

隧道本端(阿里雲側)的BGP地址。

LocalAsn

Number

隧道本端(阿里雲側)的自治系統號。

TunnelIpsecConfig文法

"TunnelIpsecConfig": {
  "IpsecAuthAlg": String,
  "IpsecEncAlg": String,
  "IpsecPfs": String,
  "IpsecLifetime": Integer
}   

TunnelIpsecConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

IpsecAuthAlg

String

IPsec階段認證演算法。

IpsecEncAlg

String

IPsec階段密碼編譯演算法。

IpsecPfs

String

IPsec階段存留時間。

單位:秒。

IpsecLifetime

Integer

隧道本端(阿里雲側)的自治系統號。

TunnelIkeConfig文法

"TunnelIkeConfig": {
  "Psk": String,
  "IkePfs": String,
  "LocalId": String,
  "IkeVersion": String,
  "IkeAuthAlg": String,
  "IkeMode": String,
  "RemoteId": String,
  "IkeLifetime": Integer,
  "IkeEncAlg": String
}   

TunnelIkeConfig屬性

屬性名稱

類型

必須

允許更新

描述

約束

Psk

String

預先共用金鑰。

IkePfs

String

IKE階段DH分組。

LocalId

String

隧道本端(阿里雲側)的標識。

IkeVersion

String

IKE協議版本。

取值:

  • ikev1

  • ikev2

相對於IKEv1版本,IKEv2版本簡化了SA的協商過程並且對於多網段的情境提供了更好的支援。

IkeAuthAlg

String

IKE階段認證演算法。

IkeMode

String

IKE協商模式。

物質:

  • main:主模式,協商過程安全性高。

  • aggressive:野蠻模式,協商快速且協商成功率高。

RemoteId

String

隧道對端的標識。

IkeLifetime

Integer

IKE階段存留時間。

單位:秒。

IkeEncAlg

String

IKE階段密碼編譯演算法。

傳回值

Fn::GetAtt

  • VpnConnectionId:IPsec串連的ID。

  • Status:IPsec串連的狀態。

  • PeerVpnConnectionConfig:對等的VPC串連配置。

樣本

YAML格式

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  LocalSubnet:
    Type: String
    Description: >-
      A network segment on the VPC side that needs to be interconnected with the
      local IDC for the second phase negotiation.

      Multiple network segments are separated by commas, for example:
      192.168.1.0/24, 192.168.2.0/24.
  EffectImmediately:
    Type: Boolean
    Description: >-
      Whether to delete the currently negotiated IPsec tunnel and re-initiate
      the negotiation. Value:

      True: Negotiate immediately after the configuration is complete.

      False (default): Negotiate when traffic enters.
    AllowedValues:
      - 'True'
      - 'true'
      - 'False'
      - 'false'
    Default: false
  RemoteSubnet:
    Type: String
    Description: >-
      The network segment of the local IDC is used for the second phase
      negotiation.

      Multiple network segments are separated by commas, for example:
      192.168.3.0/24, 192.168.4.0/24.
  CustomerGatewayId:
    Type: String
    Description: The ID of the user gateway.
  VpnGatewayId:
    Type: String
    Description: ID of the VPN gateway.
  IpsecConfig:
    Type: Json
    Description: Configuration information for the second phase negotiation.
  HealthCheckConfig:
    Type: Json
    Description: Whether to enable the health check configuration.
  IkeConfig:
    Type: Json
    Description: Configuration information for the first phase of negotiation.
  Name:
    Type: String
    Description: >-
      The name of the IPsec connection.

      The length is 2-128 characters and must start with a letter or Chinese. It
      can contain numbers, periods (.), underscores (_) and dashes (-), but
      cannot start with http:// or https:// .
    MinLength: 2
    MaxLength: 128
Resources:
  VpnConnection:
    Type: 'ALIYUN::VPC::VpnConnection'
    Properties:
      LocalSubnet:
        Ref: LocalSubnet
      EffectImmediately:
        Ref: EffectImmediately
      RemoteSubnet:
        Ref: RemoteSubnet
      CustomerGatewayId:
        Ref: CustomerGatewayId
      VpnGatewayId:
        Ref: VpnGatewayId
      IpsecConfig:
        Ref: IpsecConfig
      HealthCheckConfig:
        Ref: HealthCheckConfig
      IkeConfig:
        Ref: IkeConfig
      Name:
        Ref: Name
Outputs:
  Status:
    Description: Status of the IPsec connection.
    Value:
      'Fn::GetAtt':
        - VpnConnection
        - Status
  PeerVpnConnectionConfig:
    Description: Peer vpc connection config.
    Value:
      'Fn::GetAtt':
        - VpnConnection
        - PeerVpnConnectionConfig
  VpnConnectionId:
    Description: ID of the IPsec connection.
    Value:
      'Fn::GetAtt':
        - VpnConnection
        - VpnConnectionId

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "LocalSubnet": {
      "Type": "String",
      "Description": "A network segment on the VPC side that needs to be interconnected with the local IDC for the second phase negotiation.\nMultiple network segments are separated by commas, for example: 192.168.1.0/24, 192.168.2.0/24."
    },
    "EffectImmediately": {
      "Type": "Boolean",
      "Description": "Whether to delete the currently negotiated IPsec tunnel and re-initiate the negotiation. Value:\nTrue: Negotiate immediately after the configuration is complete.\nFalse (default): Negotiate when traffic enters.",
      "AllowedValues": [
        "True",
        "true",
        "False",
        "false"
      ],
      "Default": false
    },
    "RemoteSubnet": {
      "Type": "String",
      "Description": "The network segment of the local IDC is used for the second phase negotiation.\nMultiple network segments are separated by commas, for example: 192.168.3.0/24, 192.168.4.0/24."
    },
    "CustomerGatewayId": {
      "Type": "String",
      "Description": "The ID of the user gateway."
    },
    "VpnGatewayId": {
      "Type": "String",
      "Description": "ID of the VPN gateway."
    },
    "IpsecConfig": {
      "Type": "Json",
      "Description": "Configuration information for the second phase negotiation."
    },
    "HealthCheckConfig": {
      "Type": "Json",
      "Description": "Whether to enable the health check configuration."
    },
    "IkeConfig": {
      "Type": "Json",
      "Description": "Configuration information for the first phase of negotiation."
    },
    "Name": {
      "Type": "String",
      "Description": "The name of the IPsec connection.\nThe length is 2-128 characters and must start with a letter or Chinese. It can contain numbers, periods (.), underscores (_) and dashes (-), but cannot start with http:// or https:// .",
      "MinLength": 2,
      "MaxLength": 128
    }
  },
  "Resources": {
    "VpnConnection": {
      "Type": "ALIYUN::VPC::VpnConnection",
      "Properties": {
        "LocalSubnet": {
          "Ref": "LocalSubnet"
        },
        "EffectImmediately": {
          "Ref": "EffectImmediately"
        },
        "RemoteSubnet": {
          "Ref": "RemoteSubnet"
        },
        "CustomerGatewayId": {
          "Ref": "CustomerGatewayId"
        },
        "VpnGatewayId": {
          "Ref": "VpnGatewayId"
        },
        "IpsecConfig": {
          "Ref": "IpsecConfig"
        },
        "HealthCheckConfig": {
          "Ref": "HealthCheckConfig"
        },
        "IkeConfig": {
          "Ref": "IkeConfig"
        },
        "Name": {
          "Ref": "Name"
        }
      }
    }
  },
  "Outputs": {
    "Status": {
      "Description": "Status of the IPsec connection.",
      "Value": {
        "Fn::GetAtt": [
          "VpnConnection",
          "Status"
        ]
      }
    },
    "PeerVpnConnectionConfig": {
      "Description": "Peer vpc connection config.",
      "Value": {
        "Fn::GetAtt": [
          "VpnConnection",
          "PeerVpnConnectionConfig"
        ]
      }
    },
    "VpnConnectionId": {
      "Description": "ID of the IPsec connection.",
      "Value": {
        "Fn::GetAtt": [
          "VpnConnection",
          "VpnConnectionId"
        ]
      }
    }
  }
}