VPN Gateway용 BGP를 구성하는 방법: PowerShell

이 문서는 Azure PowerShell을 사용하여 프레미스 간 S2S(사이트 간) VPN 연결 및 VNet 간 연결에서 BGP를 사용하도록 설정하는 데 도움이 됩니다. 이러한 유형의 구성에 익숙하지 않은 경우 이 문서의 Azure Portal 버전을 사용하는 것이 더 쉬울 수 있습니다.

BGP는 두 개 이상의 네트워크 간에 라우팅 및 연결 정보를 교환하도록 인터넷에서 일반적으로 사용하는 표준 라우팅 프로토콜입니다. BGP를 통해 VPN 게이트웨이 및 온-프레미스 VPN 디바이스(BGP 피어 또는 인접이라고 함)는 관련된 게이트웨이 또는 라우터를 거치도록 해당 접두사의 가용성 및 연결 가능성에 대한 정보를 두 게이트웨이에 제공하는 "경로"를 교환할 수 있습니다. BGP 게이트웨이가 하나의 BGP 피어에서 파악한 경로를 다른 모든 BGP 피어로 전파하여 BGP를 통해 여러 네트워크 간에 전송 라우팅을 사용할 수도 있습니다.

BGP의 이점에 대한 자세한 내용 및 BGP 사용의 기술 요구 사항과 고려 사항을 이해하려면 BGP 및 Azure VPN Gateway 정보를 참조하세요.

시작하기

이 문서의 각 부는 네트워크 연결에서 BGP를 사용하기 위한 기본 구성 요소를 형성하는 데 도움이 됩니다. 세 부분(게이트웨이에서 BGP 구성, S2S 연결 및 VNet 간 연결)을 모두 완료하는 경우 다이어그램 1과 같이 토폴로지를 빌드합니다. 섹션을 결합하여 필요에 따라 더 복잡한 다중 홉 전송 네트워크를 빌드할 수 있습니다.

다이어그램 1

Diagram showing network architecture and settings.

VPN 게이트웨이에 대해 BGP를 사용하도록 설정

이 섹션은 다른 두 구성 섹션을 수행하기 전에 반드시 수행해야 합니다. 다음 구성 단계에서는 다이어그램 2에 표시된 대로 VPN 게이트웨이의 BGP 매개 변수를 설정합니다.

다이어그램 2

Diagram showing settings for the virtual network gateway.

시작하기 전에

브라우저에서 Azure Cloud Shell을 사용하여 이 연습의 단계를 실행할 수 있습니다. 대신 컴퓨터에서 직접 PowerShell을 사용하려면 Azure Resource Manager PowerShell cmdlet을 설치합니다. PowerShell cmdlet 설치에 대한 자세한 내용은 Azure PowerShell 설치 및 구성 방법을 참조하세요.

VNet1 만들기 및 구성

1. 변수 선언

이 연습에서는 먼저 변수를 선언합니다. 다음 예제에서는 이 연습에 대한 값을 사용하여 변수를 선언합니다. 이 유형의 구성에 익숙해지도록 단계를 실행하는 경우 예제 변수(구독 이름 제외)를 사용할 수 있습니다. 변수를 수정한 다음, 복사하여 PowerShell 콘솔에 붙여넣습니다. 생산을 위해 구성하는 경우 값을 사용자의 값으로 바꾸어야 합니다.

$Sub1 = "Replace_With_Your_Subscription_Name"
$RG1 = "TestRG1"
$Location1 = "East US"
$VNetName1 = "TestVNet1"
$FESubName1 = "FrontEnd"
$BESubName1 = "Backend"
$GWSubName1 = "GatewaySubnet"
$VNetPrefix11 = "10.11.0.0/16"
$VNetPrefix12 = "10.12.0.0/16"
$FESubPrefix1 = "10.11.0.0/24"
$BESubPrefix1 = "10.12.0.0/24"
$GWSubPrefix1 = "10.12.255.0/27"
$VNet1ASN = 65010
$DNS1 = "8.8.8.8"
$GWName1 = "VNet1GW"
$GWIPName1 = "VNet1GWIP"
$GWIPconfName1 = "gwipconf1"
$Connection12 = "VNet1toVNet2"
$Connection15 = "VNet1toSite5"

