OPNsense a OpenVPN na portu 443 – Kompletní manuální nastavení a testování

V dnešním návodu si podrobně probereme nastavení OpenVPN serveru na OPNsense firewallu s využitím nestandardního portu 443. Port 443 je zajímavý tím, že většina firemních sítí a veřejných WiFi ho povoluje, což vám umožní obejít mnoho síťových restrikcí.

Proč právě port 443?

Standardní OpenVPN port je 1194/UDP, ale ten je často blokován firewally. Port 443 je výchozí port pro HTTPS provoz, a ten blokuje málokdo. Navíc můžeme OpenVPN provoz „schovat“ do TLS tunelu, takže vypadá jako běžný HTTPS traffic.

Předpoklady

  • OPNsense nainstalovaný a funkční
  • Veřejnou IP adresu (nebo správně nastavený DDNS)
  • Přístup do webového rozhraní OPNsense jako administrátor
  • Základní znalosti sítí a VPN

Krok 1: Generování certifikátů

OpenVPN potřebuje SSL/TLS certifikáty. V OPNsense můžete použít vestavěnou certifikační autoritu nebo vytvořit vlastní.

1.1 Vytvoření Certificate Authority

Přejděte do System > Trust > Authorities a vytvořte novou CA:

Method: Create an internal Certificate Authority
Descriptive Name: OpenVPN CA
Key type: RSA
Key length: 4096
Digest algorithm: sha256
Lifetime: 3650 days (10 let)

1.2 Vytvoření Serverového certifikátu

Přejděte do System > Trust > Certificates a vytvořte certifikát pro server.

1.3 Vytvoření Klientského certifikátu

Vytvořte certifikát pro klienta s Common Name např. „client1“.

Krok 2: Konfigurace OpenVPN Serveru

Přejděte do VPN > OpenVPN > Servers a vytvořte nový server.

2.1 Základní nastavení

Server Mode: Peer to Peer (SSL/TLS)
Protocol: TCP
Device Mode: tun
Interface: Localhost (127.0.0.1)
Local Port: 9443

Důležité: Server naslouchá na localhostu na portu 9443. HAProxy bude přesměrovávat provoz z portu 443 na tento interní port.

2.2 Kryptografické nastavení

TLS Configuration: Use a static key, certificate key and CA
Peer Certificate Authority: OpenVPN CA
Server Certificate: OpenVPN Server Certificate
DH Parameter Length: 4096

2.3 Tunnel Settings

IPv4 Tunnel Network: 10.8.0.0/24
Redirect Gateway: Enabled (volitelné)
IPv4 Local Network(s): 192.168.1.0/24 (vaše lokální síť)
Compression: Omit Preference

Krok 3: HAProxy – přesměrování portu 443

HAProxy použijeme jako reverse proxy, který bude přijímat provoz na portu 443 a přesměrovávat ho na interní OpenVPN server.

3.1 Instalace HAProxy

Přejděte do System > Firmware > Plugins a nainstalujte os-haproxy.

3.2 Vytvoření Backend serveru

Přejděte do Services > HAProxy > Settings a povolte HAProxy.

Přejděte do Services > HAProxy > Backend a vytvořte nový backend:

Name: OpenVPN_Backend
Mode: TCP
Balance Algorithm: Round Robin
Server Check Method: Basic
Health Check: Disabled
Servers:
  - Name: OpenVPN_Local
    Address: 127.0.0.1
    Port: 9443
    Encryption: (prázdné)

3.3 Vytvoření Frontend

Přejděte do Services > HAProxy > Frontend a vytvořte nový frontend:

Name: OpenVPN_Frontend
Listen Address: 0.0.0.0:443
Backend Server: OpenVPN_Backend
SSL Offloading: No (protože OpenVPN používá vlastní TLS)
Connection timeout: 7200
Server timeout: 7200

3.4 HAProxy pravidla

Vytvořte ACL pro rozlišení provozu (pokud provozujete i HTTPS na stejném portu):

ACL Name: is_openvpn
ACL Condition: TCP request content lua.is_openvpn

Alternativně můžete použít jiný port pro HAProxy a přímo ho nasměrovat.

Krok 4: Konfigurace s veřejným DNS jménem

4.1 Nastavení DDNS nebo statické IP

Pro přístup k VPN budete potřebovat veřejnou DNS adresu. Máte několik možností:

  • Statická veřejná IP – ideální varianta
  • DDNS služby – Cloudflare DDNS, No-IP, DynDNS aj.

4.2 Nastavení Cloudflare DDNS (doporučeno)

Pokud používáte Cloudflare pro vaši doménu, můžete nastavit DDNS přímo v OPNsense:

Services > DDNS > Cloudflare
Hostname: vpn.vasedomena.cz
Zone: vasedomena.cz
API Token: (váš Cloudflare API token)
Proxy: Disable (pro VPN potřebujete přímou IP)

