Here’s a case where customer wants to create BGP over GRE tunnels between Palo Alto Firewall and Aviatrix Transit Gateways. Palo Alto have some articles but not very clear, this blog will serve as a reminder how this is done. Credit to Pranay for helping out the BGP peering part on Palo.
Continue readingCategory Archives: palo_alto
Bootstrap Palo Alto with Aviatrix FireNet with AWS GWLB enabled
Recently I’ve come to figure out how to bootstrap Palo Alto firewall while integrated with AWS GWLB and Aviatrix FireNet, here are my learning journal for future references:
Validated environment:
- Aviatrix Controller version: UserConnect-6.6.5404
- Palo Alto Networks VM-Series Next-Generation Firewall (BYOL) 10.1.3
I’ve used following Terraform code to create an Aviatrix FireNet egress only transit
module "transit_firenet_egress" {
source = "terraform-aviatrix-modules/aws-transit-firenet/aviatrix"
version = "5.0.0"
name = "egress"
cidr = "10.1.0.0/20"
region = var.region
account = var.account
firewall_image = "Palo Alto Networks VM-Series Next-Generation Firewall (BYOL)"
inspection_enabled = false
egress_enabled = true
enable_egress_transit_firenet = true
single_az_ha = false
use_gwlb = true
firewall_image_version = "10.1.3"
}
Then followed steps in this article:
- Step 3 can be skipped, as no need to active license
- Step 4 can be skipped, as Firewall is configured as one-armed mode, there’s no WAN port
- Step 6 can be skipped, as again Firewall is one-armed mode, there’s no need for route table changes
After the configuration and confirmed Firewall worked as expected. I’ve saved the configuration as bootstrap.xml
Then I’ve followed this article:
- Created S3 bucket
- Created IAM Role bootstrap-VM-S3-role and Policy bootstrap-VM-S3-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
- Create following folder structure in S3 bucket
bootstrap-bucket/
config/
init-cfg.txt
bootstrap.xml
content/
license/
software/
- Uploaded bootstrap.xml and init-cfg.txt
- Modified Terraform code, so it looks like
module "transit_firenet_egress" {
source = "terraform-aviatrix-modules/aws-transit-firenet/aviatrix"
version = "5.0.0"
name = "egress"
cidr = "10.1.0.0/20"
region = var.region
account = var.account
firewall_image = "Palo Alto Networks VM-Series Next-Generation Firewall (BYOL)"
inspection_enabled = false
egress_enabled = true
enable_egress_transit_firenet = true
single_az_ha = false
use_gwlb = true
firewall_image_version = "10.1.3"
bootstrap_bucket_name_1 = "<s3-buck-name>"
iam_role_1 = "bootstrap-VM-S3-role"
}
Palo CLI command to check if bootstrap worked:
show system bootstrap status
In my case, the bootstrap appeared to be working
Additional command to troubleshoot bootstrap, or you can watch console session messages
debug logview component bts_details
However when tried to pass traffic through firewall, even when policy is wide open, package capture still shows traffic get dropped when sending from GWLB endpoints
After comparing with a working manually configured firewall with an bootstrapped firewall, here’s the observations:
- When bootstrap.xml loaded via bootstrap, and export the configuration right away, only public-key got modified, which makes sense as new firewall gets new ssh keys
- I’ve also learned that when there’s a conflict setting between init-cfg.txt and bootstrap.xml, the setting in init-cfg.txt wins. Since we are not using Panorama at this point, all values of the init-cfg.txt should be just empty like this:
type=
ip-address=
default-gateway=
netmask=
ipv6-address=
ipv6-default-gateway=
hostname=
vm-auth-key=
panorama-server=
panorama-server-2=
tplname=
dgname=
dns-primary=
dns-secondary=
op-command-modes=
dhcp-send-hostname=
dhcp-send-client-id=
dhcp-accept-server-hostname=
dhcp-accept-server-domain=
- We also found out when using bootstrap with terraform, the GWLB isn’t enabled, CLI command to check:
show plugins vm_series aws gwlb
- The management interface however has been swapped as expected
- Since we do need to use GWLB to pass traffic to the firewall, tried following command:
request plugins vm_series aws gwlb inspect enable yes
Now the GWLB is enabled, and traffic is passing!
We modified init-cfg.txt to also enable GWLB during bootstrapping
type=
ip-address=
default-gateway=
netmask=
ipv6-address=
ipv6-default-gateway=
hostname=
vm-auth-key=
panorama-server=
panorama-server-2=
tplname=
dgname=
dns-primary=
dns-secondary=
op-command-modes=
dhcp-send-hostname=
dhcp-send-client-id=
dhcp-accept-server-hostname=
dhcp-accept-server-domain=
plugin-op-commands=aws-gwlb-inspect:enable
Now everything is working as expected, reference:
Terraform code to create S3 bucket, role/ policy and sample bootstrap.xml and init-cfg.txt:
https://github.com/jye-aviatrix/terraform-aviatrix-aws-gwlb-palo-alto-10-bootstrap