2. 구독에 연결하고 새 리소스 그룹 만들기

Resource Manager cmdlet을 사용하려면 PowerShell 모드로 전환해야 합니다. 자세한 내용은 리소스 관리자에서 Windows PowerShell 사용을 참조하세요.

Azure Cloud Shell을 사용하는 경우 자동으로 계정에 연결됩니다. 컴퓨터에서 PowerShell을 사용하는 경우 PowerShell 콘솔을 열고 계정에 연결합니다. 연결에 도움이 되도록 다음 샘플을 사용합니다.

Connect-AzAccount
Select-AzSubscription -SubscriptionName $Sub1
New-AzResourceGroup -Name $RG1 -Location $Location1

다음으로, 새 리소스 그룹을 만듭니다.

New-AzResourceGroup -Name $RG1 -Location $Location1

3. TestVNet1 만들기

다음 샘플에서는 TestVNet1이라는 가상 네트워크와 GatewaySubnet, FrontEnd 및 Backend라는 세 개의 서브넷을 만듭니다. 값을 대체할 때 언제나 게이트웨이 서브넷 이름을 GatewaySubnet라고 명시적으로 지정해야 합니다. 다른 이름을 지정하는 경우 게이트웨이 만들기가 실패합니다.

$fesub1 = New-AzVirtualNetworkSubnetConfig -Name $FESubName1 -AddressPrefix $FESubPrefix1
$besub1 = New-AzVirtualNetworkSubnetConfig -Name $BESubName1 -AddressPrefix $BESubPrefix1
$gwsub1 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName1 -AddressPrefix $GWSubPrefix1

New-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1 -Location $Location1 -AddressPrefix $VNetPrefix11,$VNetPrefix12 -Subnet $fesub1,$besub1,$gwsub1

BGP를 사용하도록 설정된 VPN 게이트웨이 만들기

1. IP 및 서브넷 구성 만들기

VNet용으로 만들 게이트웨이에 할당할 공용 IP 주소를 요청합니다. 필요한 서브넷 및 IP 구성도 정의합니다.

$gwpip1 = New-AzPublicIpAddress -Name $GWIPName1 -ResourceGroupName $RG1 -Location $Location1 -AllocationMethod Dynamic

$vnet1 = Get-AzVirtualNetwork -Name $VNetName1 -ResourceGroupName $RG1
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet1
$gwipconf1 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName1 -Subnet $subnet1 -PublicIpAddress $gwpip1

2. AS 번호를 사용하여 VPN 게이트웨이 만들기

TestVNet1용 가상 네트워크 게이트웨이를 만듭니다. BGP에는 경로 기반 VPN 게이트웨이가 필요하며 TestVNet1에 대한 ASN(AS 번호)을 설정하려면 추가 매개 변수 -Asn도 필요합니다. -Asn 매개 변수를 지정해야 합니다. -Asn 매개 변수를 설정하지 않으면 ASN 65515(이 구성에서는 작동하지 않음)가 기본적으로 할당됩니다. 게이트웨이 만들기는 꽤 시간이 걸릴 수 있습니다(완료되려면 45분 이상).

New-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1 -Location $Location1 -IpConfigurations $gwipconf1 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet1ASN

게이트웨이가 만들어지면 BGP를 사용하여 프레미스 간 연결 또는 VNet 간 연결을 설정하도록 이 게이트웨이를 사용할 수 있습니다.

3. Azure BGP 피어 IP 주소 가져오기

게이트웨이가 생성되면 VPN 게이트웨이에서 BGP 피어 IP 주소를 가져와야 합니다. 온-프레미스 VPN 디바이스에 대해 VPN 게이트웨이를 BGP 피어로 구성하려면 이 주소가 필요합니다.

CloudShell을 사용하는 경우 게이트웨이를 만드는 동안 세션 시간이 초과되면 변수를 다시 설정해야 할 수 있습니다.

필요한 경우 변수를 다시 설정합니다.

$RG1 = "TestRG1"
$GWName1 = "VNet1GW"

