---
title: "Hetzner Cloud z bramą pfSense"
url: https://michalasobczak.pl/pl/posts/hetzner-cloud-with-pfsense-gateway.html
author: "Michał Sobczak"
description: "Zamiast dedykowanych serwerów Hetznera możesz użyć ich rozwiązań chmurowych w mniej wymagających scenariuszach. Pomysł polega na tym, by mieć jeden serwer dla pfSense, a drugi do zwykłego prywatnego użytku, ukryty za bramą."
published: 2025-02-12T09:08:47.000Z
updated: 2025-02-12T09:16:29.000Z
language: pl
categories: ["Technology"]
tags: ["Cloud", "Hetzner", "pfSense"]
license: CC BY-NC-ND 4.0 (https://creativecommons.org/licenses/by-nc-nd/4.0/)
---
# Hetzner Cloud z bramą pfSense

Zamiast dedykowanych serwerów Hetznera możesz użyć ich rozwiązań chmurowych w mniej wymagających scenariuszach. Pomysł polega na tym, by mieć jeden serwer dla pfSense, a drugi do zwykłego prywatnego użytku, ukryty za bramą. Będzie to nieco tańsze niż wynajem serwera dedykowanego, ponieważ CX22 kosztuje około 3–4 euro miesięcznie w porównaniu z co najmniej 50 euro za serwer dedykowany. W cenie jednego serwera dedykowanego możesz mieć do 10 wirtualnych serwerów w chmurze. Wybieraj chmurę dla „prostych” (a raczej nieskomplikowanych) rozwiązań, a serwery dedykowane dla znacznie bardziej złożonych konfiguracji z dużo większym zapotrzebowaniem na CPU i RAM.

Zakładam, że lokalnie używasz Ubuntu 22 lub 24.

## Konfiguracja początkowa

Najpierw zainstaluj brew. W przypadku brakujących pakietów pythona zainstaluj je z pakietów systemowych z prefiksem python-.

```text
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

Zainstaluj konfigurację powłoki:

```bash
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/USER/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
```

Następnie zainstaluj hcloud:

```bash
brew install hcloud
```

hcloud służy do zarządzania konfiguracją Hetznera z linii poleceń. Aby go używać, utwórz token użytkownika i utwórz kontekst.

## Tworzenie serwerów w chmurze i sieci

Utwórz serwery:

```text
hcloud server create --name router --type cx22 --image ubuntu-24.04
hcloud server create --name private-client --type cx22 --image ubuntu-24.04
```

Utwórz sieć prywatną:

```text
hcloud network create --name nat-network --ip-range 10.0.0.0/16
hcloud network add-subnet nat-network --network-zone eu-central --type server --ip-range 10.0.0.0/24
```

I podłącz serwery do tej sieci:

```text
hcloud server attach-to-network router --network nat-network --ip 10.0.0.2
hcloud server attach-to-network private-client --network nat-network
```

**Teraz ważna rzecz**. Aby routować ruch sieci prywatnej, trzeba dodać specjalną trasę 0.0.0.0/0 do bramy. Obecnie wygląda na to, że można to zrobić wyłącznie za pomocą hcloud, ponieważ interfejs webowy na to nie pozwala:

```text
hcloud network add-route nat-network --destination 0.0.0.0/0 --gateway 10.0.0.2
```

## Instalacja pfSense

To druga rzecz, która jest nieco skomplikowana, jeśli chcesz to zrobić przez interfejs webowy. Zdecydowanie zaleca się zrobienie tego za pomocą hcloud. Pobierz pakiet pfSense, rozpakuj go i przekaż obraz ISO jako parametr:

```text
hcloud server attach-iso router pfSense-CE-2.7.2-RELEASE-amd64.iso
hcloud server reset router
```

Teraz przeprowadź zwykłą instalację pfSense i odłącz ISO:

```text
hcloud server detach-iso router
hcloud server reset router
```

Po ponownym uruchomieniu pfSense:

-   skonfiguruj WAN jako vtnet0
-   skonfiguruj LAN jako vtnet1
-   odznacz Block bogon networks
-   ustaw LAN jako DHCP
-   ustaw dla LAN w System – Routing – Static routes trasę z 10.0.0.0/16 do 10.0.0.1
-   wyłącz hardware checksum offload w System – Advanced – Networking
-   ustaw NAT outbound w tryb hybrid
-   ustaw WAN NAT outbound z 10.0.0.0/16 do any z adresowaniem WAN address
-   zmień regułę catch all firewalla na LAN, tak aby obejmowała źródło any zamiast LAN subnets

## Routowanie ruchu

Gdy router pfSense jest już skonfigurowany, trzeba przekazywać ruch z serwera private-client do 10.0.0.1, czyli domyślnej bramy Hetznera w każdej sieci prywatnej. Wcześniej zdefiniowaliśmy, że cały ruch ma przechodzić przez router (10.0.0.2), ale odbędzie się to w routerze Hetznera, który przekaże ruch z private-client do routera, a następnie do miejsca docelowego. W takiej konfiguracji nie przekazujemy więc ruchu bezpośrednio do bramy pfSense.

Ważne jest odznaczenie blokowania sieci bogon, ponieważ nasz router będzie przekazywał ruch prywatny na interfejsie WAN. Ustawienie WAN NAT outbound jest również kluczowe, aby ten routing działał. Na koniec: pfSense dodaje domyślną regułę catch all dla LAN, którą trzeba zmodyfikować tak, by obejmowała wszystkie źródła, a nie tylko LAN, co pozwala routować ruch przez bramę Hetznera.

Wspomniane aspekty wykraczają poza zwykłą konfigurację pfSense, jak w przypadku serwerów dedykowanych, ponieważ mamy tu prywatną zarządzaną sieć, która działa według innych zasad, więc trzeba się ich trzymać, jeśli pfSense ma działać jako brama.

## Na koniec

Oczywiście pamiętaj, aby ustawić własne, odpowiadające Ci adresowanie sieci i konwencje nazewnictwa. Jeśli coś jest niejasne, sięgnij do oficjalnej dokumentacji Hetznera, którą można znaleźć [tutaj](https://community.hetzner.com/tutorials/how-to-route-cloudserver-over-private-network-using-pfsense-and-hcnetworks). Po skonfigurowaniu private-client możesz wyłączyć sieć publiczną. Wyłącz serwer, odłącz publiczny adres IP i włącz go ponownie. Teraz, aby dostać się do private-client, użyj konsoli Hetzner Cloud albo skonfiguruj OpenVPN w świeżej instalacji pfSense.
