Potsdam-VPN: Unterschied zwischen den Versionen

Openvpn im PdmVPN wird noch unterstützt, ist aber veraltet
(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
771

Bearbeitungen