다음 명령을 실행하고 출력에서 "BgpPeeringAddress" 값을 확인합니다.

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet1gw.BgpSettingsText

예제 출력:

$vnet1gw.BgpSettingsText
{
    "Asn": 65010,
    "BgpPeeringAddress": "10.12.255.30",
    "PeerWeight": 0
}

BgpPeeringAddress가 IP 주소로 표시되지 않으면 게이트웨이가 아직 구성되고 있는 것입니다. 게이트웨이가 완료되면 다시 시도합니다.

BGP를 사용하여 프레미스 간 연결 설정

프레미스 간 연결을 설정하려면 사이트 간 연결 만들기에 설명된 대로 온-프레미스 VPN 디바이스를 나타내는 로컬 네트워크 게이트웨이를 만들고 VPN 게이트웨이와 로컬 네트워크 게이트웨이를 연결하는 연결을 만들어야 합니다. 다음 섹션에는 다이어그램 3에 표시된 BGP 구성 매개 변수를 지정하는 데 필요한 속성이 포함되어 있습니다.

다이어그램 3

Diagram showing IPsec configuration.

계속하기 전에 이전 섹션에서 VPN 게이트웨이에 대해 BGP를 사용하도록 설정했는지 확인합니다.

1단계: 로컬 네트워크 게이트웨이 만들기 및 구성

1. 변수 선언

이 연습에서는 다이어그램에 표시된 구성을 계속 빌드합니다. 값을 구성에 사용할 값으로 바꾸어야 합니다. 예를 들어 VPN 디바이스의 IP 주소가 필요합니다. 이 연습에서는 현재 VPN 디바이스에 연결할 계획이 없는 경우 유효한 IP 주소로 대체할 수 있습니다. 나중에 IP 주소를 바꿀 수 있습니다.

$RG5 = "TestRG5"
$Location5 = "West US"
$LNGName5 = "Site5"
$LNGPrefix50 = "10.51.255.254/32"
$LNGIP5 = "4.3.2.1"
$LNGASN5 = 65050
$BGPPeerIP5 = "10.51.255.254"

로컬 네트워크 게이트웨이 매개 변수와 관련하여 몇 가지 주의할 점은 다음과 같습니다.

  • 로컬 네트워크 게이트웨이는 VPN 게이트웨이와 같거나 다른 위치 및 리소스 그룹에 있을 수 있습니다. 이 예제에서는 다른 위치의 다른 리소스 그룹에 표시됩니다.
  • 로컬 네트워크 게이트웨이에 대해 선언해야 하는 접두사는 VPN 디바이스의 BGP 피어 IP 주소에서 호스트 주소입니다. 이 경우에는 "10.51.255.254/32"의 /32 접두사입니다.
  • 다시 확인하면 온-프레미스 네트워크와 Azure VNet 간에는 서로 다른 BGP ASN을 사용해야 합니다. 동일한 경우 온-프레미스 VPN 디바이스가 이미 ASN을 사용하여 다른 BGP 인접 항목과 피어링하는 경우 VNet ASN을 변경해야 합니다.

2. Site5용 로컬 네트워크 게이트웨이를 만듭니다.

로컬 네트워크 게이트웨이를 만들기 전에 리소스 그룹을 만듭니다.

New-AzResourceGroup -Name $RG5 -Location $Location5

로컬 네트워크 게이트웨이를 만듭니다. 로컬 네트워크 게이트웨이에 대한 두 개의 추가 매개 변수(Asn 및 BgpPeerAddress)를 확인합니다.

New-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5 -Location $Location5 -GatewayIpAddress $LNGIP5 -AddressPrefix $LNGPrefix50 -Asn $LNGASN5 -BgpPeeringAddress $BGPPeerIP5

2단계: VNet 게이트웨이 및 로컬 네트워크 게이트웨이 연결

1. 두 게이트웨이 가져오기

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1  -ResourceGroupName $RG1
$lng5gw  = Get-AzLocalNetworkGateway -Name $LNGName5 -ResourceGroupName $RG5

2. TestVNet1 및 Site5 간 연결 만들기

