stiziwik
Sie befinden sich hier: Willkommen » Netzwerk » PFsense
Zuletzt angesehen: • PFsense

Dies ist eine alte Version des Dokuments!


PFsense

VPN zur Fritzbox

Die Fritzbox unterstützt von Haus aus IPsec über IKEv1.
Diverse Einstellungen müssen auf beiden Firewalls gleich sein um den VPN-Tunnel aufzubauen.
Der VPN-Tunnel bleibt nicht dauerhaft aufrecht und wird aufgebaut, sobald man z.B. ein Gerät des entfernten Netzwerks pingt.

VPN Einstellungen der PFsense

Folgende Einstellungen können (die P1 und P2 Proposals sollten zur Fritzbox passen; Informationen dazu in der Hilfe der Fritzbox unter Stichwort „Firmen-VPN“) in der PFsense eingerichtet werden.

Menü: VPN → IPsec ⇒ Add P1

  • General Information
    • Description: Name der VPN Verbindung
  • IKE Endpoint Configuration
    • Key Exchange version: IKEv1
    • Internet Protocol: IPv4
    • Interface: WAN
    • Remote Gateway: DynDNS Adresse der Fritzbox
  • Phase 1 Proposal (Authentication)
    • Authentication Method: Mutual PSK
    • Negotiation mode: Aggressive
    • My identifier: Fully qualified domain name → DynDNS Adresse der PFsense
    • Peer identifier: Fully qualified domain name → DynDNS Adresse der Fritzbox
    • Pre-Shared Key: Der eigene Key (kann auch von der PFsense generiert werden)
  • Phase 1 Proposal (Encryption Algorithm)
    • Encryption Algorithm: AES
    • Algorithm: 256 bits
    • Key length: SHA512
    • Hash: 14 (2048 bit)
  • Expiration and Replacement
    • Life Time: 28800
  • Advanced Options
    • Dead Peer Detection: Enable DPD

Menü: VPN → IPsec → Show Phase 2 Entries ⇒ Add P2

  • General Information
    • Description: Name der Phase 2 Verbindung
    • Mode: Tunnel IPv4
  • Networks
    • Local Network: eigenes Netzwerk oder Host im eigenen Netzwerk
    • Remote Network: entferntes Netzwerk oder Host im entfernten Netzwerk
  • Phase 2 Proposal (SA/Key Exchange)
    • Protocol: ESP
    • Encryption Algorithms: AES ⇒ 256 bits
    • Hash Algorithms: SHA512
    • PFS key group: wie in Phase 1 (hier: 14 (2048 bit))
  • Expiration and Replacement
    • Life Time: 3600
  • Keep Alive
    • Automatically ping host: eine IP Adresse im entfernten Netzwerk

VPN Einstellungen der Fritzbox

In der Fritzbox wird die u.a. Konfiguration als Datei importiert

Menü: Internet → Freigaben → VPN ⇒ VPN-Verbindung hinzufügen ⇒ Eine VPN-Konfiguration aus einer vorhandenen VPN-Einstellungsdatei importieren

VPN-Konfiguration anpassen und in eine Datei namens <DATEINAME>.cfg

vpncfg {
    connections {
        enabled = yes;
      	conn_type = conntype_lan;
        name = "<NAME_DER_VPN_VERBINDUNG>";
   		always_renew = yes;
        reject_not_encrypted = no;
        dont_filter_netbios = yes;
        localip = 0.0.0.0;
        local_virtualip = 0.0.0.0;
        remoteip = 0.0.0.0;
        remote_virtualip = 0.0.0.0;
        remotehostname = "<DDNS_ADRESSE_DER_PFSENSE>";
        localid {
            fqdn = "<DDNS_ADRESSE_DER_FRITZBOX>";
        }
        remoteid {
            fqdn = "DDNS_ADRESSE_DER_PFSENSE";
        }
        mode = phase1_mode_aggressive;
        phase1ss = "dh14/aes/sha";  ## oder phase1ss = "all/all/all"
        keytype = connkeytype_pre_shared;
        key = "<DER_EIGENE_PRE_SHARED_KEY>";
        cert_do_server_auth = no;
        use_nat_t = yes;
        use_xauth = no;
        use_cfgmode = no;
        phase2localid {
            ipnet {
                ipaddr = <IP_SUBNETZ_DER_FRITZBOX>;
                mask = 255.255.255.0;
            }
        }
        phase2remoteid {
            ipnet {
                ipaddr = <IP_SUBNETZ_DER_PFSENSE>;
                mask = 255.255.255.0;
            }
        }
        phase2ss = "esp-aes256-3des-sha/ah-no/comp-lzs-no/pfs"; ## oder phase2ss = "esp-all-all/ah-none/comp-all/pfs"
        accesslist = "permit ip any <IP_SUBNETZ_DER_PFSENSE> 255.255.255.0";
    }
    ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                        "udp 0.0.0.0:4500 0.0.0.0:4500";
}

Wireguard zwischen 2 PFsense

Hier entsteht eine Anleitung.

dst pfsense https://docs.netgate.com/pfsense/en/latest/recipes/wireguard-ra.html
-create tunnel for src pfsense
-create peer for src pfsense
-create FW rule for wireguard port
-create FW rule for peer (src pfsense)

