Jetzt zeige ich dir, wie du eine geroutete VPN-Verbindung zu deinem Server herstellen kannst. Ich nutze VPN-Verbindungen um von unterwegs auf Samba-Freigaben zu nutzen, oder um andere Server zu administrieren, die nicht von außerhalb über das Netz erreichbar sind.

  1. Als erstes installieren wir openVPN wie gewohnt über die Ports:

    # cd /usr/ports/security/openvpn/ && make install clean
  2. Anschließend legen wir im Verzeichnis "/usr/local/etc/openvpn/" die Konfigurationsdatei "server.conf" an:

    # Port auf den der VPN-Server lauschen wird (FIREWAL ANPASSEN!!)
    port 1194
    # IP des Servers
    local 192.168.0.10
    proto udp

    dev tun
    tun-mtu 1500
    fragment 1300
    mssfix
    tls-server

    # Die Pfade zu den Keys und Zertifikaten
    ca /usr/local/etc/openvpn/vpn-ca.pem
    cert /usr/local/etc/openvpn/certs/servercert.pem
    key /usr/local/etc/openvpn/private/serverkey.pem
    dh /usr/local/etc/openvpn/dh1024.pem

    # Hier wird der Adressbereich und die Netzwerkmaske für das virtuelle Netzwerk übergeben.
    # Der Server wird automatisch auf der ersten IP lauschen, hier 10.8.0.1
    server 10.8.0.0 255.255.255.0

    # Hier können wir einen Adress-Pool für die Virtuellen Adressen angeben. Falls ein Client die
    # Verbindung beendet, wird ihm bei der nächsten Verbindung automatisch die selbe IP zugewiesen.
    ifconfig-pool-persist ipp.txt

    # Mit push veranlassen die Clients die Route in den Adressbereich 192.168.0.0 automatisch 
    # über vpn zu routen
    push "route 192.168.0.0 255.255.255.0"

    keepalive 10 120
    # Authentifizierungsmethode
    auth SHA1
    # Verschlüsselungsmethode
    cipher AES-256-CBC
    # Komprimierung aktivieren
    comp-lzo

    user nobody
    group nobody
    persist-key
    persist-tun
    # Verbose-Level
    verb 6

  3. Jetzt müssen wir noch ein paar Einstellungen in der "/etc/rc.conf" vornehmen:

    openvpn_enable="YES"
    openvpn_if="tun tap"
    openvpn_configfile="/usr/local/etc/openvpn/server.conf"
    openvpn_dir="/usr/local/etc/openvpn"

  4. Anschließend werden wir noch die Zertifikate für den Client erstellen und dann den openVPN-Windows-Client konfigurieren.
  5. Jetzt müssen wir natürlich noch die Firewallregeln anpassen, da wir ein neues, wenn auch virtuelles, Netzwerkdevice erstellt haben (tun0).
    Folgendes ist in der pf.conf zu tun:
    1. Das tun0-Device anlegen: vpn_if="tun0"
    2. Das neue Netzwerk anlegen: vpn_network="10.8.0.0/24"
    3. NAT-Regel anlegen: nat on $if from $vpn_network to any -> $ext_ip
      ($ext_ip ist die externe IP des LAN-Device)
    4. optional: Firewallregeln für das tun0-Device ignorieren: pass quick on $vpn_if
    5. Samba-Redirectregel anlegen: 
      rdr pass on $vpn_if proto tcp from any to $if port $samba_tcp -> $samba
      rdr pass on $vpn_if proto udp from any to $if port $samba_udp -> $samba