====== InterCity-VPN ====== ASN 65433 (Autonomes System) siehe: https://wiki.freifunk.net/IC-VPN Öffentliche IPv6-Adressen: ''2001:bf7:70::/44'' die ''70'' ist entsprechend Wahlkreis ''70'' "Pinneberg" vergeben worden. Transfernetz IPv6: ''fec0:a:cf:1e'' 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. ===== Vorüberlegungen ===== * Damit eine redundante Anbindung realisiert werden kann, sollten zwei Systeme das Routing übernehmen * gate01 * 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. #!/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 ===== Tinc ===== * ReplayWindows (in Bytes) in ''tinc.conf'' erhöhen hilft ggf. bei Packet losts? * 16 bytes = 128 packets Infos von tinc erfragen * ''kill -USR1 '' - dumps the connection list * ''kill -USR2 '' - 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 [...] log syslog { auth, fatal, bug }; log "/var/log/bird/default.log" { debug, trace, info, remote, warning }; log "/var/log/bird/error.log" { error }; [...] Sinnvollerweise sollten die Protokolldateien rotiert werden, wir wollen die Logdateien für eine Woche vorhalten, für jeden Tage eine: /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 } Übertragung des Routings an die anderen Gateways: 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; } 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: grep "Invalid NEXT_HOP" /var/log/syslog | cut -f 7,13 -d "> " | sort | uniq -c | sort -n | tail ===== Namensauflösung mit Bind ===== Ziel ist es, daß die Namen anderer Communities aufgelöst werden. TODO Testen bzw. zu Ende konfigurieren [...] include "/etc/bind/named.conf.icvpn-zones"; Wenn der folgende Wert auf ''auto'' steht (Standardeinstellung), dann funktioniert die Namensauflösung im ICVPN nicht. Deshalb: dnssec-validation no; Die ICVPN-Metadaten werden auf die übrigen Gateways übertragen. Momentan ist Gate03 konfiguriert. #!/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