كيفية تكوين BGP VPN Gateway: PowerShell

تساعدك هذه المقالة على تمكين BGP على اتصالات VPN من موقع إلى موقع (S2S) عبر أماكن العمل واتصالات VNet-to-VNet باستخدام Azure PowerShell. إذا لم تكن على دراية بهذا النوع من التكوين، فقد تجد أنه من الأسهل استخدام الإصدار Azure-Portal من هذه المقالة.

BGP هو بروتوكول التوجيه القياسي الشائع استخدامه في الإنترنت لتبادل معلومات التوجيه وإمكانية الوصول بين شبكتين أو أكثر. يمكن BGP بوابات VPN وأجهزة VPN المحلية الخاصة بك، والتي تسمى نظراء BGP أو الجيران، من تبادل "المسارات" التي ستعلم كلا البوابتين بتوفر تلك البادئات وإمكانية الوصول إليها للانتقال عبر البوابات أو أجهزة التوجيه المعنية. يمكن ل BGP أيضا تمكين توجيه العبور بين شبكات متعددة من خلال نشر الطرق التي تتعلمها بوابة BGP من نظير BGP واحد إلى جميع أقران BGP الآخرين.

لمزيد من المعلومات حول فوائد BGP وفهم المتطلبات والاعتبارات التقنية لاستخدام BGP، راجع حول BGP وAzure VPN Gateway.

الشروع في العمل

يساعدك كل جزء من هذه المقالة في تكوين لبنة أساسية لتمكين BGP في اتصال الشبكة لديك. إذا أكملت جميع الأجزاء الثلاثة (تكوين BGP على البوابة واتصال S2S واتصال VNet-to-VNet) يمكنك إنشاء المخطط كما هو موضح في الرسم التخطيطي 1. يمكنك دمج الأقسام معاً لبناء شبكة عبور أكثر تعقيداً ومتعددة القفزات تلبي احتياجاتك.

الرسم التخطيطي 1

رسم تخطيطي يوضح بنية الشبكة وإعداداتها.

تمكين BGP لبوابة VPN

هذا القسم مطلوب قبل تنفيذ أي من الخطوات الموجودة في قسمي التكوين الآخرين. تقوم خطوات التكوين التالية بإعداد معلمات BGP لبوابة VPN كما هو موضح في الرسم التخطيطي 2.

الرسم التخطيطي 2

رسم تخطيطي يوضح إعدادات بوابة الشبكة الظاهرية.

قبل أن تبدأ

يمكنك تشغيل الخطوات لهذا التمرين باستخدام Azure Cloud Shell في المستعرض الخاص بك. إذا كنت تريد استخدام PowerShell مباشرة من الكمبيوتر بدلا من ذلك، فقم بتثبيت Azure Resource Manager PowerShell cmdlets. للمزيد من المعلومات حول تثبيت PowerShell cmdlets، راجع كيفية تثبيت وتكوين 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 cmdlets، تأكد من التبديل إلى وضع PowerShell. لمزيد من المعلومات، راجع استخدام Windows PowerShell مع Resource Manager.

إذا كنت تستخدم 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

إنشاء بوابة VPN مع تمكين BGP

1. أنشئ تكوينات الشبكة الفرعية وعنوان IP

اطلب تخصيص عنوان 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. قم بإنشاء بوابة VPN برقم AS

إنشاء بوابة الشبكة الظاهرية لـTestVNet1. يتطلب BGP بوابة VPN Route-Based، وأيضا معلمة إضافية -Asn لتعيين ASN (AS Number) ل TestVNet1. تأكد من تحديد المعلمة -Asn . إذا لم تقم بتعيين المعلمة -Asn، يتم تعيين ASN 65515 (الذي لا يعمل لهذا التكوين) بشكل افتراضي. قد يستغرق إنشاء بوابة بعض الوقت (45 دقيقة أو أكثر لإكمالها).

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

بمجرد إنشاء البوابة، يمكنك استخدام هذه البوابة لإنشاء اتصال عبر المباني أو اتصال VNet-to-VNet مع BGP.

3. الحصول على عنوان IP نظير Azure BGP

بمجرد إنشاء البوابة، تحتاج إلى الحصول على عنوان IP نظير BGP على بوابة VPN. هذا العنوان مطلوب لتكوين بوابة VPN كنظير BGP لأجهزة VPN المحلية.

إذا كنت تستخدم 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 ببوابة الشبكة المحلية كما هو موضح في إنشاء اتصال من موقع إلى موقع . تحتوي الأقسام التالية على الخصائص المطلوبة لتحديد معلمات تكوين BGP، الموضحة في الرسم التخطيطي 3.

رسم تخطيطي 3

رسم تخطيطي يوضح تكوين IPsec.

قبل المتابعة، تأكد من تمكين BGP لبوابة VPN في القسم السابق.

الخطوة 1: إنشاء بوابة الشبكة المحلية وتكوينها

