Pode configurar uma ligação de túnel VPN clássica entre um site no local e Google Cloud de modo que os endereços IP de origem e de destino sejam endereços IP externos (não RFC 1918). Por exemplo, pode configurar uma ligação VPN clássica a um site remoto de modo que os intervalos de endereços IP no local não entrem em conflito com o endereço IP da VM Google Cloud .
Neste tutorial, vai usar um Google Cloud projeto, a Google Cloud consola, uma instância de máquina virtual (VM), a VPN clássica e alguns comandos do Linux. Para testar a ligação, crie uma nova instância de VM para enviar e receber tráfego entre a VM e um ponto remoto.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Na estação de trabalho,
instale a ferramenta de linha de comandos
gcloud
. - Configure a ferramenta de linha de comandos
gcloud
para usar o seu projeto. No comando seguinte, substituaPROJECT_ID
pelo ID do seu projeto:gcloud config set project PROJECT_ID
- Certifique-se de que as sub-redes no local estão ligadas ao gateway de VPN no local.
- Siga as instruções em Configurar o gateway de VPN de intercâmbio para configurar o gateway de VPN de intercâmbio entre Google Cloud e o seu gateway de VPN no local.
- Um endereço IP regional usado por instâncias de VM com uma ou mais interfaces de rede ou por equilibradores de carga regionais
- Um endereço IP global usado para balanceadores de carga globais
Aceda à página Reserve um endereço estático.
Escolha um nome para a nova morada.
Especifique se é um endereço IPv4 ou IPv6. Os endereços IPv6 só podem ser globais e só podem ser usados com equilibradores de carga globais.
Especifique se este endereço IP é regional ou global. Se estiver a reservar um endereço IP estático para uma instância ou para um equilibrador de carga regional, escolha Regional. Se estiver a reservar um endereço IP estático para um balanceador de carga global, escolha Global.
Se for um endereço IP regional, selecione a região na qual quer criar o endereço.
Opcional: selecione um recurso para anexar ao endereço IP.
Clique em Reservar para reservar o endereço IP.
ADDRESS_NAME
: o nome desta morada.REGION
: a região na qual reservar esta morada. Esta região deve ser a mesma região que o recurso ao qual o endereço IP está atribuído. Todos os endereços IP regionais são IPv4.ADDRESS_NAME
: o nome da moradaREGION
: o nome da região para este pedidoPROJECT_ID
: o ID do projeto para este pedido- Aceda à página Instâncias de VM.
Aceder a instâncias de VM - Clique em Criar instância.
- Em Disco de arranque, certifique-se de que selecionou uma imagem do Linux; por exemplo, o Debian GNU/Linux.
- Clique em Trabalhar em rede, discos, segurança, gestão, arrendamento único
- Clique em Rede.
- Para o encaminhamento de IP, selecione Ativar.
- Especifique outros parâmetros de instância.
- Clique em Criar.
- PROJECT_ID: o ID do projeto onde a sua instância é criada.
- ZONE: a zona onde a instância é criada. Google Cloud
As rotas estáticas não podem ter intervalos de destino que correspondam ou sejam mais específicos do que os intervalos de destino usados por qualquer rota de sub-rede na sua rede VPC.
- Quando usa o intercâmbio da rede da VPC para ligar duas redes da VPC, as rotas estáticas numa rede não podem ter destinos correspondentes ou mais específicos do que as rotas de sub-rede em ambas as redes. Google Cloud rejeita as rotas estáticas que entrariam em conflito com as rotas de sub-rede desta forma.
Para evitar conflitos quando usar uma rede VPC no modo automático, não crie rotas estáticas cujos destinos se enquadrem em
10.128.0.0/9
. Reveja os intervalos IPv4 do modo automático para obter detalhes.Os destinos de rotas estáticas não podem sobrepor-se a nenhum intervalo atribuído interno.
Certifique-se de que conhece as instâncias como saltos seguintes antes de criar uma rota estática personalizada que use uma VM como salto seguinte.O Google Cloud só valida que existe uma VM no momento em que cria a rota se escolher uma instância de salto seguinte. Google Cloud
Se criar uma rota com uma etiqueta de rede, apenas as VMs com essa etiqueta recebem essa rota. No entanto, as VMs etiquetadas continuam a receber todas as rotas que não têm uma etiqueta de rede.
- Aceda à página Routes na Google Cloud consola.
Aceda a Trajetos - Clique em Criar trajeto.
- Especifique um Nome e uma Descrição para a rota.
- Selecione uma Rede existente onde o trajeto se aplica.
- Especifique um Intervalo de IPs de destino para definir o destino da rota.
- Especifique uma Prioridade para o trajeto. Uma prioridade só é usada para determinar a ordem de encaminhamento se os trajetos tiverem destinos equivalentes. Consulte Parâmetros de trajeto para ver mais detalhes.
- Para tornar a rota aplicável apenas a instâncias com etiquetas de rede correspondentes, especifique-as no campo Etiquetas de instância. Deixe o campo em branco para tornar a rota aplicável a todas as instâncias na rede ou se selecionar um balanceador de carga de TCP/UDP interno como o próximo salto da rota. As etiquetas de rede não se aplicam a trajetos que tenham um balanceador de carga de TCP/UDP interno como salto seguinte.
Selecione um Salto seguinte para o trajeto:
- A opção Especificar uma instância permite-lhe selecionar uma instância por nome. O tráfego é encaminhado para essa instância (ou qualquer instância de substituição com o mesmo nome na mesma zona), mesmo que o respetivo endereço IP seja alterado.
- A opção Especificar endereço IP permite-lhe introduzir um endereço IP de uma instância existente na rede VPC. Consulte o artigo Saltos seguintes e funcionalidades para ver restrições importantes sobre endereços IP de saltos seguintes válidos.
Clique em Criar.
- ROUTE_NAME é o nome do trajeto.
- DESTINATION_RANGE representa os endereços IP de destino aos quais esta rota se aplica. O destino mais amplo possível é
0.0.0.0/0
. - NETWORK é o nome da rede VPC que vai conter a rota.
- NEXT_HOP_SPECIFICATION representa o próximo salto para a rota estática. Tem de especificar apenas um dos seguintes elementos como um salto seguinte. Para mais
informações sobre os diferentes tipos de saltos seguintes, consulte Saltos seguintes e
funcionalidades.
--next-hop-instance=INSTANCE_NAME
e--next-hop-instance-zone=ZONE
: use este próximo salto para direcionar o tráfego para uma instância de VM existente por nome e zona. O tráfego é enviado para o endereço IP interno principal da interface de rede da VM localizado na mesma rede que a rota.--next-hop-address=ADDRESS
: use este próximo salto para direcionar o tráfego para o endereço IP de uma instância de VM existente.
- PROJECT_ID é o ID do projeto onde a sua rota é criada.
- DESTINATION_RANGE representa os endereços IP de destino aos quais esta rota se aplica. O destino mais amplo possível é
0.0.0.0/0
. - ROUTE_NAME um nome para o trajeto.
- NETWORK_NAME é o nome da rede VPC que vai conter a rota.
- O VALUE para o NEXT_HOP_SPECIFICATION representa o salto seguinte para a rota estática. Para
NEXT_HOP_SPECIFICATION, tem de especificar apenas um dos seguintes campos de salto seguinte:
nextHopIp
enextHopInstance
. Para mais informações acerca dos diferentes tipos de saltos seguintes e funcionalidades, consulte Saltos seguintes e funcionalidades. Na Google Cloud consola, aceda à página VPN.
Se estiver a criar um gateway pela primeira vez, clique em Criar ligação VPN.
Selecione o assistente de configuração da VPN.
Selecione o botão de opção VPN clássica.
Clique em Continuar.
Na página Criar uma ligação VPN, especifique as seguintes definições do gateway:
- Nome: o nome do gateway de VPN. Não é possível alterar o nome posteriormente.
- Descrição: opcionalmente, adicione uma descrição.
- Rede: especifique uma rede de VPC existente na qual criar o gateway de VPN e o túnel.
- Região: os gateways e os túneis da Cloud VPN são objetos regionais. Escolha uma Google Cloud região onde o gateway vai estar localizado. As instâncias e outros recursos em diferentes regiões podem usar o túnel para tráfego de saída, sujeito à ordem das rotas. Para o melhor desempenho, localize o gateway e o túnel na mesma região que os recursos Google Cloud relevantes.
- Endereço IP: crie ou escolha um endereço IP externo regional existente.
Para o novo túnel, na secção Túneis, especifique as seguintes definições:
- Nome: o nome do túnel de VPN. Não é possível alterar o nome posteriormente.
- Descrição: opcionalmente, escreva uma descrição.
- Endereço IP do par remoto: especifique o endereço IP externo do gateway de VPN do par.
- Versão IKE: escolha a versão IKE adequada suportada pelo gateway de VPN de intercâmbio. O IKEv2 é preferível se for suportado pelo dispositivo de par.
- Chave pré-partilhada IKE: indique uma chave pré-partilhada (segredo partilhado) usada para autenticação. A chave pré-partilhada para o túnel da Cloud VPN tem de corresponder à usada quando configura o túnel correspondente no gateway de VPN de pares. Para gerar uma chave partilhada previamente criptograficamente forte, siga estas instruções.
- Selecionar túneis baseados em políticas
- Em Opções de encaminhamento, selecione Com base em políticas.
- Em Intervalos de IP de rede remota, indique uma lista separada por espaços dos intervalos de endereços IP usados pelo tráfego local na configuração da VPN no local.
- No campo Intervalos de IP locais, introduza o intervalo de endereços IP externos
que criou anteriormente com um prefixo de sub-rede
/32
. - Clique em Concluído.
- Clique em Criar.
PROJECT_ID
: o ID do seu projetoNETWORK
: o nome da sua Google Cloud redeREGION
: a Google Cloud região onde cria o gateway e o túnelGW_NAME
: o nome do gatewayGW_IP_NAME
: um nome para o endereço IP externo usado pelo gateway- Opcional:
--target-vpn-gateway-region
é a região em que o gateway de VPN clássica vai operar. O valor deve ser igual a--region
. Se não for especificado, esta opção é definida automaticamente. Esta opção substitui o valor da propriedade de computação/região predefinido para esta invocação de comando. Crie o objeto do gateway de VPN de destino:
gcloud compute target-vpn-gateways create GW_NAME \ --network=NETWORK \ --region=REGION \ --project=PROJECT_ID
Reserve um endereço IP externo (estático) regional:
gcloud compute addresses create GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID
Tome nota do endereço IP (para o poder usar quando configurar o gateway de VPN de pares):
gcloud compute addresses describe GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID \ --format='flattened(address)'
Crie três regras de encaminhamento. Estas regras indicam ao Google Cloud para enviar tráfego ESP (IPsec), UDP 500 e UDP 4500 para o gateway:
gcloud compute forwarding-rules create fr-GW_NAME-esp \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=ESP \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=4500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Nos comandos, substitua o seguinte:
TUNNEL_NAME
: um nome para o túnelON_PREM_IP
: o endereço IP externo do gateway de VPN de paresIKE_VERS
:1
para IKEv1 ou2
para IKEv2SHARED_SECRET
: a sua chave pré-partilhada (segredo partilhado). A chave pré-partilhada para o túnel da Cloud VPN tem de corresponder à usada quando configura o túnel correspondente no gateway de VPN de pares. Para gerar uma chave partilhada previamente criptograficamente forte, siga estas instruções.
Para a VPN baseada em políticas:
LOCAL_IP_RANGES
: uma lista delimitada por vírgulas dos Google Cloud intervalos de endereços IP. Por exemplo, pode fornecer o bloco CIDR para cada sub-rede numa rede VPC. Este é o lado esquerdo da perspetiva da Cloud VPN.REMOTE_IP_RANGES
: uma lista delimitada por vírgulas dos intervalos de endereços IP da rede paritária. Este é o lado direito na perspetiva da VPN na nuvem.
Para configurar um túnel de VPN baseado em políticas, execute o seguinte comando:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=LOCAL_IP_RANGES \ --remote-traffic-selector=REMOTE_IP_RANGES \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Para a VPN baseada em rotas, os seletores de tráfego locais e remotos são
0.0.0.0/0
conforme definido nas opções de encaminhamento e nos seletores de tráfego.Para configurar um túnel VPN baseado em rotas, execute o seguinte comando:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=0.0.0.0/0 \ --remote-traffic-selector=0.0.0.0/0 \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Crie uma rota estática para cada intervalo de endereços IP remotos que especificou na opção
--remote-traffic-selector
no passo anterior. Repita este comando para cada intervalo de endereços IP remotos. SubstituaROUTE_NAME
por um nome exclusivo para a rota e substituaREMOTE_IP_RANGE
pelo intervalo de endereços IP remotos adequado.gcloud compute routes create ROUTE_NAME \ --destination-range=REMOTE_IP_RANGE \ --next-hop-vpn-tunnel=TUNNEL_NAME \ --network=NETWORK \ --next-hop-vpn-tunnel-region=REGION \ --project=PROJECT_ID
- Na Google Cloud consola, aceda à página Instâncias de VM.
- Na lista de instâncias de máquinas virtuais, encontre a VM que criou anteriormente e clique em SSH.
Crie um alias de endereço IP para a VM com o endereço IP público que reservou anteriormente. Vai poder receber tráfego para a VM depois de concluir este passo.
Execute o seguinte comando:
sudo ip address add EXTERNAL_IP_ADDRESS/32 dev eth0
Substitua
EXTERNAL_IP_ADDRESS
pelo endereço IP público que reservou anteriormente.- Na Google Cloud consola, aceda à página Instâncias de VM.
- Na lista de instâncias de máquinas virtuais, encontre a VM que criou anteriormente e clique em SSH.
Execute o seguinte comando para testar se consegue enviar um ping para um endereço IP externo:
$ ping -I EXTERNAL_IP_ADDRESS REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) from EXTERNAL_IP_ADDRESS : 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=4.46 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.11 ms
Substitua
REMOTE_PEER_IP_ADDRESS
por um endereço IP da sub-rede do par remoto.Para permitir que a VM use automaticamente esta interface quando enviar tráfego para o túnel VPN, pode criar uma regra
iptables
.Por exemplo, execute o seguinte comando para criar uma regra:
iptables
$ sudo iptables -t nat -A POSTROUTING --destination REMOTE_PEER_SUBNET -j SNAT --to-source EXTERNAL_IP_ADDRESS
Substitua
REMOTE_PEER_SUBNET
pela sub-rede do par remoto.Execute os seguintes comandos para testar o túnel da VPN na nuvem:
$ ping REMOTE_PEER_IP_ADDRESS PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data. 64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=3.48 ms 64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.42 ms
$ ping EXTERNAL_IP_ADDRESS PING 35.195.72.19 (35.195.72.19) 56(84) bytes of data. 64 bytes from 35.195.72.19: icmp_seq=1 ttl=64 time=0.033 ms 64 bytes from 35.195.72.19: icmp_seq=2 ttl=64 time=0.062 ms
Reserve um novo endereço IP externo estático
No Compute Engine, cada instância de VM pode ter várias interfaces de rede. Cada interface pode ter endereços IP internos e externos. As regras de encaminhamento podem ter endereços IP externos para o balanceamento de carga externo ou endereços internos para o balanceamento de carga interno. Para saber mais sobre endereços IP estáticos, consulte o artigo Endereços IP externos.
Um endereço IP externo estático é o endereço IP reservado para o seu projeto até decidir libertá-lo. Se tiver um endereço IP no qual os seus clientes confiam para aceder ao seu serviço, pode reservar esse endereço IP para que apenas o seu projeto o possa usar. Também pode promover um endereço IP externo efémero para um endereço IP externo estático.
Pode reservar dois tipos de endereços IP externos:
Para ver uma lista de balanceadores de carga regionais e globais, consulte o resumo dos Google Cloud balanceadores de carga.
Reserve um endereço IP externo estático através da CLI Google Cloud ou da API. Depois de reservar o endereço IP, atribua-o a uma nova instância enquanto cria a nova instância ou atribua o endereço IP a uma instância existente.
Consola
gcloud
Para reservar um endereço IP externo estático através do gcloud compute
, use o comando compute addresses create
.
Para reservar um endereço IP global, use os campos --global
e --ip-version
. Para o campo --ip-version
, especifique IPV4
ou IPV6
. Os endereços IPv6 só podem ser globais e só podem ser usados com balanceadores de carga globais.
Substitua ADDRESS_NAME
pelo nome desta morada.
gcloud compute addresses create ADDRESS_NAME \ --global \ --ip-version [IPV4 | IPV6]
Para reservar um endereço IP regional, use o campo --region
:
gcloud compute addresses create ADDRESS_NAME \ --region=REGION
Substitua o seguinte:
Use o comando compute addresses describe
para ver o resultado:
gcloud compute addresses describe ADDRESS_NAME
API
Para criar um endereço IPv4 regional, chame o método
regional addresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
O corpo do pedido deve conter o seguinte:
{ "name": "ADDRESS_NAME" }
Substitua o seguinte:
Para endereços IPv4 estáticos globais, chame o método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
O corpo do pedido deve conter o seguinte:
{ "name": "ADDRESS_NAME" }
Para endereços IPv6 estáticos globais, chame o método globalAddresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
O corpo do pedido deve conter o seguinte:
{ "name": "ADDRESS_NAME", "ipVersion": "IPV6" }
Use o método addresses.get
para ver o resultado.
Terraform
Pode usar um módulo do Terraform para criar um endereço IP externo.
No exemplo seguinte, os argumentos do Terraform têm valores de exemplo que pode alterar. O exemplo cria três endereços IPv4 externos regionais.
O exemplo seguinte cria um endereço IPv6 externo global:
Ative o encaminhamento de IP
Pode ativar o encaminhamento de IP quando cria uma VM ou
atualizando a propriedade da instância numa VM existente.canIpForward
O encaminhamento de IP está ativado ao nível da VM e aplica-se a todas as interfaces associadas à VM.
Ative o encaminhamento de IP quando criar uma VM
Estas instruções descrevem como ativar o encaminhamento de IP quando cria uma VM. Se precisar de ativar o encaminhamento de IP numa VM existente, atualize a canIpForward
propriedade da instância.
Consola
gcloud
Quando cria uma instância com gcloud
, adicione a flag --can-ip-forward
ao comando:
gcloud compute instances create ... --can-ip-forward
API
Quando criar uma instância, use o campo canIpForward
para ativar o encaminhamento de IP.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "canIpForward": true, ...other fields }
Substitua o seguinte:
Para mais informações, consulte o método
instances.insert
.
Terraform
Pode usar o recurso Terraform para criar uma instância de VM com o encaminhamento de IP ativado.
Neste exemplo, os argumentos do Terraform têm valores atribuídos que pode alterar.
Crie uma rota para o tráfego de entrada
Siga estes passos para criar uma nova rota estática. Antes de o fazer, certifique-se de que conhece o seguinte:
Consola
gcloud
Crie uma nova rota estática:
gcloud compute routes create ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --network=NETWORK \ NEXT_HOP_SPECIFICATION
Substitua os marcadores de posição:
Para que a rota estática se aplique apenas a VMs selecionadas por etiqueta de rede, adicione a flag --tags
e especifique uma ou mais etiquetas de rede. Para mais informações sobre como as etiquetas de rede e as rotas estáticas funcionam em conjunto, consulte o artigo Rotas aplicáveis. Pode usar etiquetas
com qualquer rota estática.
Consulte a documentação do SDK
para ver informações adicionais acerca da sintaxe gcloud
.
API
Crie uma nova rota estática.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes { "destRange": "DESTINATION_RANGE", "name": "ROUTE_NAME", "network": "NETWORK_NAME", "priority": PRIORITY, "NEXT_HOP_SPECIFICATION": VALUE }
Substitua os marcadores de posição:
Para mais informações, consulte o método
routes.insert
.
Terraform
Pode criar uma rota estática através de um módulo do Terraform.
Esta rota estática cria uma rota predefinida para a Internet.
Crie uma VPN clássica com encaminhamento estático
O assistente de configuração da VPN é a única Google Cloud opção da consola para criar um gateway de VPN clássica. O assistente inclui todos os passos de configuração necessários para criar um gateway de VPN clássico, túneis, sessões de BGP e um recurso de gateway de VPN externo. No entanto, pode concluir determinados passos mais tarde, como a configuração de sessões BGP.
Consola
Configure o gateway
Configure túneis
gcloud
Para criar um gateway de VPN do Google Cloud, conclua a sequência de comandos seguinte. Nos comandos, substitua o seguinte:
Configure os recursos do gateway
Crie o túnel do Cloud VPN
Configure a VM para enviar e receber tráfego
Para concluir a configuração e testar se pode enviar e receber tráfego da VM, siga estes passos: