Potsdam-VPN: Unterschied zwischen den Versionen

Aus Freifunk Potsdam | Wiki
Zur Navigation springen Zur Suche springen
(Zertifikate beantragen)
(Openvpn im PdmVPN wird noch unterstützt, ist aber veraltet)
 
(30 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 ===


== Server aufsetzen ==
[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]
=== Keys generieren ===
==== Easy-RSA config ====
* vim vars
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
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 ===
'''Betreff:'''PdmVPN für ''Routername''<br>
* apt-get install openvpn
'''Inhalt''':
* 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/
Hallo Zertifikatsgeber,
* 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 ===
sende mir bitte ein Zertifikat für meinen Knoten ''Routername'' an ''Emailadresse''.
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 ===
===Potsdam-VPN auf Router einrichten===
# 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
Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden.
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 ===
====OpenVPN einrichten====
* 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 ===
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
#!/bin/bash
 
Auf der Kommandozeile:
ip rule del prio 32000
 
  ip rule del prio 100000
  opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot
 
#killall supernode 2> /dev/null
*Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
#supernode -l 7654 > /var/log/supernode.log 2>&1 &
 
[[Datei:1-vpn_anlegen.png|VPN anlegen]]
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
*auf "Switch to advanced configuration" klicken
*unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
for dev in tap0 n2n0; do
**'''port''': 1195
    for prio in 1000 2000 3000 4000 5000; do
**'''dev''': pdmvpn
        ip rule del iif $dev prio $prio
**'''dev_type''': tap
    done
**'''tun_mtu''': 1300
    ip rule add iif $dev prio 1000 table olsr
**'''comp_lzo''': no
    ip rule add iif $dev prio 2000 table olsr-tunnel
*Speichern
    ip rule add iif $dev prio 3000 table olsr-default
*unter VPN folgende Einstellungen vornehmen.
    ip rule add iif $dev prio 4000 table pdmvpn
**'''remote''': vpn.freifunk-potsdam.de
    ip rule add iif $dev prio 5000 unreachable
*Speichern
done
*unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
**'''cipher''': none
ip rule add prio 32000 table olsr
**'''ca''': ca.crt hochladen
**'''cert''': <span style="color:red">$client$</span>.crt hochladen
ip route flush table pdmvpn
**'''key''': <span style="color:red">$client$</span>.key hochladen
ip route add 172.22.25<span style="color:red">X</span>.0/24 dev tap0 table pdmvpn
*Speichern & Anwenden
  ip route add 172.22.250.0/24 dev n2n0 table pdmvpn
 
====Interface konfigurieren====
killall olsrd 2> /dev/null
 
/usr/local/sbin/olsrd -f /etc/olsrd/olsrd.conf
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====
 
<br />
<gallery mode="packed">
2-vpn_settings2.png|VPN Networking Settings
3-vpn_settings3.png|VPN VPN Settings
4-vpn_settings4.png|VPN Cryptography Settings
5-vpn-interface1.png|Interface anlegen
6-vpn-interface2.png|Firewallgruppe ändern
7-vpn-olsr1.png|OLSR Interface hinzufügen
</gallery>
 
====Ü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:
 
*[https://lists.freifunk-potsdam.de/pipermail/users/2018-March/018515.html Welches OpenVPN?] - Eine Diskussion zur Installation von Paketen unter der Firmware-Version Hedy.
 
 
[[Kategorie:Technik]]
[[Kategorie:Netz]]

Aktuelle Version vom 13. April 2020, 10: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.