1. قم بتعريف المتغيرات الخاصة بك

يستمر هذا التمرين في إنشاء التكوين الموضح في الرسم البياني. تأكد من استبدال القيم بالقيم التي تريد استخدامها للتكوين. على سبيل المثال، تحتاج إلى عنوان IP لجهاز VPN الخاص بك. لهذا التمرين، يمكنك استبدال عنوان IP صالح إذا كنت لا تخطط للاتصال بجهاز VPN الخاص بك في هذا الوقت. يمكنك لاحقا استبدال عنوان 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. يعرضها هذا المثال في مجموعات موارد مختلفة في مواقع مختلفة.
  • البادئة التي تحتاج إلى الإعلان عنها لبوابة الشبكة المحلية هي عنوان المضيف لعنوان IP الخاص بـBGP Peer IP على جهاز VPN الخاص بك. في هذه الحالة، إنها بادئة /32 من "10.51.255.254/32".
  • للتذكير، يجب عليك استخدام شبكات ASN BGP مختلفة بين الشبكات المحلية وAzure VNet. إذا كانت هي نفسها، فأنت بحاجة إلى تغيير VNet ASN الخاص بك إذا كان جهاز VPN المحلي يستخدم بالفعل ASN للتناظر مع جيران BGP الآخرين.

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. يجب تحديد "-EnableBGP $True" لتمكين BGP لهذا الاتصال. كما تمت مناقشته سابقا، من الممكن أن يكون لديك كل من اتصالات BGP وغير BGP لنفس بوابة VPN. ما لم يتم تمكين BGP في خاصية الاتصال، لن يقوم Azure بتمكين BGP لهذا الاتصال على الرغم من تكوين معلمات BGP بالفعل على كلتا البوابتين.

أعد الإعلان عن المتغيرات الخاصة بك إذا لزم الأمر:

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

ثم شغَّل الأمر التالي:

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

تكوين الجهاز المحلي

يسرد المثال التالي المعلمات التي تدخلها في قسم تكوين BGP على جهاز VPN المحلي الخاص بك لهذا التمرين:

- 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

يتم إنشاء الاتصال بعد بضع دقائق، وتبدأ جلسة النظير BGP بمجرد إنشاء اتصال IPsec.

إنشاء اتصال VNet-to-VNet مع BGP

يضيف هذا القسم اتصال VNet-to-VNet مع BGP، كما هو موضح في الرسم التخطيطي 4.

الرسم التخطيطي4

رسم تخطيطي يوضح تكوين الشبكة الكامل.

تستمر الإرشادات التالية من الخطوات السابقة. يجب أولا إكمال الخطوات في قسم تمكين BGP لبوابة VPN لإنشاء وتكوين TestVNet1 وبوابة VPN مع BGP.

الخطوة 1: إنشاء TestVNet2 وبوابة VPN

من المهم التأكد من أن مساحة عنوان IP للشبكة الظاهرية الجديدة، TestVNet2، لا تتداخل مع أي من نطاقات الشبكة الظاهرية.

في هذا المثال، تنتمي الشبكات الظاهرية إلى نفس الاشتراك. يمكنك إعداد اتصالات VNet-to-VNet بين اشتراكات مختلفة. لمزيد من المعلومات، راجع تكوين اتصال VNet-to-VNet. تأكد من إضافة "-EnableBgp $True" عند إنشاء الاتصالات لتمكين BGP.

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 - إنشاء بوابة VPN لـTestVNet2 باستخدام معلمات BGP

اطلب عنوان 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

2. قم بإنشاء بوابة VPN برقم AS. يجب تجاوز ASN الافتراضي على بوابات VPN الخاصة بك. يجب أن تكون ASNs الخاصة بـVNets المتصلة مختلفة لتمكين BGP وتوجيه الترانزيت.

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

هام

تأكد من تمكين BGP لكلا الاتصالين.

بعد الانتهاء من هذه الخطوات، يتم إنشاء الاتصال بعد بضع دقائق. يتم تشغيل جلسة النظير BGP بمجرد اكتمال اتصال VNet-to-VNet.

إذا أكملت جميع الأجزاء الثلاثة من هذا التمرين، فقد أنشأت طبولوجيا الشبكة التالية:

الرسم التخطيطي4

رسم تخطيطي يوضح الشبكة الكاملة

بالنسبة للسياق، بالإشارة إلى الرسم التخطيطي 4، إذا تم تعطيل BGP بين TestVNet2 وTestVNet1، فلن يتعلم TestVNet2 مسارات الشبكة المحلية، Site5، وبالتالي لا يمكنه الاتصال بالموقع 5. بمجرد تمكين BGP، كما هو موضح في الرسم التخطيطي 4، ستتمكن جميع الشبكات الثلاث من الاتصال عبر اتصالات S2S IPsec وVNet-to-VNet.

الخطوات التالية

لمزيد من المعلومات حول BGP، راجع حول BGP VPN Gateway.