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 Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
intercity-vpn [17.01.2016 20:09]
havelock
intercity-vpn [12.12.2017 21:27] (aktuell)
havelock [Tinc]
Zeile 21: Zeile 21:
     * 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 26: Zeile 71:
   * ReplayWindows (in Bytes) in ''​tinc.conf''​ erhöhen hilft ggf. bei Packet losts?   * ReplayWindows (in Bytes) in ''​tinc.conf''​ erhöhen hilft ggf. bei Packet losts?
     * 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 ===== ===== 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 ===== ===== Namensauflösung mit Bind =====
Zeile 41: Zeile 147:
 </​file>​ </​file>​
  
-  touch /​etc/​bind/​named.conf.icvpn-zones+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>​
  
-<file bash icvpn-update>+Die ICVPN-Metadaten werden auf die übrigen Gateways übertragen. 
 +Momentan ist Gate03 konfiguriert.  
 + 
 +<file bash /​etc/​cron.daily/​ff-dns-update>
 #!/bin/sh #!/bin/sh
 +#
 +# Freifunk Intercity ​ VPN: DNS aktualisieren
 +#
  
-# Name of own community (as used in icvpn-meta repository) 
 OWN_COMMUNITY=pinneberg OWN_COMMUNITY=pinneberg
 ICVPN_META_DIR=/​var/​lib/​icvpn-meta ICVPN_META_DIR=/​var/​lib/​icvpn-meta
-BIRD_CONF=/​etc/​bird/​bird.d/​icvpn.conf 
 NAMED_CONF=/​etc/​bind/​named.conf.icvpn-zones NAMED_CONF=/​etc/​bind/​named.conf.icvpn-zones
  
-/​opt/​icvpn-scripts/​mkbgp -f bird -4 -s $ICVPN_META_DIR -d peers -x $OWN_COMMUNITY > $BIRD_CONF+# Konfigurationsdatei neu schreiben
 /​opt/​icvpn-scripts/​mkdns -f bind -s $ICVPN_META_DIR -x $OWN_COMMUNITY > $NAMED_CONF /​opt/​icvpn-scripts/​mkdns -f bind -s $ICVPN_META_DIR -x $OWN_COMMUNITY > $NAMED_CONF
-</​file>​ 
  
 +# Nameserverdaten neu laden
 +/​usr/​sbin/​rndc reload
 +
 +</​file>​
intercity-vpn.1453057785.txt.gz · Zuletzt geändert: 17.01.2016 20:09 von havelock