|
|
(48 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 -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
| |
|
| |
|
| === /etc/rc.local === | | ===Potsdam-VPN auf Router einrichten=== |
| #!/bin/bash
| | |
| # | | Nachdem die E-Mail mit einem Zertifikat beantwortet wurde, kann der Router mit dem VPN bespielt werden. |
| # rc.local
| | |
| #
| | ====OpenVPN einrichten==== |
| # This script is executed at the end of each multiuser runlevel.
| | |
| # Make sure that the script will "exit 0" on success or any other
| | 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 |
| # value on error.
| | |
| #
| | Auf der Kommandozeile: |
| # In order to enable or disable this script just change the execution
| | |
| # bits.
| | opkg update && opkg install luci-app-openvpn luci-i18n-openvpn-en openvpn-openssl && exec reboot |
| #
| | |
| # By default this script does nothing.
| | *Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen. |
|
| | |
| killall supernode 2> /dev/null
| | [[Datei:1-vpn_anlegen.png|VPN anlegen]] |
| supernode -l 7654 -v > /var/log/supernode.log 2>&1 &
| | |
|
| | *auf "Switch to advanced configuration" klicken |
| killall edge 2> /dev/null
| | *unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden. |
| 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
| | **'''port''': 1195 |
|
| | **'''dev''': pdmvpn |
| for dev in tap0 n2n0; do
| | **'''dev_type''': tap |
| for prio in 1000 2000 3000 4000 5000; do
| | **'''tun_mtu''': 1300 |
| ip rule del iif $dev prio $prio
| | **'''comp_lzo''': no |
| done
| | *Speichern |
| ip rule add iif $dev prio 1000 table olsr
| | *unter VPN folgende Einstellungen vornehmen. |
| ip rule add iif $dev prio 2000 table olsr-tunnel
| | **'''remote''': vpn.freifunk-potsdam.de |
| ip rule add iif $dev prio 3000 table olsr-default
| | *Speichern |
| ip rule add iif $dev prio 4000 table pdmvpn
| | *unter Cryptography folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden. |
| ip rule add iif $dev prio 5000 unreachable
| | **'''cipher''': none |
| done
| | **'''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. |
|
| | |
| exit 0
| | *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]] |