Potsdam-VPN: Unterschied zwischen den Versionen

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


== Client einrichten ==
==Client einrichten (OpenVPN) (alt)==
== Server aufsetzen ==
===Zertifikat beantragen===
=== Keys generieren ===
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]''.
=== 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


=== N2N für Server-zu-Server Kommunikation ===
[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]
mit N2N bilden wir ein P2P-VPN zwischen den verschiedenen Servern
* apt-get install n2n
* mindestens eine Supernode wird benötigt, um eine initiale Verbindung zum P2P-VPN herzustellen
supernode -l 7654 -v
* Verbindung zum P2P-VPN herstellen
N2N_KEY="***key***" edge -b -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 ===
'''Betreff:'''PdmVPN für ''Routername''<br>
# apt-get install git build-essential bison flex libgps-dev
'''Inhalt''':
# git clone -b drophna_plugin https://github.com/seth0r/olsrd.git
Hallo Zertifikatsgeber,
# cd olsrd/
# make && make libs && make install && make libs_install
# vim /etc/olsrd/olsrd.conf


RtTable        111
sende mir bitte ein Zertifikat für meinen Knoten ''Routername'' an ''Emailadresse''.
RtTableDefault  112
 
===Potsdam-VPN auf Router einrichten===
#RtTableTunnel  113
 
#RtTableTunnelPriority 100000
Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden.
SmartGateway no
 
SmartGatewayUplink "none"
====OpenVPN einrichten====
 
DebugLevel      0
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
 
Interface "tap0"
Auf der Kommandozeile:
{
 
    Mode    "ether"
  opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot
    Ip4Broadcast                255.255.255.255
 
    LinkQualityMult            default 0.25
*Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
 
    HelloInterval              3.0
[[Datei:1-vpn_anlegen.png|VPN anlegen]]
    HelloValidityTime          125.0
 
    TcInterval                  2.0
*auf "Switch to advanced configuration" klicken
    TcValidityTime              500.0
*unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
    MidInterval                25.0
**'''port''': 1195
    MidValidityTime            500.0
**'''dev''': pdmvpn
    HnaInterval                10.0
**'''dev_type''': tap
    HnaValidityTime            125.0
**'''tun_mtu''': 1300
  }
**'''comp_lzo''': no
*Speichern
Interface "n2n0"
*unter VPN folgende Einstellungen vornehmen.
{
**'''remote''': vpn.freifunk-potsdam.de
    Mode    "ether"
*Speichern
    Ip4Broadcast                255.255.255.255
*unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
    LinkQualityMult            default 1.0
**'''cipher''': none
**'''ca''': ca.crt hochladen
    HelloInterval              3.0
**'''cert''': <span style="color:red">$client$</span>.crt hochladen
    HelloValidityTime          125.0
**'''key''': <span style="color:red">$client$</span>.key hochladen
    TcInterval                  2.0
*Speichern & Anwenden
    TcValidityTime              500.0
 
    MidInterval                25.0
====Interface konfigurieren====
    MidValidityTime            500.0
 
    HnaInterval                10.0
Hier richten wir die Schnittstelle ein, an der der Verkehr über das VPN vom Router entgegen genommen wird.
    HnaValidityTime            125.0
 
}
*Unter Network/Interfaces ein neues Interface names PDMVPN anlegen.
**Protocoll ist Unmanaged oder Ignoriert
Hna4
**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
    172.22.250.0    255.255.255.0
*Das neue Interface der Firewallgruppe "Freifunk" hinzufügen.
    172.22.25<span style="color:red">X</span>.0    255.255.255.0
*Speichern und Anwenden (Save & Apply)
}
*unter Services/OpenVPN das pdmvpn aktivieren und starten. Es müsste jetzt laufen. "Started" "Yes"
 
LinkQualityFishEye 1
====OLSR konfigurieren====
LinkQualityAlgorithm "etx_ffeth"
 
IpVersion      4
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.
ClearScreen    yes
 
AllowNoInt      yes
*unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen:
Willingness    3
**Add
UseHysteresis  no
**PDMVPN auswählen
LinkQualityLevel        2
**'''Modus''': mesh
Pollrate        0.1
**Linkqualitäteinstellungen: LQ-Algorithmus: etx_ffeth
TcRedundancy    2
**Speichern & Anwenden
MprCoverage    5
 
====Bilder====
LoadPlugin "olsrd_jsoninfo.so.1.1"
 
{
<br />
        PlParam "Port" "8080"
<gallery mode="packed">
}
2-vpn_settings2.png|VPN Networking Settings
3-vpn_settings3.png|VPN VPN Settings
LoadPlugin "olsrd_nameservice.so.0.4"
4-vpn_settings4.png|VPN Cryptography Settings
{
5-vpn-interface1.png|Interface anlegen
    PlParam "name" "pdmvpn<span style="color:red">X</span>"
6-vpn-interface2.png|Firewallgruppe ändern
    PlParam "suffix" ".olsr"
7-vpn-olsr1.png|OLSR Interface hinzufügen
    PlParam "hosts-file" "/tmp/hosts.olsr"
</gallery>
}
 
====Überprüfen====
LoadPlugin "olsrd_drophna.so.0.0.0"
 
{
Wenn das Meshing über das VPN läuft, dann kann man bei ''Status'' -> ''OLSR'' -> ''Nachbarn'' folgendes sehen:
}
 
=== Routing und Firewall ===
  Neighbour IP Hostname Interface
* apt-get install iproute iptables-persistent
  172.22.251.1 pdmvpn-a.olsr undefined
* vim /etc/iproute2/rt_tables
 
110    pdmvpn
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.
111    olsr
 
112    olsr-default
 
113    olsr-tunnel
====Diskussionen====
* Forwarding aktivieren (wird nach Neustart aktiv)<br>vim /etc/sysctl.conf
 
net.ipv4.conf.default.rp_filter=1
Auf der Potsdamer Mailingliste gibt es folgende Diskussionen:
net.ipv4.conf.all.rp_filter=1
 
net.ipv4.tcp_syncookies=1
*[https://lists.freifunk-potsdam.de/pipermail/users/2018-March/018515.html Welches OpenVPN?] - Eine Diskussion zur Installation von Paketen unter der Firmware-Version Hedy.
net.ipv4.ip_forward=1
 
* iptables chans anlegen
 
iptabels -N INFF
[[Kategorie:Technik]]
iptables -N FF
[[Kategorie:Netz]]
* 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 -i eth0 -p udp -m udp --dport 1195 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m udp --dport 7654 -j ACCEPT
=== /etc/rc.local ===
#!/bin/bash
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
killall supernode 2> /dev/null
supernode -l 7654 -v > /var/log/supernode.log 2>&1 &
  killall edge 2> /dev/null
  N2N_KEY="***key***" edge -b -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
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 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
exit 0

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.