gpt4 book ai didi

azure - 无法在 azure ARM VPN 连接中通过 Rasdial 进行连接

转载 作者:行者123 更新时间:2023-12-02 23:49:18 25 4
gpt4 key购买 nike

我无法使用 powershell cmdlet 连接到 VPN。我使用构建代理中的“rasdial”连接到 VPN,以便我们可以触发自动化测试。整个过程是自动化的。

早期相同的 rasdial 命令 - Rasdial "VPNName" 在 VPN 的经典模型 (ASM) 中运行得非常好。但是,在迁移到 ARM 后,我遇到了这个问题。然而,通过 UI,即单击按钮连接到 VPN 工作正常,但我们需要通过脚本进行连接。

我收到一条消息-

This function is not supported on this system.

注意:我正在关注这篇文章-https://dzone.com/articles/deconstructing-azure-point

相同的解决方法在 ASM 中有效,但在 ARM 中无效。还有什么办法可以解决这个问题?

我正在使用下面的脚本来创建和下载 VPN 包。我不确定我的脚本中是否遗漏了导致此问题的某些内容-

$VNetName  = "MYVPN"
$SubName = "Subnet-1"
$GWSubName = "GatewaySubnet"
$VNetPrefix1 = "15.3.0.0/16"
$SubPrefix = "15.3.1.0/24"
$GWSubPrefix = "15.3.200.0/26"
$VPNClientAddressPool = "158.17.201.0/24"
$RG = "VMsRG"
$Location = "West Europe"
$DNS = "15.3.0.0"
$GWName = "GateWay"
$GWIPName = "GateWayIP"
$GWIPconfName = "GateWayIPConfig"
$P2SRootCertName = "XXXXX.cer"
$DeployUserName = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4021342600282f342d21292c6e232f2d" rel="noreferrer noopener nofollow">[email protected]</a>"
$DeployUserPassword = "XXXXX"

$Azurepwd = ConvertTo-SecureString $DeployUserPassword -AsPlainText -Force
$AzureCredential = new-object -typename System.Management.Automation.PSCredential -argumentlist $DeployUserName, $Azurepwd
Add-AzureRmAccount -credential $AzureCredential -SubscriptionName Development

New-AzureRmResourceGroup -Name $RG -Location $Location
$fesub = New-AzureRmVirtualNetworkSubnetConfig -Name $SubName -AddressPrefix $SubPrefix
$gwsub = New-AzureRmVirtualNetworkSubnetConfig -Name $GWSubName -AddressPrefix $GWSubPrefix
New-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $RG -Location $Location -AddressPrefix $VNetPrefix1 -Subnet $fesub, $gwsub -DnsServer $DNS

$vnet = Get-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $RG
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet

$pip = New-AzureRmPublicIpAddress -Name $GWIPName -ResourceGroupName $RG -Location $Location -AllocationMethod dynamic

$ipconf = New-AzureRmVirtualNetworkGatewayIpConfig -Name $GWIPconfName -Subnet $subnet -PublicIpAddress $pip

$MyP2SRootCertPubKeyBase64 = "XXXXX"
$p2srootcert = New-AzureRmVpnClientRootCertificate -Name "P2SVNETRootCertName" -PublicCertData $MyP2SRootCertPubKeyBase64
New-AzureRmVirtualNetworkGateway -Name $GWName -ResourceGroupName $RG -Location $Location -IpConfigurations $ipconf -GatewayType Vpn -VpnType RouteBased -EnableBgp $false -GatewaySku Standard -VpnClientAddressPool $VPNClientAddressPool -VpnClientRootCertificates $p2srootcert
Get-AzureRmVpnClientPackage -ResourceGroupName $RG -VirtualNetworkGatewayName $GWName -ProcessorArchitecture Amd64

因为我能够使用 GUI 进行连接。我希望脚本能够完成它的工作。

最佳答案

4 个月后,我收到了 MS 的回复(因为我为此提出了一张罚单)。他们告诉 Rasdial 到目前为止不受 Azure VPN 客户端包支持。此外,即使在解构 azure-point-to-site-vpn 后也缺少添加路由,应通过显式添加路由来注意这一点。

因此,作为解决方法,我执行了博客中提供的步骤 - http://www.diaryofaninja.com/blog/2013/11/27/deconstructing-the-azure-point-to-site-vpn-for-command-line-usage

但是添加路线的最后部分有点复杂。因此,为了添加路线,我创建了自己的 PS 脚本-

$Subnet                  = @("10.0.1.0", "10.0.2.0","10.0.3.0")
$VPNClientAddressPool = "x.x.x"
$Mask = "255.255.0.0"
$azureIpAddress = ""
$VPNCmd = "MYVPNName"

这里 x.x.x 是 3 个八位字节,可以在 VPN 的“网关 - 点到站点配置”中找到-

enter image description here

    $routeExists = route print | findstr $VPNClientAddressPool
if($routeExists)
{
route delete $Subnet
}

rasdial $VPNCmd > $null
$azureIPAddress = ipconfig | findstr $VPNClientAddressPool
if($azureIPAddress -ne $null)
{
$azureIpAddress = $azureIpAddress.Split(": ")
$azureIpAddress = $azureIpAddress[$azureIpAddress.Length-1]
$azureIpAddress = $azureIpAddress.Trim()
route add $Subnet MASK $Mask $azureIPAddress
}

这解决了我的目的。基本上你只需要处理路由添加部分。

关于azure - 无法在 azure ARM VPN 连接中通过 Rasdial 进行连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39638726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com