4.3 Vytvoření DNS záznamu

Vytvořte A záznam ve vašem DNS:

Type: A
Name: vpn
Value: (vaše veřejná IP nebo DDNS hostname)

4.4 Export certifikátu pro klienta

Pro ověření serveru můžete použít Let’s Encrypt certifikát:

Services > Let's Encrypt > Certificates
Method: ACME DNS-01
DNS Plugin: Cloudflare
Domain: vpn.vasedomena.cz

Certifikát poté použijte v HAProxy pro SSL termination (pokud chcete obfuskovat OpenVPN provoz jako HTTPS).

Krok 5: Firewall pravidla

5.1 WAN pravidlo

Přejděte do Firewall > Rules > WAN a přidejte pravidlo pro TCP port 443:

Action: Pass
Interface: WAN
Protocol: TCP
Destination Port Range: from 443 to 443
Destination: WAN Address
Description: Allow OpenVPN via HAProxy on port 443

5.2 Loopback pravidlo

Přidejte pravidlo pro loopback rozhraní:

Action: Pass
Interface: Loopback
Protocol: TCP
Destination Port Range: from 9443 to 9443
Destination: 127.0.0.1
Description: Allow HAProxy to OpenVPN

5.3 OpenVPN pravidlo

Přejděte do Firewall > Rules > OpenVPN a povolte veškerý provoz.

Krok 6: Konfigurace klienta

6.1 Základní konfigurace klienta

client
dev tun
proto tcp
remote vpn.vasedomena.cz 443
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3

6.2 S certifikátem (doporučeno pro produkci)

client
dev tun
proto tcp
remote vpn.vasedomena.cz 443

<ca>
-----BEGIN CERTIFICATE-----
... CA certifikát ...
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
... klientský certifikát ...
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
... privátní klíč ...
-----END PRIVATE KEY-----
</key>

cipher AES-256-GCM
auth SHA256
verb 3

Krok 7: Testování připojení

7.1 Test dostupnosti portu

# Z vnější sítě
nc -zv vpn.vasedomena.cz 443

# Ověření SSL certifikátu
openssl s_client -connect vpn.vasedomena.cz:443

7.2 Kontrola HAProxy statistik

Přejděte do Services > HAProxy > Statistics a zkontrolujte, zda HAProxy přijímá spojení.

7.3 Kontrola OpenVPN logů

Status > System Logs > OpenVPN
 nebo
VPN > OpenVPN > Log File

7.4 Ověření připojení

# Po úspěšném připojení
ip addr show tun0

# Měli byste vidět IP z rozsahu 10.8.0.0/24
ping 10.8.0.1  # ping na bránu VPN

Řešení problémů

Klient se nepřipojí

  • Zkontrolujte logy: VPN > OpenVPN > Log File
  • Ověřte, že HAProxy běží: Services > HAProxy > Health Check
  • Zkontrolujte firewall pravidla na WAN i Loopback
  • Ověřte DNS jméno: nslookup vpn.vasedomena.cz

HAProxy neforwarduje provoz

  • Zkontrolujte, že backend server je „UP“ ve statistikách
  • Ověřte, že OpenVPN naslouchá na localhost:9443: netstat -an | grep 9443
  • Zkontrolujte, že mode je nastaven na TCP

Špatné šifrování

Použijte AES-256-GCM a SHA256:

cipher AES-256-GCM
auth SHA256

DNS nefunguje přes VPN

Přidejte do konfigurace klienta:

pull
dhcp-option DNS 8.8.8.8
dhcp-option DNS 8.8.4.4

Bezpečnostní doporučení

  1. Pravidelně obměňujte certifikáty
  2. Používejte silné šifrování (AES-256-GCM)
  3. Monitorujte HAProxy a OpenVPN logy
  4. Zkontrolujte podezřelé připojení
  5. Používejte two-factor authentication (pokud je k dispozici)
  6. Zvažte použití ověřovacích metod jako je two-factor

Shrnutí architektury

Internet
    |
    v
[WAN:443/TCP] --> [HAProxy] --> [OpenVPN:9443/TCP on localhost]
    |                    |
    |                    +--> (VPN tunnel)
    |                           |
    v                           v
Klient                    Lokální síť
(10.8.0.x)               (192.168.1.0/24)

Tato architektura vám umožňuje provozovat OpenVPN na standardním HTTPS portu 443, což vám zajistí maximální kompatibilitu s firemními sítěmi a veřejnými WiFi přístupovými body.

Závěr

Nastavení OpenVPN na OPNsense s portem 443 pomocí HAProxy vám poskytne spolehlivý a bezpečný způsob vzdáleného připojení. Použití HAProxy navíc přidává další vrstvu flexibility a umožňuje v budoucnu snadno přidat další služby na stejný port.