Hetzner Private Network + NAT
Private network with subnets, routes, and a NAT gateway server for egress-only fleets.
Verification
Static-verifiedPassed: validated and lint-clean (provider-schema-validated for AWS/Azure/GCP; Terraform-language lint elsewhere).
Conformance
- Static validation (fmt · validate · tflint)
- No applicable security policies for this provider
- Plan tests (mocked: validation rules · outputs)
Provenance
- SHA-256 checksum
- Cosign signature
Functional
- Live test pending (no cloud run yet)
Last verified 2026-06-28 · how we verify
Verify this download
cosign · sha-256Don't take our word for it. Every release is signed with cosign - check the bytes against our pinned public key before you trust them.
# 1. Our pinned public key - fetch once, trust out-of-band
curl -O https://www.iac-bazaar.com/cosign.pub
# 2. This module's Sigstore bundle
curl -o hetzner-private-network-1.0.0.sigstore.json \
https://www.iac-bazaar.com/api/artifacts/hetzner-private-network/signature
# 3. Verify the tarball you downloaded
cosign verify-blob \
--key cosign.pub \
--bundle hetzner-private-network-1.0.0.sigstore.json \
hetzner-private-network-1.0.0.tar.gz
# → Verified OK
# 4. (optional) confirm the checksum too
echo "2bc748f50756a9838c60e5f87d1f79abea5284ce33b5876eb7103c0821dbe375 hetzner-private-network-1.0.0.tar.gz" | sha256sum -cUse it from the registry
terraform · opentofumodule "private_network" {
source = "www.iac-bazaar.com/iac-bazaar/hetzner-private-network/hetzner"
version = "1.0.0"
}Paid module — needs a purchase (or a subscription that covers it) plus a registry token from /account/tokens. Full setup: registry docs.
Inputs & outputs
Create a free account to read this module's contract
The declared contract — every input name, type, default and description, plus every output — is shown to signed-in accounts, not to anonymous visitors.
A free account sees the contract of every Free module. This one is Professional, so its contract unlocks when you buy it.
Documentation
hetzner-private-network
Status: static-validated, live-test pending. Ships under live-test quarantine — validated with
tofu fmt,tofu validate, andtflint. Real apply/verify/destroy testing is pending a Hetzner Cloud sandbox account.
Private network for Hetzner Cloud with cloud subnets, egress routes, and a
self-managed NAT gateway so egress-only fleets can reach the internet
without holding a public IPv4. One module call gives you an RFC1918 network,
one or more cloud subnets, a hardened NAT gateway server, and the
0.0.0.0/0 route that funnels private servers' outbound traffic through it.
Works with Terraform and OpenTofu (>= 1.6), hcloud provider
>= 1.0, < 2.0.
Design & secure defaults
- Private by default. The network and its subnets carry no public exposure. The only resource with an internet-facing address is the (optional) NAT gateway, and it gets exactly one public IPv4.
- Deny-by-default gateway firewall. No inbound port is open on the NAT
gateway — not even SSH — until you allowlist
nat_gateway_ssh_source_ips. Only ICMP is allowed. Outbound stays open so MASQUERADE can work. - NAT is a pattern, not a managed service. Hetzner has no managed NAT
gateway. This module provisions a small server with a fixed private IP,
enables IPv4 forwarding, and installs a persistent
iptables MASQUERADErule via cloud-init. You operate and patch this server — keep SSH key access on it (nat_gateway_ssh_key_ids) and apply OS updates. It is a single instance, so it is also a single point of failure for egress; for HA you would front two gateways yourself. - Stable route target. The gateway's private IP is computed deterministically
(
cidrhost(subnet, nat_gateway_host_index)) and reused as the route gateway, so the egress route always points at the right host. A precondition rejects the network's reserved first IP. - One-flag delete protection across the network and the gateway server.
Egress-only servers you create elsewhere simply attach to one of these subnets
with ipv4_enabled = false; the network route does the rest.
Requirements
- Terraform or OpenTofu
>= 1.6 hetznercloud/hcloudprovider>= 1.0, < 2.0(private networks, subnets, routes andhcloud_server_network— latest recommended)
License
Commercial — LicenseRef-IaCBazaar-Commercial. See the IaC Bazaar terms.
Usage code & full reference unlock after purchase
The complete copy-paste usage, the full input/output reference, and operational notes ship with your licence - shown here and bundled in the download.
- Usage
- Inputs
- Outputs
- Notes
Related modules
Alibaba Cloud VPC Foundation
Multi-AZ VPC with vSwitches, NAT gateway, SNAT, security groups, and flow logs.
Azure Virtual Network (hub-ready)
Production VNet with subnets, NSGs, route tables, peering and optional NAT Gateway - the network backbone every Azure deployment starts with.
GCP VPC Network Foundation
Production VPC with subnets, secondary ranges, firewall rules, Cloud Router and Cloud NAT - the network base every GCP workload sits on.
IBM Cloud VPC Landing Zone (Lite)
VPC with subnets, public gateways, ACLs, and security groups following IBM SLZ patterns.
Linode VPC with Subnets
Isolated VPC network with labeled subnets ready for instances, LKE, and NodeBalancer backends.
OCI VCN (hub-ready network foundation)
Production VCN with public/private subnets, internet/NAT/service gateways, route tables, NSGs and IPv6 - the module every OCI tenancy starts with.