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í
- Pravidelně obměňujte certifikáty
- Používejte silné šifrování (AES-256-GCM)
- Monitorujte HAProxy a OpenVPN logy
- Zkontrolujte podezřelé připojení
- Používejte two-factor authentication (pokud je k dispozici)
- 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.