Potsdam-VPN: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Seth0r (Diskussion | Beiträge) (Client konfiguration eingefügt) |
Seth0r (Diskussion | Beiträge) |
||
Zeile 7: | Zeile 7: | ||
Es gibt noch kein automatisiertes Verfahren, vorerst eine Mail mit Routernamen an sven.reissland@freifunk-potsdam.de. | Es gibt noch kein automatisiertes Verfahren, vorerst eine Mail mit Routernamen an sven.reissland@freifunk-potsdam.de. | ||
=== Potsdam-VPN auf Router einrichten === | === Potsdam-VPN auf Router einrichten === | ||
==== OpenVPN einrichten ==== | |||
* Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen. | * Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen. | ||
[[Datei:1-vpn_anlegen.png|VPN anlegen]] | [[Datei:1-vpn_anlegen.png|VPN anlegen]] | ||
Zeile 24: | Zeile 25: | ||
* Speichern & Anwenden | * Speichern & Anwenden | ||
* unter Services/OpenVPN das pdmvpn aktivieren und starten. | * unter Services/OpenVPN das pdmvpn aktivieren und starten. | ||
==== Interface konfigurieren ==== | |||
* Unter Networking/Interfaces ein neues Interface names PDMVPN anlegen. | * Unter Networking/Interfaces ein neues Interface names PDMVPN anlegen. | ||
** Protocoll ist Unmanaged oder Ignoriert | ** Protocoll ist Unmanaged oder Ignoriert | ||
** als Device das soeben eingerichtete device "pdmvpn" auswählen. | ** als Device das soeben eingerichtete device "pdmvpn" auswählen. | ||
* das neue Interface der Firewallgruppe Freifunk hinzufügen | * das neue Interface der Firewallgruppe Freifunk hinzufügen | ||
==== OLSR konfigurieren ==== | |||
* unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen | * unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen | ||
** '''Modus''': ether | ** '''Modus''': ether | ||
<br /> | |||
<gallery mode="packed"> | <gallery mode="packed"> | ||
2-vpn_settings2.png|VPN Networking Settings | 2-vpn_settings2.png|VPN Networking Settings |
Version vom 10. Juli 2017, 13:16 Uhr
Das Potsdam-VPN ist ein Intra-City-VPN, das dazu dient, Inseln zusammenzuführen.
Client einrichten
Zertifikat beantragen
Es gibt noch kein automatisiertes Verfahren, vorerst eine Mail mit Routernamen an sven.reissland@freifunk-potsdam.de.
Potsdam-VPN auf Router einrichten
OpenVPN einrichten
- Unter Services/OpenVPN eine neue "Client configuration for an ethernet bridge VPN" namens "pdmvpn" anlegen.
- auf "Switch to advanced configuration" klicken
- unter Networking folgende Einstellungen vornehmen. Einige Felder müssen zuerst hinzugefügt werden.
- port: 1195
- dev: pdmvpn
- devtype: tap
- comp_lzo: no
- unter VPN folgende Einstellungen vornehmen.
- remote: vpn.freifunk-potsdam.de
- 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
- unter Services/OpenVPN das pdmvpn aktivieren und starten.
Interface konfigurieren
- Unter Networking/Interfaces ein neues Interface names PDMVPN anlegen.
- Protocoll ist Unmanaged oder Ignoriert
- als Device das soeben eingerichtete device "pdmvpn" auswählen.
- das neue Interface der Firewallgruppe Freifunk hinzufügen
OLSR konfigurieren
- unter Services/OLSR IPv4 das PDMVPN Interface hinzufügen
- Modus: ether
Server aufsetzen
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 $server name$
client Zertifikat und Client Key erzeugen
. vars
./build-key $client name$
OpenVPN einrichten
- apt-get install openvpn
- kopieren von ca.crt, dh2048.pem, $server$.crt, $server$.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/$server$.crt key /etc/openvpn/freifunk-potsdam/$server$.key dh /etc/openvpn/freifunk-potsdam/dh2048.pem server 172.22.25X.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
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:0X -a 172.22.250.X -l vpn.freifunk-potsdam.de:7654
OLSR kompilieren und installieren
- 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 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.25X.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" "pdmvpnX" 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)
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
#!/bin/bash ip rule del prio 32000 ip rule del prio 100000 #killall supernode 2> /dev/null #supernode -l 7654 > /var/log/supernode.log 2>&1 & 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:0X -a 172.22.250.X -l monitor.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 rule add prio 32000 table olsr ip route flush table pdmvpn ip route add 172.22.25X.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