이 단계에서는 TestVNet1에서 Site5까지 연결을 만듭니다. 이 연결에 BGP를 사용하려면 "-EnableBGP $True"를 지정해야 합니다. 앞에서 설명한 대로 동일한 VPN 게이트웨이에 대해 BGP와 비BGP를 모두 연결할 수 있습니다. 연결 속성에서 BGP를 사용하도록 설정할 수 없으면 BGP 매개 변수가 두 게이트웨이에 이미 구성된 경우에도 Azure가 이 연결에 대해 BGP를 사용하도록 설정하지 않습니다.

필요한 경우 변수를 다시 선언합니다.

$Connection15 = "VNet1toSite5"
$Location1 = "East US"

그런 후 다음 명령을 실행합니다.

New-AzVirtualNetworkGatewayConnection -Name $Connection15 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -LocalNetworkGateway2 $lng5gw -Location $Location1 -ConnectionType IPsec -SharedKey 'AzureA1b2C3' -EnableBGP $True

온-프레미스 디바이스 구성

다음 예제에서 이 연습을 위해 온-프레미스 VPN 디바이스의 BGP 구성 섹션에 입력할 매개 변수를 나열합니다.

- Site5 ASN            : 65050
- Site5 BGP IP         : 10.51.255.254
- Prefixes to announce : (for example) 10.51.0.0/16
- Azure VNet ASN       : 65010
- Azure VNet BGP IP    : 10.12.255.30
- Static route         : Add a route for 10.12.255.30/32, with nexthop being the VPN tunnel interface on your device
- eBGP Multihop        : Ensure the "multihop" option for eBGP is enabled on your device if needed

몇 분 후 연결이 설정되며, IPsec 연결이 설정되면 BGP 피어링 세션이 시작됩니다.

BGP를 사용하여 VNet 간 연결 설정

이 섹션에서는 다이어그램 4에 표시된 대로 BGP를 사용하여 VNet 간 연결을 추가합니다.

다이어그램 4

Diagram showing full network configuration.

다음 지침은 이전 단계에서 계속합니다. BGP를 사용하여 TestVNet1 및 VPN 게이트웨이를 만들고 구성하려면 먼저 VPN 게이트웨이에 대해 BGP를 사용하도록 설정 섹션의 단계를 완료해야 합니다.

1단계: TestVNet2 및 VPN 게이트웨이 만들기

새 가상 네트워크 TestVNet2의 IP 주소 공간이 VNet 범위와 겹치지 않는지 확인해야 합니다.

이 예제에서 가상 네트워크는 동일한 구독에 속합니다. 다른 구독 간의 VNet 간 연결을 설정할 수 있습니다. 자세한 내용은 VNet 간 연결 구성을 참조하세요. BGP를 사용하는 연결을 만들 때 "-EnableBgp $True"를 추가해야 합니다.

1. 변수 선언

값을 구성에 사용할 값으로 바꾸어야 합니다.

$RG2 = "TestRG2"
$Location2 = "East US"
$VNetName2 = "TestVNet2"
$FESubName2 = "FrontEnd"
$BESubName2 = "Backend"
$GWSubName2 = "GatewaySubnet"
$VNetPrefix21 = "10.21.0.0/16"
$VNetPrefix22 = "10.22.0.0/16"
$FESubPrefix2 = "10.21.0.0/24"
$BESubPrefix2 = "10.22.0.0/24"
$GWSubPrefix2 = "10.22.255.0/27"
$VNet2ASN = 65020
$DNS2 = "8.8.8.8"
$GWName2 = "VNet2GW"
$GWIPName2 = "VNet2GWIP"
$GWIPconfName2 = "gwipconf2"
$Connection21 = "VNet2toVNet1"
$Connection12 = "VNet1toVNet2"

2. 새 리소스 그룹에서 TestVNet2 만들기

New-AzResourceGroup -Name $RG2 -Location $Location2

$fesub2 = New-AzVirtualNetworkSubnetConfig -Name $FESubName2 -AddressPrefix $FESubPrefix2
$besub2 = New-AzVirtualNetworkSubnetConfig -Name $BESubName2 -AddressPrefix $BESubPrefix2
$gwsub2 = New-AzVirtualNetworkSubnetConfig -Name $GWSubName2 -AddressPrefix $GWSubPrefix2

