Wiki - Freifunk Pinneberg

Freies WLAN im Kreis Pinneberg

Benutzer-Werkzeuge

Webseiten-Werkzeuge


intercity-vpn

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
intercity-vpn [13.12.2015 15:42] havelockintercity-vpn [12.12.2017 21:27] (aktuell) – [Tinc] havelock
Zeile 6: Zeile 6:
 siehe: https://wiki.freifunk.net/IC-VPN siehe: https://wiki.freifunk.net/IC-VPN
  
-Öffentliche IPv6-Adressen: ''2001:bf7:70::/44''  die ''70** ist entsprechend Wahlkreis ''70'' +Öffentliche IPv6-Adressen: ''2001:bf7:70::/44''  die ''70'' ist entsprechend Wahlkreis ''70'' 
-"Pinneberg" vergeben worden+"Pinneberg" vergeben worden.
  
 Transfernetz IPv6: ''fec0:a:cf:1e'' Transfernetz IPv6: ''fec0:a:cf:1e''
Zeile 13: Zeile 13:
 Registrieren bei NOC Berlin: [[mailto:noc@berlin.freifunk.net]] Registrieren bei NOC Berlin: [[mailto:noc@berlin.freifunk.net]]
  
-Konfiguration unter https://github.com/freifunk-pinneberg/icvpn-meta/blob/master/pinneberg, die Daten dort müssen vor Inbetriebnahme aktualisiert werden. +Konfiguration unter https://github.com/freifunk-pinneberg/icvpn-meta/blob/master/pinneberg, 
-Vorüberlegungen+die Daten dort müssen vor Inbetriebnahme aktualisiert werden. 
 + 
 +===== Vorüberlegungen =====
  
   * Damit eine redundante Anbindung realisiert werden kann, sollten zwei Systeme das Routing übernehmen   * Damit eine redundante Anbindung realisiert werden kann, sollten zwei Systeme das Routing übernehmen
     * gate01     * gate01
     * gate04     * gate04
 +  * Die übrigen Gateways machen das Routing über diese beiden Schnittstellen
 +    * Es wird dafür internes BGP verwendet
 +    * Die Nameserverkonfiguration  wird von Gate01 mit lsync auf die übrigen Systeme  übertragen
 +
 +
 +===== Basisdaten =====
 +
 +Informationen zu den einzelnen am ICVPN teilnehmenden Communities.
 +
 +Die Metadaten werden in ''/var/lib/icvpn-meta'' gespeichert.
 +Der Ursprung ist ein Git-Repository, die Aktualisierung
 +erfolgt durch ein Script mit Cron-Job (s.u.).
 +
 +Es gibt eine Sammlung von Scripts für ICVPN: ''icvpn-scripts''.
 +
 +Voraussetzung und Installation
 +  aptitude install python3 python3-yaml
 +  cd /opt
 +  git clone https://github.com/freifunk/icvpn-scripts
 +
 +Das folgende Script wird mittels eines Cron-Jobs (in cron.daily) täglich ausgeführt,
 +in dieser Version allerdings nur vom Master-Gateway. Die übrigen Systeme bekommen die
 +Daten über lsync weiterverteilt.
 +<file bash icvpn-update>
 +#!/bin/sh
 +#
 +# Freifunk Intercity VPN:  Daten aktualisieren
 +#
 +
 +OWN_COMMUNITY=pinneberg
 +ICVPN_META_DIR=/var/lib/icvpn-meta
 +BIRD_CONF=/etc/bird/bird.d/icvpn.conf
 +NAMED_CONF=/etc/bind/named.conf.icvpn-zones
 +
 +# Basisdaten über Git aktualisieren
 +cd /etc/tinc/icvpn
 +git pull -q
 +cd $ICVPN_META_DIR
 +git pull -q
 +
 +# Konfigurationsdateien aus den neuen Daten erzeugen
 +/opt/icvpn-scripts/mkbgp -f bird -4 -s $ICVPN_META_DIR -d peers -x $OWN_COMMUNITY > $BIRD_CONF
 +/opt/icvpn-scripts/mkdns -f bind -s $ICVPN_META_DIR -x $OWN_COMMUNITY > $NAMED_CONF
 +
 +</file>
  
 ===== Tinc ===== ===== Tinc =====
