Instalando PfSense no Google Cloud
O PfSense é um firewall poderoso, com muitos softwares embarcados, principalmente se você quer criar VPNs, fazer servidores proxy, gerenciar um servidor Radius, fazer monitoramento de rede, etc.
Na Google Cloud é permitido fazer upload de imagens customizadas e instalá-las em máquinas virtuais então é perfeitamente possível instalar o pfSense Community Edition por lá, entretanto é necessário fazer algumas "manhas".
E na AWS (Amazon Web Services)?
Na AWS também é possível fazer upload de imagens customizadas, entretanto ainda não vi nenhum tutorial que auxilie nesse sentido. A Netgate, desenvolvedora do pfSense, dispinibiliza uma imagem do pfSense plus (versão paga) no AWS Marketplace.
Continuando, nos próximos tópicos conto o passo a passo para instalá-lo na Google Cloud.
Baixando o pfSense
Aqui você pode decidir dois caminhos. Fazer as manipulações necessárias em uma máquina Linux (Compute Engine) na própria Google Cloud ou usar uma máquina Linux local, fica a seu critério.
Baixe o PfSense (de preferência a última versão) com Architecture AMD64 > Installer USB Memstick Installer > Console Serial, disponível em https://www.pfsense.org/download/.
O console serial é necessário porque não é preciso acessar a máquina via SSH.