New-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2 -Location $Location2 -AddressPrefix $VNetPrefix21,$VNetPrefix22 -Subnet $fesub2,$besub2,$gwsub2

3. BGP 매개 변수를 사용하여 TestVNet2용 VPN 게이트웨이 만들기

VNet용으로 만들 게이트웨이에 할당할 공용 IP 주소를 요청하고 필요한 서브넷 및 IP 구성을 정의합니다.

변수 선언.

$gwpip2    = New-AzPublicIpAddress -Name $GWIPName2 -ResourceGroupName $RG2 -Location $Location2 -AllocationMethod Dynamic

$vnet2     = Get-AzVirtualNetwork -Name $VNetName2 -ResourceGroupName $RG2
$subnet2   = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet2
$gwipconf2 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfName2 -Subnet $subnet2 -PublicIpAddress $gwpip2

AS 번호를 사용하여 VPN 게이트웨이를 만듭니다. VPN 게이트웨이에서 기본 ASN을 재정의해야 합니다. BGP 및 전송 라우팅을 사용할 수 있도록 하려면 연결된 VNet용 ASN은 서로 달라야 합니다.

New-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2 -Location $Location2 -IpConfigurations $gwipconf2 -GatewayType Vpn -VpnType RouteBased -GatewaySku VpnGw1 -Asn $VNet2ASN

2단계: TestVNet1 및 TestVNet2 게이트웨이 연결

이 예제에서 두 게이트웨이는 동일한 구독에 있습니다. 동일한 PowerShell 세션에서 이 단계를 완료할 수 있습니다.

1. 두 게이트웨이 가져오기

필요한 경우 변수를 다시 설정합니다.

$GWName1 = "VNet1GW"
$GWName2 = "VNet2GW"
$RG1 = "TestRG1"
$RG2 = "TestRG2"
$Connection12 = "VNet1toVNet2"
$Connection21 = "VNet2toVNet1"
$Location1 = "East US"
$Location2 = "East US"

두 게이트웨이를 가져옵니다.

$vnet1gw = Get-AzVirtualNetworkGateway -Name $GWName1 -ResourceGroupName $RG1
$vnet2gw = Get-AzVirtualNetworkGateway -Name $GWName2 -ResourceGroupName $RG2

2. 두 연결 만들기

이 단계에서는 TestVNet1에서 TestVNet2까지 및 TestVNet2에서 TestVNet1까지의 연결을 만듭니다.

TestVNet1에서 TestVNet2로 연결.

New-AzVirtualNetworkGatewayConnection -Name $Connection12 -ResourceGroupName $RG1 -VirtualNetworkGateway1 $vnet1gw -VirtualNetworkGateway2 $vnet2gw -Location $Location1 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

TestVNet2에서 TestVNet1로 연결.

New-AzVirtualNetworkGatewayConnection -Name $Connection21 -ResourceGroupName $RG2 -VirtualNetworkGateway1 $vnet2gw -VirtualNetworkGateway2 $vnet1gw -Location $Location2 -ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3' -EnableBgp $True

Important

두 연결 모두에 대해 BGP를 사용하도록 설정해야 합니다.

이 단계를 완료한 후 몇 분 후에 연결이 설정됩니다. VNet 간 연결이 완료되면 BGP 피어링 세션이 끝납니다.

이 연습의 세 부를 모두 완료하면 다음 네트워크 토폴로지가 설정됩니다.

다이어그램 4

Diagram showing full network

다이어그램 4와 같이 컨텍스트에 대해 TestVNet2와 TestVNet1간에 BGP를 사용하지 않도록 설정하는 경우 TestVNet2는 온-프레미스 네트워크인 사이트 5에 대한 경로를 알 수 없으므로 사이트 5와 통신할 수 없습니다. 다이어그램 4와 같이 BGP를 사용하도록 설정하면 세 네트워크는 모두 S2S IPsec 및 VNet 간 연결을 통해 통신할 수 있습니다.

다음 단계

BGP에 대한 자세한 내용은 BGP 및 VPN Gateway 정보를 참조하세요.