Potsdam-VPN: Unterschied zwischen den Versionen

Aus Freifunk Potsdam | Wiki
Zur Navigation springen Zur Suche springen
(Openvpn im PdmVPN wird noch unterstützt, ist aber veraltet)
 
(28 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
__TOC__
__TOC__


== Client einrichten ==
==Client einrichten (OpenVPN) (alt)==
=== Zertifikat beantragen ===
===Zertifikat beantragen===
Es gibt noch kein automatisiertes Verfahren, vorerst eine Mail mit Routernamen an sven.reissland@freifunk-potsdam.de.
Um ein Zertifikat zum Potsdam-VPN für deinen Freifunkrouter zu erhalten, schicke bitte eine Email mit folgenden Angaben an ''[https://lists.freifunk-potsdam.de/cgi-bin/mailman/listinfo/users users@lists.freifunk-potsdam.de]''.
=== Potsdam-VPN auf Router einrichten ===
 
==== OpenVPN einrichten ====
[mailto:users@lists.freifunk-potsdam.de?subject=PdmVPN%20f%C3%BCr%20Routername&body=Hallo%20Zertifikatsgeber%2C%0D%0A%0D%0Asende%20mir%20bitte%20ein%20Potsdam-VPN-Zertifikat%5B0%5D%20f%C3%BCr%20meinen%20Knoten%20Routername%20an%20Emailadresse.%0D%0A%0D%0AViele%20Gr%C3%BC%C3%9Fe%2C%0D%0A%0D%0A%0D%0A%5B0%5D%3A%20https%3A%2F%2Fwiki.freifunk-potsdam.de%2FPotsdam-VPN Für die E-Mail hier klicken]
* Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
 
'''Betreff:'''PdmVPN für ''Routername''<br>
'''Inhalt''':
Hallo Zertifikatsgeber,
 
sende mir bitte ein Zertifikat für meinen Knoten ''Routername'' an ''Emailadresse''.
 
===Potsdam-VPN auf Router einrichten===
 
Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden.
 
====OpenVPN einrichten====
 
Zuerst richten wir das OpenVPN ein, damit der Router sich verbinden kann. Falls der Menüpunkt Services/OpenVPN nicht vorhanden ist, folgende Pakete über die Paketverwaltung nachinstallieren und den Router neu starten: luci-app-openvpn, luci-i18n-openvpn-en und openvpn-openssl
 
Auf der Kommandozeile:
 
opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot
 
*Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
 
[[Datei:1-vpn_anlegen.png|VPN anlegen]]
[[Datei:1-vpn_anlegen.png|VPN anlegen]]
* auf "Switch to advanced configuration" klicken
 
* unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
*auf "Switch to advanced configuration" klicken
** '''port''': 1195
*unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
** '''dev''': pdmvpn
**'''port''': 1195
** '''devtype''': tap
**'''dev''': pdmvpn
** '''comp_lzo''': no
**'''dev_type''': tap
* unter VPN folgende Einstellungen vornehmen.
**'''tun_mtu''': 1300
** '''remote''': vpn.freifunk-potsdam.de
**'''comp_lzo''': no
* unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
*Speichern
** '''cipher''': none
*unter VPN folgende Einstellungen vornehmen.
** '''ca''': ca.crt hochladen
**'''remote''': vpn.freifunk-potsdam.de
** '''cert''': <span style="color:red">$client$</span>.crt hochladen
*Speichern
** '''key''': <span style="color:red">$client$</span>.key hochladen
*unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
* Speichern & Anwenden
**'''cipher''': none
* unter Services/OpenVPN das pdmvpn aktivieren und starten.
**'''ca''': ca.crt hochladen
==== Interface konfigurieren ====
**'''cert''': <span style="color:red">$client$</span>.crt hochladen
* Unter Networking/Interfaces ein neues Interface names PDMVPN anlegen.
**'''key''': <span style="color:red">$client$</span>.key hochladen
** Protocoll ist Unmanaged oder Ignoriert
*Speichern & Anwenden
** als Device das soeben eingerichtete device "pdmvpn" auswählen.
 
* das neue Interface der Firewallgruppe Freifunk hinzufügen
====Interface konfigurieren====
==== OLSR konfigurieren ====
 
* unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen
Hier richten wir die Schnittstelle ein, an der der Verkehr über das VPN vom Router entgegen genommen wird.
** '''Modus''': ether
 
*Unter Network/Interfaces ein neues Interface names PDMVPN anlegen.
**Protocoll ist Unmanaged oder Ignoriert
**als Device das soeben eingerichtete Device "pdmvpn" auswählen. Beim ersten Einrichten existiert das Device vielleicht nicht. Wenn es nicht existiert, kann der Name unten eingegeben werden.
*Submit
*Das neue Interface der Firewallgruppe "Freifunk" hinzufügen.
*Speichern und Anwenden (Save & Apply)
*unter Services/OpenVPN das pdmvpn aktivieren und starten. Es müsste jetzt laufen. "Started" "Yes"
 
====OLSR konfigurieren====
 
Nachdem wir nun Verkehr über das VPN schicken, wird es Zeit, sich automatisch über OLSR auszutauschen, welche Router wir über das VPN erreichen können.
 
*unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen:
**Add
**PDMVPN auswählen
**'''Modus''': mesh
**Linkqualitäteinstellungen: LQ-Algorithmus: etx_ffeth
**Speichern & Anwenden
 
====Bilder====
 
<br />
<br />
<gallery mode="packed">
<gallery mode="packed">
Zeile 43: Zeile 84:
</gallery>
</gallery>


== Server aufsetzen ==
====Überprüfen====
=== Keys generieren ===
 
==== Easy-RSA config ====
Wenn das Meshing über das VPN läuft, dann kann man bei ''Status'' -> ''OLSR'' -> ''Nachbarn'' folgendes sehen:
* vim vars
 
export EASY_RSA="`pwd`"
  Neighbour IP Hostname Interface
export OPENSSL="openssl"
  172.22.251.1 pdmvpn-a.olsr undefined
export PKCS11TOOL="pkcs11-tool"
 
export GREP="grep"
Wenn nicht, nochmal die VPN-Einstellungen und OLSR überprüfen, ein Reboot des Routers kann auch helfen. Die ETX sollte sich bei etwa 2,5 stabilisieren.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
# Issue rm -rf warning
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
  export PKCS11_MODULE_PATH="dummy"
  export PKCS11_PIN="dummy"
export KEY_SIZE=2048
export CA_EXPIRE=10950
export KEY_EXPIRE=3660
export KEY_COUNTRY="DE"
export KEY_PROVINCE="BRB"
export KEY_CITY="Potsdam"
export KEY_ORG="Freifunk Potsdam e.V."
export KEY_EMAIL="info@freifunk-potsdam.de"
export KEY_CN=
export KEY_NAME=
==== CA Zertifikat, CA Key und DH Parameter erzeugen ====
. vars
./build-ca
./build-dh
==== Server Zertifikat und Server Key erzeugen ====
. vars
./build-key-server <span style="color:red">$server name$</span>
==== client Zertifikat und Client Key erzeugen ====
. vars
./build-key <span style="color:red">$client name$</span>


=== OpenVPN einrichten ===
* apt-get install openvpn
* kopieren von ca.crt, dh2048.pem, <span style="color:red">$server$</span>.crt, <span style="color:red">$server$</span>.key nach /etc/openvpn/freifunk-potsdam/
* vim /etc/openvpn/pdmvpn.conf
port 1195
mode server
proto udp
dev tap0
ca /etc/openvpn/freifunk-potsdam/ca.crt
cert /etc/openvpn/freifunk-potsdam/<span style="color:red">$server$</span>.crt
key /etc/openvpn/freifunk-potsdam/<span style="color:red">$server$</span>.key
dh /etc/openvpn/freifunk-potsdam/dh2048.pem
server 172.22.25<span style="color:red">X</span>.0 255.255.255.0
client-config-dir /etc/openvpn/ccd
topology subnet
keepalive 60 240
comp-lzo no
cipher none
user nobody
group nogroup
persist-key
persist-tun
log        /var/log/openvpn-pdmvpn-1195.log
log-append  /var/log/openvpn-pdmvpn-1195.log
verb 3
* OpenVPN starten / aktivieren
SystemD
systemctl start openvpn@pdmvpn.service
systemctl enable openvpn@pdmvpn.service
SysVinit
/etc/init.d/openvpn start pdmvpn


=== N2N für Server-zu-Server Kommunikation ===
====Diskussionen====
mit N2N bilden wir ein P2P-VPN zwischen den verschiedenen Servern
* apt-get install n2n
* eine Supernode wird benötigt, um eine initiale Verbindung zum P2P-VPN herzustellen (monitor.freifunk-potsdam.de)
supernode -l 7654
* Verbindung zum P2P-VPN herstellen
N2N_KEY="***key***" edge -b -r -p 7655 -f -d n2n0 -c pdmvpn -u 99 -g 99 -m CA:FF:EE:BA:BE:0<span style="color:red">X</span> -a 172.22.250.<span style="color:red">X</span> -l vpn.freifunk-potsdam.de:7654


=== OLSR kompilieren und installieren ===
Auf der Potsdamer Mailingliste gibt es folgende Diskussionen:
# apt-get install git build-essential bison flex libgps-dev
# git clone -b drophna_plugin https://github.com/seth0r/olsrd.git
# cd olsrd/
# make && make libs && make install && make libs_install
# cd lib/drophna/
# make && make install
# vim /etc/olsrd/olsrd.conf


RtTable        111
*[https://lists.freifunk-potsdam.de/pipermail/users/2018-March/018515.html Welches OpenVPN?] - Eine Diskussion zur Installation von Paketen unter der Firmware-Version Hedy.
RtTableDefault  112
#RtTableTunnel  113
#RtTableTunnelPriority 100000
SmartGateway no
SmartGatewayUplink "none"
DebugLevel      0
Interface "tap0"
{
    Mode    "ether"
    Ip4Broadcast                255.255.255.255
    LinkQualityMult            default 0.25
    HelloInterval              3.0
    HelloValidityTime          125.0
    TcInterval                  2.0
    TcValidityTime              500.0
    MidInterval                25.0
    MidValidityTime            500.0
    HnaInterval                10.0
    HnaValidityTime            125.0
}
Interface "n2n0"
{
    Mode    "ether"
    Ip4Broadcast                255.255.255.255
    LinkQualityMult            default 1.0
    HelloInterval              3.0
    HelloValidityTime          125.0
    TcInterval                  2.0
    TcValidityTime              500.0
    MidInterval                25.0
    MidValidityTime            500.0
    HnaInterval                10.0
    HnaValidityTime            125.0
}
Hna4
{
    172.22.250.0    255.255.255.0
    172.22.25<span style="color:red">X</span>.0    255.255.255.0
}
LinkQualityFishEye 1
LinkQualityAlgorithm "etx_ffeth"
IpVersion      4
ClearScreen    yes
AllowNoInt      yes
Willingness    3
UseHysteresis  no
LinkQualityLevel        2
Pollrate        0.1
TcRedundancy    2
MprCoverage    5
LoadPlugin "olsrd_jsoninfo.so.1.1"
{
        PlParam "Port" "8080"
}
LoadPlugin "olsrd_nameservice.so.0.4"
{
    PlParam "name" "pdmvpn<span style="color:red">X</span>"
    PlParam "suffix" ".olsr"
    PlParam "hosts-file" "/tmp/hosts.olsr"
}
LoadPlugin "olsrd_drophna.so.0.0.0"
{
}


=== Routing und Firewall ===
* apt-get install iproute iptables-persistent
* vim /etc/iproute2/rt_tables
110    pdmvpn
111    olsr
112    olsr-default
113    olsr-tunnel
* Forwarding aktivieren (wird nach Neustart aktiv)<br>vim /etc/sysctl.conf
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.ip_forward=1
* iptables chains anlegen
iptabels -N INFF
iptables -N FF
* iptables rules einrichten
iptables -A INPUT -i tap0 -j INFF
iptables -A INPUT -i n2n0 -j INFF
iptables -A INFF -p udp -m udp --dport 698 -j ACCEPT
iptables -A INFF -p icmp -j ACCEPT
iptables -A INFF -j LOG
iptables -A INFF -j DROP
iptables -A FORWARD -i tap0 -j FF
iptables -A FORWARD -i n2n0 -j FF
iptables -A FF -o tap0 -j ACCEPT
iptables -A FF -o n2n0 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 1195 -j ACCEPT
#iptables -A INPUT -p udp -m udp --dport 7654 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 7655 -j ACCEPT
* iptables speichern
iptables-save > /etc/iptables/rules.v4


=== Autostart script ===
[[Kategorie:Technik]]
#!/bin/bash
[[Kategorie:Netz]]
ip rule del prio 32000
ip rule del prio 100000
#killall supernode 2> /dev/null
#supernode -l 7654 > /var/log/supernode.log 2>&1 &
killall edge 2> /dev/null
N2N_KEY="***key***" edge -b -r -p 7655 -f -d n2n0 -c pdmvpn -u 99 -g 99 -m CA:FF:EE:BA:BE:0<span style="color:red">X</span> -a 172.22.250.<span style="color:red">X</span> -l monitor.freifunk-potsdam.de:7654
for dev in tap0 n2n0; do
    for prio in 1000 2000 3000 4000 5000; do
        ip rule del iif $dev prio $prio
    done
    ip rule add iif $dev prio 1000 table olsr
    ip rule add iif $dev prio 2000 table olsr-tunnel
    ip rule add iif $dev prio 3000 table olsr-default
    ip rule add iif $dev prio 4000 table pdmvpn
    ip rule add iif $dev prio 5000 unreachable
done
ip rule add prio 32000 table olsr
ip route flush table pdmvpn
ip route add 172.22.25<span style="color:red">X</span>.0/24 dev tap0 table pdmvpn
ip route add 172.22.250.0/24 dev n2n0 table pdmvpn
killall olsrd 2> /dev/null
/usr/local/sbin/olsrd -f /etc/olsrd/olsrd.conf

Aktuelle Version vom 13. April 2020, 11:41 Uhr

Das Potsdam-VPN ist ein Intra-City-VPN, das dazu dient, Inseln zusammenzuführen.

Client einrichten (OpenVPN) (alt)

Zertifikat beantragen

Um ein Zertifikat zum Potsdam-VPN für deinen Freifunkrouter zu erhalten, schicke bitte eine Email mit folgenden Angaben an users@lists.freifunk-potsdam.de.

Für die E-Mail hier klicken

Betreff:PdmVPN für Routername
Inhalt: Hallo Zertifikatsgeber,

sende mir bitte ein Zertifikat für meinen Knoten Routername an Emailadresse.

Potsdam-VPN auf Router einrichten

Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden.

OpenVPN einrichten

Zuerst richten wir das OpenVPN ein, damit der Router sich verbinden kann. Falls der Menüpunkt Services/OpenVPN nicht vorhanden ist, folgende Pakete über die Paketverwaltung nachinstallieren und den Router neu starten: luci-app-openvpn, luci-i18n-openvpn-en und openvpn-openssl

Auf der Kommandozeile:

opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot
  • Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.

VPN anlegen

  • auf "Switch to advanced configuration" klicken
  • unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
    • port: 1195
    • dev: pdmvpn
    • dev_type: tap
    • tun_mtu: 1300
    • comp_lzo: no
  • Speichern
  • unter VPN folgende Einstellungen vornehmen.
    • remote: vpn.freifunk-potsdam.de
  • Speichern
  • unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
    • cipher: none
    • ca: ca.crt hochladen
    • cert: $client$.crt hochladen
    • key: $client$.key hochladen
  • Speichern & Anwenden

Interface konfigurieren

Hier richten wir die Schnittstelle ein, an der der Verkehr über das VPN vom Router entgegen genommen wird.

  • Unter Network/Interfaces ein neues Interface names PDMVPN anlegen.
    • Protocoll ist Unmanaged oder Ignoriert
    • als Device das soeben eingerichtete Device "pdmvpn" auswählen. Beim ersten Einrichten existiert das Device vielleicht nicht. Wenn es nicht existiert, kann der Name unten eingegeben werden.
  • Submit
  • Das neue Interface der Firewallgruppe "Freifunk" hinzufügen.
  • Speichern und Anwenden (Save & Apply)
  • unter Services/OpenVPN das pdmvpn aktivieren und starten. Es müsste jetzt laufen. "Started" "Yes"

OLSR konfigurieren

Nachdem wir nun Verkehr über das VPN schicken, wird es Zeit, sich automatisch über OLSR auszutauschen, welche Router wir über das VPN erreichen können.

  • unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen:
    • Add
    • PDMVPN auswählen
    • Modus: mesh
    • Linkqualitäteinstellungen: LQ-Algorithmus: etx_ffeth
    • Speichern & Anwenden

Bilder


Überprüfen

Wenn das Meshing über das VPN läuft, dann kann man bei Status -> OLSR -> Nachbarn folgendes sehen:

Neighbour IP 	Hostname 	Interface
172.22.251.1	pdmvpn-a.olsr	undefined

Wenn nicht, nochmal die VPN-Einstellungen und OLSR überprüfen, ein Reboot des Routers kann auch helfen. Die ETX sollte sich bei etwa 2,5 stabilisieren.


Diskussionen

Auf der Potsdamer Mailingliste gibt es folgende Diskussionen:

  • Welches OpenVPN? - Eine Diskussion zur Installation von Paketen unter der Firmware-Version Hedy.