Rotear tráfego com uma tabela de rotas utilizando o PowerShell
Por padrão, o Azure roteia automaticamente o tráfego entre todas as sub-redes dentro de uma rede virtual. É possível criar as próprias rotas para substituir o roteamento padrão do Azure. A capacidade de criar rotas personalizadas será útil, por exemplo, se você quiser rotear o tráfego entre sub-redes por meio de uma NVA (solução de virtualização de rede). Neste artigo, você aprenderá como:
- Criar uma tabela de rotas
- Criar uma rota
- Criar uma rede virtual com várias sub-redes
- Associar uma tabela de rotas a uma sub-rede
- Criar uma NVA que roteia o tráfego
- Implantar VMs (máquinas virtuais) em diferentes sub-redes
- Rotear o tráfego de uma sub-rede para outra por meio de uma NVA
Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
Azure Cloud Shell
O Azure hospeda o Azure Cloud Shell, um ambiente de shell interativo que pode ser usado por meio do navegador. É possível usar o bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure. É possível usar os comandos pré-instalados do Cloud Shell para executar o código neste artigo, sem precisar instalar nada no seu ambiente local.
Para iniciar o Azure Cloud Shell:
Opção | Exemplo/Link |
---|---|
Selecione Experimentar no canto superior direito de um bloco de código ou de comando. Selecionar Experimentar não copia automaticamente o código nem o comando para o Cloud Shell. | |
Acesse https://shell.azure.com ou selecione o botão Iniciar o Cloud Shell para abri-lo no navegador. | |
Selecione o botão Cloud Shell na barra de menus no canto superior direito do portal do Azure. |
Para usar o Azure Cloud Shell:
Inicie o Cloud Shell.
Selecione o botão Copiar em um bloco de código (ou bloco de comando) para copiar o código ou o comando.
Cole o código ou comando na sessão do Cloud Shell selecionando Ctrl+Shift+V no Windows e no Linux, ou selecionando Cmd+Shift+V no macOS.
Selecione Enter para executar o código ou o comando.
Se você optar por instalar e usar o PowerShell localmente, este artigo exigirá o módulo do Azure PowerShell versão 1.0.0 ou posterior. Execute Get-Module -ListAvailable Az
para localizar a versão instalada. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Se você estiver executando o PowerShell localmente, também precisará executar o Connect-AzAccount
para criar uma conexão com o Azure.
Criar uma tabela de rotas
Antes de criar uma tabela de roteamento, crie um grupo de recursos com New-AzResourceGroup. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup para todos os recursos criados neste artigo.
New-AzResourceGroup -ResourceGroupName myResourceGroup -Location EastUS
Crie uma tabela de rotas com New-AzRouteTable. O exemplo a seguir cria uma tabela de rotas nomeada myRouteTablePublic.
$routeTablePublic = New-AzRouteTable `
-Name 'myRouteTablePublic' `
-ResourceGroupName myResourceGroup `
-location EastUS
Criar uma rota
Crie uma rota recuperando o objeto da tabela de rotas com Get-AzRouteTable, crie uma rota com Add-AzRouteConfig e, em seguida, escreva a configuração de rota na tabela de rotas com Set-AzRouteTable.
Get-AzRouteTable `
-ResourceGroupName "myResourceGroup" `
-Name "myRouteTablePublic" `
| Add-AzRouteConfig `
-Name "ToPrivateSubnet" `
-AddressPrefix 10.0.1.0/24 `
-NextHopType "VirtualAppliance" `
-NextHopIpAddress 10.0.2.4 `
| Set-AzRouteTable
Associar uma tabela de rotas a uma sub-rede
Antes de poder associar uma tabela de rotas a uma sub-rede, será necessário criar uma rede virtual e uma sub-rede. Crie uma rede virtual com New-AzVirtualNetwork. O exemplo a seguir cria uma rede virtual nomeada myVirtualNetwork com o prefixo de endereço 10.0.0.0/16.
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName myResourceGroup `
-Location EastUS `
-Name myVirtualNetwork `
-AddressPrefix 10.0.0.0/16
Crie três sub-redes criando três configurações de sub-rede com New-AzVirtualNetworkSubnetConfig. O exemplo a seguir cria três configurações de sub-rede para sub-redes Pública, Privada e DMZ:
$subnetConfigPublic = Add-AzVirtualNetworkSubnetConfig `
-Name Public `
-AddressPrefix 10.0.0.0/24 `
-VirtualNetwork $virtualNetwork
$subnetConfigPrivate = Add-AzVirtualNetworkSubnetConfig `
-Name Private `
-AddressPrefix 10.0.1.0/24 `
-VirtualNetwork $virtualNetwork
$subnetConfigDmz = Add-AzVirtualNetworkSubnetConfig `
-Name DMZ `
-AddressPrefix 10.0.2.0/24 `
-VirtualNetwork $virtualNetwork
Escreva as configurações de sub-rede na rede virtual com Set-AzVirtualNetwork, que cria as sub-redes na rede virtual:
$virtualNetwork | Set-AzVirtualNetwork
Associe a tabela de rotas myRouteTablePublic à sub-rede Pública com Set-AzVirtualNetworkSubnetConfig e escreva a configuração de sub-rede para a rede virtual com o Set-AzVirtualNetwork.
Set-AzVirtualNetworkSubnetConfig `
-VirtualNetwork $virtualNetwork `
-Name 'Public' `
-AddressPrefix 10.0.0.0/24 `
-RouteTable $myRouteTablePublic | `
Set-AzVirtualNetwork
Criar uma NVA
Uma NVA é uma VM que executa uma função de rede, como roteamento, firewall ou otimização de WAN.
Antes de criar uma VM, crie um adaptador de rede.
Criar um adaptador de rede
Antes de criar uma interface de rede, você precisa recuperar a ID da rede virtual com Get-AzVirtualNetwork e, em seguida, a ID da sub-rede com Get-AzVirtualNetworkSubnetConfig. Crie uma interface de rede com New-AzNetworkInterface na sub-rede DMZ com o encaminhamento de IP ativado:
# Retrieve the virtual network object into a variable.
$virtualNetwork=Get-AzVirtualNetwork `
-Name myVirtualNetwork `
-ResourceGroupName myResourceGroup
# Retrieve the subnet configuration into a variable.
$subnetConfigDmz = Get-AzVirtualNetworkSubnetConfig `
-Name DMZ `
-VirtualNetwork $virtualNetwork
# Create the network interface.
$nic = New-AzNetworkInterface `
-ResourceGroupName myResourceGroup `
-Location EastUS `
-Name 'myVmNva' `
-SubnetId $subnetConfigDmz.Id `
-EnableIPForwarding
Criar uma máquina virtual
Para criar uma VM e anexar uma interface de rede existente a ela, crie primeiro uma configuração de VM com New-AzVMConfig. A configuração inclui a interface de rede criada na etapa anterior. Quando for solicitado um nome de usuário e senha, selecione o nome de usuário e senha com os quais você deseja fazer logon na VM.
# Create a credential object.
$cred = Get-Credential -Message "Enter a username and password for the VM."
# Create a VM configuration.
$vmConfig = New-AzVMConfig `
-VMName 'myVmNva' `
-VMSize Standard_DS2 | `
Set-AzVMOperatingSystem -Windows `
-ComputerName 'myVmNva' `
-Credential $cred | `
Set-AzVMSourceImage `
-PublisherName MicrosoftWindowsServer `
-Offer WindowsServer `
-Skus 2016-Datacenter `
-Version latest | `
Add-AzVMNetworkInterface -Id $nic.Id
Crie a VM usando a configuração de VM com New-AzVM. O exemplo a seguir cria uma VM nomeada myVmNva.
$vmNva = New-AzVM `
-ResourceGroupName myResourceGroup `
-Location EastUS `
-VM $vmConfig `
-AsJob
A opção -AsJob
cria a VM em segundo plano, para que você possa prosseguir para a próxima etapa.
Criar máquinas virtuais
Crie duas VMs na rede virtual para que seja possível validar esse tráfego da sub-rede Pública roteada para a sub-rede Privada por meio da solução de virtualização de rede em uma etapa posterior.
Crie uma VM na sub-rede Pública com New-AzVM. O exemplo a seguir cria uma VM nomeada myVmPublic na sub-rede Pública da rede virtual myVirtualNetwork.
New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Location "East US" `
-VirtualNetworkName "myVirtualNetwork" `
-SubnetName "Public" `
-ImageName "Win2016Datacenter" `
-Name "myVmPublic" `
-AsJob
Crie uma VM na sub-rede Privada.
New-AzVm `
-ResourceGroupName "myResourceGroup" `
-Location "East US" `
-VirtualNetworkName "myVirtualNetwork" `
-SubnetName "Private" `
-ImageName "Win2016Datacenter" `
-Name "myVmPrivate"
A VM demora alguns minutos para criar. Não continue com a próxima etapa até que a VM seja criada e o Azure retorne a saída ao PowerShell.
Rotear o tráfego por meio de uma NVA
Use Get-AzPublicIpAddress para retornar o endereço IP público da VM myVmPrivate. O exemplo a seguir retorna o endereço IP público da VM myVmPrivate:
Get-AzPublicIpAddress `
-Name myVmPrivate `
-ResourceGroupName myResourceGroup `
| Select IpAddress
Use o comando a seguir para criar uma sessão de área de trabalho remota com a VM myVmPrivate do seu computador local. Substitua <publicIpAddress>
pelo o endereço IP retornado do comando anterior.
mstsc /v:<publicIpAddress>
Abra o arquivo RDP baixado. Se solicitado, selecione Conectar.
Insira o nome de usuário e senha especificados ao criar a VM (talvez seja necessário selecionar Mais escolhas, em seguida, Usar uma conta diferente, para especificar as credenciais inseridas ao criar a VM) e selecione OK. Você pode receber um aviso do certificado durante o processo de logon. Selecione Sim para prosseguir com a conexão.
Em uma etapa posterior, o comando tracert.exe
será utilizado para testar o roteamento. O Tracert usa o protocolo ICMP, que é negado por meio do Firewall do Windows. Habilite o ICMP pelo firewall do Windows inserindo o seguinte comando do PowerShell na VM myVmPrivate:
New-NetFirewallRule -DisplayName "Allow ICMPv4-In" -Protocol ICMPv4
Embora o rastreamento de rota seja utilizado para testar o roteamento neste artigo, não é recomendável o ICMP através do Firewall do Windows para implantações de produção.
Você habilitou o encaminhamento de IP no Azure para a interface de rede da VM em Habilitar encaminhamento de IP. Dentro da VM, o sistema operacional, ou um aplicativo em execução na VM, também pode ser capaz de encaminhar o tráfego. Habilite o encaminhamento de IP no sistema operacional do myVmNva.
Em um prompt de comando na VM myVmPrivate, a área de trabalho remota para a myVmNva:
mstsc /v:myvmnva
Para habilitar o encaminhamento de IP dentro do sistema operacional, insira o seguinte comando no PowerShell da VM myVmNva:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters -Name IpEnableRouter -Value 1
Reinicie a VM myVmNva, que também desconecta a sessão da área de trabalho remota.
Ainda conectado à VM myVmPrivate, crie uma sessão da área de trabalho remota para a VM myVmPublic após a reinicialização da VM myVmNva:
mstsc /v:myVmPublic
Habilite o ICMP pelo firewall do Windows inserindo o seguinte comando do PowerShell na VM myVmPublic:
New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4
Para testar o roteamento do tráfego para a VM myVmPrivate da VM myVmPublic, insira o seguinte comando do PowerShell na VM myVmPublic:
tracert myVmPrivate
A resposta é semelhante ao seguinte exemplo:
Tracing route to myVmPrivate.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.1.4]
over a maximum of 30 hops:
1 <1 ms * 1 ms 10.0.2.4
2 1 ms 1 ms 1 ms 10.0.1.4
Trace complete.
Você pode ver que o primeiro salto é 10.0.2.4, que é o endereço IP privado da NVA. O segundo salto é 10.0.1.4, o endereço IP privado da VM myVmPrivate. A rota adicionada à tabela de rotas myRouteTablePublic e associada à sub-rede Pública fez o Azure encaminhar o tráfego através de NVA, em vez de diretamente para a sub-rede Privada.
Feche a sessão da área de trabalho remota para a VM myVmPublic, que ainda mantém você ainda conectado à VM myVmPrivate.
Para testar o roteamento do tráfego para a VM myVmPublic da VM myVmPrivate, insira o seguinte comando de um prompt de comando na VM myVmPrivate:
tracert myVmPublic
A resposta é semelhante ao seguinte exemplo:
Tracing route to myVmPublic.vpgub4nqnocezhjgurw44dnxrc.bx.internal.cloudapp.net [10.0.0.4]
over a maximum of 30 hops:
1 1 ms 1 ms 1 ms 10.0.0.4
Trace complete.
Você pode ver que o tráfego é roteado diretamente da VM myVmPrivate para a VM myVmPublic. Por padrão, o Azure roteia o tráfego diretamente entre sub-redes.
Feche a sessão da área de trabalho remota para a VM myVmPrivate.
Limpar os recursos
Quando não for mais necessário, use Remove-AzResourcegroup para remover o grupo de recursos e todos os recursos que ele contém.
Remove-AzResourceGroup -Name myResourceGroup -Force
Próximas etapas
Neste artigo, você criou uma tabela de rotas e associou-a a uma sub-rede. Você criou uma solução de virtualização de rede simples que roteou o tráfego de uma sub-rede pública para uma sub-rede privada. Implante uma variedade de soluções de virtualização de rede pré-configurados que executam funções de rede, como firewall e otimização de WAN do Azure Marketplace. Para saber mais sobre roteamento, consulte Visão geral de roteamento e Gerenciar uma tabela de rotas.
Embora seja possível implantar muitos recursos do Azure dentro de uma rede virtual, os recursos para alguns serviços PaaS do Azure não podem ser implantados em uma rede virtual. Ainda assim, é possível restringir acesso aos recursos de alguns serviços PaaS do Azure somente para tráfego de uma sub-rede de rede virtual. Para saber como, veja Restringir o acesso à rede para recursos PaaS.