Zeile 25: Zeile 72:
     * 16 bytes = 128 packets     * 16 bytes = 128 packets
  
 +Infos von tinc erfragen
 +  * ''kill -USR1 <tinc pid>'' - dumps the connection list
 +  * ''kill -USR2 <tinc pid>'' - dumps virtual network statistics
 +
 +===== Bird =====
 +
 +Wir konfigurieren die Protokollierung etwas anders als in den übrigen
 +Anleitungen, da ggf. viele Meldungen ausgegeben werden. 
 +Ins Syslog kommen nur die wichtigen Nachrichten, alles übrige wird in
 +andere Dateien unter ''/var/log/bird/'' geschrieben
 +<file conf /etc/bird/bird.conf>
 +[...]
 +log syslog { auth, fatal, bug };
 +log "/var/log/bird/default.log" { debug, trace, info, remote, warning };
 +log "/var/log/bird/error.log" { error };
 +[...]
 +</file>
 +
 +Sinnvollerweise sollten die Protokolldateien rotiert werden, wir
 +wollen die Logdateien für eine Woche vorhalten, für jeden Tage eine:
 +<file conf /etc/logrotate.d/bird>
 +/var/log/bird/*.log {
 +    daily
 +    rotate 7
 +    missingok
 +    compress
 +    create 0640 bird bird
 +    sharedscripts
 +    postrotate
 +        [ -e /var/run/bird/bird.ctl ] && invoke-rc.d bird reload >/dev/null
 +    endscript
 +}
 +</file>
 +
 +Übertragung des Routings an die anderen Gateways:
 +<file conf /etc/bird/bird.d/gateways.conf>
 +protocol bgp gate03 from locals {
 +    neighbor 10.137.12.1 as 65433;
 +}
 +protocol bgp gate04 from locals {
 +    neighbor 10.137.13.1 as 65433;
 +}
 +protocol bgp gate05 from locals {
 +    neighbor 10.137.14.1 as 65433;
 +}
 +</file>
 +
 +Die Konfiguration kann mit ''birdc'' überprüft werden. Das Programm kann ohne Parameter aufgerufen werden, dann ist es im interaktiven Modus. Mit ''?'' bekommt man die Hilfe angezeigt.
 +
 +Alternativ können befehle auch direkt abgesetzt werden:
 +  * ''birdc show protocols''
 +  * ''birdc configure check'' - überprüft die Konfigurationsdatei
 +  * ''birdc configure'' - lädt die Konfigurationsdatei (z.B. nach einer Änderung) neu ein
 +
 +==== Invalid NEXT_HOP ====
 +
 +Anscheinend ist dies ein komplizierteres Thema. 
 +
 +Zusammenfassung, wer mit welche Adressen im Protokoll auftaucht kann man 
 +mit dem folgenden Befehl erhalten:
 +<code>
 +grep "Invalid NEXT_HOP" /var/log/syslog | cut -f 7,13 -d "> " | sort | uniq -c | sort -n | tail
 +</code>
 +
 +===== Namensauflösung mit Bind =====
 +
 +Ziel ist es, daß die Namen anderer Communities aufgelöst werden.
 +
 +TODO Testen bzw. zu Ende konfigurieren
 +
 +<file conf /etc/bind/named.conf>
 +[...]
 +include "/etc/bind/named.conf.icvpn-zones";
 +</file>
 +
 +Wenn der folgende Wert auf ''auto'' steht (Standardeinstellung),
 +dann funktioniert die Namensauflösung im ICVPN nicht. Deshalb:
 +<file conf /etc/bind/named.conf.options>
 +        dnssec-validation no;
 +</file>
 +
 +Die ICVPN-Metadaten werden auf die übrigen Gateways übertragen.
 +Momentan ist Gate03 konfiguriert. 
 +
 +<file bash /etc/cron.daily/ff-dns-update>
 +#!/bin/sh
 +#
 +# Freifunk Intercity  VPN: DNS aktualisieren
 +#
 +
 +OWN_COMMUNITY=pinneberg
 +ICVPN_META_DIR=/var/lib/icvpn-meta
 +NAMED_CONF=/etc/bind/named.conf.icvpn-zones
 +
 +# Konfigurationsdatei neu schreiben
 +/opt/icvpn-scripts/mkdns -f bind -s $ICVPN_META_DIR -x $OWN_COMMUNITY > $NAMED_CONF
 +
 +# Nameserverdaten neu laden
 +/usr/sbin/rndc reload
 +
 +</file>
intercity-vpn.txt · Zuletzt geändert: 12.12.2017 21:27 von havelock