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)
 
(44 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
* 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 ===
[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 -r -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
#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 -i eth0 -p udp -m udp --dport 1195 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m udp --dport 7654 -j ACCEPT
* iptables speichern
iptables-save > /etc/iptables/rules.v4


=== Autostart script ===
===Potsdam-VPN auf Router einrichten===
#!/bin/bash
 
Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden.
killall supernode 2> /dev/null
 
  supernode -l 7654 -v > /var/log/supernode.log 2>&1 &
====OpenVPN einrichten====
 
killall edge 2> /dev/null
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
N2N_KEY="***key***" edge -b -r -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
 
Auf der Kommandozeile:
for dev in tap0 n2n0; do
 
    for prio in 1000 2000 3000 4000 5000; do
  opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot
        ip rule del iif $dev prio $prio
 
    done
*Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
    ip rule add iif $dev prio 1000 table olsr
 
    ip rule add iif $dev prio 2000 table olsr-tunnel
[[Datei:1-vpn_anlegen.png|VPN anlegen]]
    ip rule add iif $dev prio 3000 table olsr-default
 
    ip rule add iif $dev prio 4000 table pdmvpn
*auf "Switch to advanced configuration" klicken
    ip rule add iif $dev prio 5000 unreachable
*unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
done
**'''port''': 1195
**'''dev''': pdmvpn
ip route flush table pdmvpn
**'''dev_type''': tap
ip route add 172.22.25<span style="color:red">X</span>.0/24 dev tap0 table pdmvpn
**'''tun_mtu''': 1300
  ip route add 172.22.250.0/24 dev n2n0 table pdmvpn
**'''comp_lzo''': no
*Speichern
killall olsrd 2> /dev/null
*unter VPN folgende Einstellungen vornehmen.
/usr/local/sbin/olsrd -f /etc/olsrd/olsrd.conf
**'''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''': <span style="color:red">$client$</span>.crt hochladen
**'''key''': <span style="color:red">$client$</span>.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====
 
<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, 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.