src pfsense https://docs.netgate.com/pfsense/en/latest/recipes/wireguard-client.html
-create tunnel to dst pfsense
-create peer for dst pfsense
-set default routes to own gateways
-add interface for tunneldevice
-for tunneldevice set ip of src pfsense and add new gateway for wg tunnel
-set outbound nat to hybrid outbound nat
-create outbound nat roule with tunndeldevice interface and desired src ip or subnets
-create FW rule from src ip or subnets to ip or subnets behind wireguard tunnel on dst pfsense with gateway as tunneldevice interface with desired protocols and/or ports

Verbinden von Linux

Wireguard installieren.

sudo apt install wireguard-tools

Private- und Publickeys erstellen

wg genkey | tee privatekey | wg pubkey > publickey

WICHTOG: Die Schlüssel insbes. den Privatekey an einem sicheren Ort verwahren.

Hier eine Verbindung quick and dirty über das Terminal ohne Konfigurationsdatei.

sudo ip link add dev wg0 type wireguard
sudo ip address add dev wg0 <CIDR-ADRESSE_DES_CLIENTS_IM_TUNNEL_MIT_SUBNETZMASKE_DES_NETZES>
sudo wg set wg0 listen-port 51820 private-key <PFAD_ZU_PRIVATEKEY> peer <PUBLICKEY_DER_GEGENSEITE> allowed-ips <SUBNETZ_IM_TUNNEL_IN_CIDR> endpoint <IP_ADRESSE_DER_GEGENSTELLE>:<WIREGUARD_LISTENPORT_DER_GEGENSTELLE>
sudo ip link set up dev wg0

Erklärung:

  1. Erstellung einer neuen Netzwerkschnittstelle für Wireguard
  2. IP Adresse für die neue Netzwerkschnittstelle setzen
  3. Wireguard Tunnel auf der neuen Netzwerkschnittstelle konfigurieren (entsprechende Konfiguration für einen Tunnel/Peer muss auf der Gegenseite vorhanden sein)
  4. neue Netzwerkschnittstelle aktivieren

Ab diesem Zeitpunkt sollte es möglich sein eine IP Adresse im Tunnel zu erreichen (z.B. Ping)
Mit diesem Befehl kann man sich den Status von Wireguardverbindung anzeigen lassen.

bash>sudo wg

Man kann den Tunnel auch zunächst in einer Konfigurationsdatei definieren und dann Wireguard die Verbindung aufbauen lassen
Mit der oben erstellen und funktionierenden Verbindung kann man mit diesem Befehl einen Teil des Inhaltes für die Konfigurationsdatei ausgeben lassen.

sudo wg showconf wg0

Hier die Ausgabe:

[Interface]
ListenPort = <EIGENER_LISTENPORT> (kann auf standard 51820 gesetzt sein)
PrivateKey = <ZUVOR_ERSTELLTER_PRIVATEKEY>
 
[Peer]
PublicKey = <PUBLICKEY_DER_GEGENSTELLE>
AllowedIPs = <SUBNETZ_IM_TUNNEL_IN_CIDR>
Endpoint = <IP_ADRESSE_DER_GEGENSTELLE>:<WIREGUARD_LISTENPORT_DER_GEGENSTELLE>

Zu dieser Konfiguration kann man u.a. Zeile in den [Interface] Teil hinzufügen, dann braucht man vorher keine Netzwerkschnittstelle mit IP Adresse erstelle.

Address = <CIDR-ADRESSE_DES_CLIENTS_IM_TUNNEL_MIT_SUBNETZMASKE_DES_NETZES>

Die Konfigurationsdatei wird gespeichert unter /etc/wireguard/<DATEINAME>.conf.

Wenn zuerst die o.g. Methode angewandt wurde, muss die erstellte Netzwerkschnittstelle entfernt werden, damit Wireguard diese dynamisch erstellen kann.

sudo ip a flush dev wg0
sudo ip link delete wg0

Mit diesem Befehl verbindet man sich schließlich per Wireguard:

sudo wg-quick up <KONFIGURATIONSDATEINAME>
Previous Next

Webseiten-Werkzeuge

  • Letzte Änderungen
  • Medien-Manager
  • Übersicht

Seiten-Werkzeuge

  • Zeige Quelltext
  • Ältere Versionen
  • Links hierher
  • Nach oben

Benutzer-Werkzeuge

  • Anmelden
netzwerk/pfsense.1707460548.txt.gz · Zuletzt geändert: 2024/02/09 07:35 von 127.0.0.1
stiziwik

Table of Contents

Inhaltsverzeichnis

  • PFsense
    • VPN zur Fritzbox
      • VPN Einstellungen der PFsense
      • VPN Einstellungen der Fritzbox
    • Wireguard zwischen 2 PFsense
      • Verbinden von Linux
  • Android
  • Bild-und-video
  • Datenverarbeitung
  • Fahrzeuge
  • Hausautomatisation
  • linux
  • Nas
  • Netzwerk
    • Ubiquity
    • Dnsmasq
    • Fritzbox
    • IPv6
    • Monitoring
    • Netzwerk Abfragen
    • Netzwerkkonfiguration
    • Netzwerkmessung
    • PFsense
    • Switche
  • PlayGround
  • Programieren
  • Projekte
  • Raspberry Pi
  • sonstiges
  • VDR
  • Web
  • Werkstatt
  • Wiki
  • sidebar-acmenu
  • sidebar-indexmenu
  • sidebar-simplenavi