Anote o link contido no botão de download, provavelmente será algo assim:
https://atxfiles.netgate.com/mirror/downloads/pfSense-CE-memstick-serial-2.6.0-RELEASE-amd64.img.gz
Baixe a imagem usando o link encontrado
curl -O https://atxfiles.netgate.com/mirror/downloads/pfSense-CE-memstick-serial-2.6.0-RELEASE-amd64.img.gz
Fazendo ajustes na imagem
Você pode baixar a imagem já descompactando ela diretamente em um novo arquivo chamado disk.raw
curl https://atxfiles.netgate.com/mirror/downloads/pfSense-CE-memstick-serial-2.6.0-RELEASE-amd64.img.gz | gunzip > disk.raw
Agora coloque a imagem em um tar.gz, o Google Cloud requer isso para identificar a imagem corretamente:
tar -Sczf pfSense-CE-memstick-serial-2.6.0-RELEASE-amd64.img.tar.gz disk.raw
Fazendo upload da imagem em um bucket na Cloud Storage
Faça upload da imagem para o seu bucket na Cloud Storage.
Crie um bucket entrando em Storage > Browser > Clique no seu bucket > Upload files
Ou faça isso diretamente da máquina virtual:
gsutil cp pfSense-CE-memstick-serial-2.6.0-RELEASE-amd64.img.tar.gz gs://NOME_DO_SEU_BUCKET
Criando imagem e fazendo upload em uma máquina virtual temporária (no Compute Engine)
Vamos criar uma máquina virtual Linux Debian Compute Engine. Essa máquina virtual irá apenas fazer download da imagem do website do PfSense, convertê-la num formato que o google cloud entenda e enviá-la para o bucket.
Na tela de criação New VM Instance
Boot disk: Debian GNU.
Identity and API access: Set access for each API.
Em Storage escolha Read Write.
Crie a instância.
Acesse a máquina por SSH.
Baixe o PfSense (de preferência a última versão, arquitetura AMD64, USB Memstick Installer, Serial, disponível em https://www.pfsense.org/download/). Descompacte a imagem do gz (gunzip) e mude seu nome para disk.raw
[code]curl <a rel="noreferrer noopener" href="https://nyifiles.pfsense.org/mirror/downloads/pfSense-CE-memstick-2.4.4-RELEASE-p1-amd64.img.gz" target="_blank">https://nyifiles.pfsense.org/mirror/downloads/pfSense-CE-memstick-2.4.4-RELEASE-p1-amd64.img.gz</a> | gunzip > disk.raw[/code]
Coloque a imagem em um .tar.gz (o Google Cloud requer isso para carregar a imagem de instalação):
[code]tar -Sczf pfSense-CE-memstick-2.4.4-RELEASE-p1-amd64.img.tar.gz disk.raw[/code]
Agora precisamos enviar a imagem processada para o bucket da Google Cloud. Para que a máquina virtual consiga escrever no bucket é preciso fazer uma pequena configuração.
Descubra a service account da máquina virtual, deve ser algo tipo:
[email protected]
Entre em Storage > Browser > Clique no seu bucket > Permissions > Add members
Adicione a permissão Storage Legacy Bucket Writer para a service account da máquina virtual.
Acesse a máquina por SSH e copie a imagem do PfSense para seu bucket:
[code]<br>gsutil cp pfSense-CE-memstick-2.4.4-RELEASE-p1-amd64.img.tar.gz gs://SEU_BUCKET<br>[/code]
Criando um disco de instalação do PfSense
No Google Cloud Console navegue em Compute Engine > Images > CREATE IMAGE
Dê o nome
pfsense-ce-memstick-244-release-p1-amd64
à imagem.
Em Source faça o upload da imagem do seu Linux ou indique em que bucket a imagem está.
Criando a Máquina Virtual para o PfSense
Crie uma nova VM Instance para conter a instalação do seu PfSense.
Dê a instância o nome de pfsense-install-1
Disco de inicialização
Altere o disco de inicialização
Vá em Boot disk > Custom images e escolha a recém criada imagem do PfSense pfsense-ce-memstick-244-release-p1-amd64
Abra as opções avançadas de configuração em Management, security, disks, networking, sole tenancy > Disks > + Add new disk
Name: pfsense-244-clean-install
Source type: Blank disk
Size: 20GB
Pronto, pode criar a máquina virtual.
Em VM instances, clique na máquina recém criada.
Connect to serial console.
Gosto de usar o xterm (mas você pode usar outro de sua preferência).
Instale o PfSense e quando pedir para reiniciar, NÃO REINICIE! Pare a máquina, para criarmos um Snapshot do disco com o PfSense já instalado.
As configurações do PfSense
Partitioning: Auto (UFS)
Entire Disk
Partition Scheme: GPT
Pronto!
Criando um Snapshot do PfSense instalado
Acesse:
Compute Engine > Disks > pfsense-244-clean-install > CREATE SNAPSHOT
Pronto, sua snapshot estará criada e poderá usar toda vez que quiser criar uma nova máquina virtual com PfSense.
Criando uma VM a partir do snapshot do PfSense
Compute Engine > Create an instance >
Nova instância de VM
- Escolha o nome da máquina em Nome
Configuração da máquina
Uma máquina com 2 vCPU e 2GB de memória é suficiente para funcionar corretamente. Escolha processador virtual arquitetura x64 da Intel ou AMD.
Disco de inicialização
Aqui escolha IMAGENS PERSONALIZADAS, selecione o projeto onde a imagem ficou hospedada.
Clique em CONFIGURAÇÃO AVANÇADA e escolha um nome de dispositivo personalizado, de preferência o mesmo do nome da instância.
Rede
Adicione as tags de rede desejadas para permitir o tráfego.
Adicione o nome do host
Habilite o "Encaminhamento de IP" caso vá usar algum tipo de VPN (IPSec, OpenVPN, Tinc, WireGuard).
Interfaces de rede
Escolha a interface de rede a ser utilizada.
Atribua um IP externo estático
Finalize a instalação
Finalize a instalação.
Habilitando o console serial
Habilite o console serial na máquina virtual
gcloud compute instances add-metadata --project=seu-projeto --zone=sua-zona --metadata=serial-port-enable=1 sua-vm
Acesse a máquina pelo console serial
Atribua a única interface de rede para a interface WAN.
Entre no shell do pfSense selecionando a opção 8
Altere a MTU do pfSense para a mesma informada em sua VPC (1460 por padrão)
ifconfig vtnet0 mtu 1460
Acessando o pfSense pela web GUI
Crie uma regra no firewall da Google Cloud permitindo que o pfsense possa ser acessado pelo IP de seu computador.
Acesse o pfsense pelo endereço https://ip.fixo.do.pfsense/
Entre com o login admin e senha pfsense e finalize as configurações do passo a passo (setup wizard).
Deixe a interface WAN com DHCP
Altere a senha de administrador para algor mais forte
Altere a MTU do pfSense em Interfaces > WAN > MTU > 1460
Referencias
Artigo que usei como base para este post
https://blog.kylemanna.com/cloud/pfsense-on-google-cloud/