Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Kommentar: Migration of unmigrated content due to installation of a new plugin


Hinweis

Wir verwendet seit geraumer Zeit Ansible zur Server Konfiguration und der Inhalt dieser Seite wurde nicht weiter gepflegt. Details findest du unter https://github.com/FreiFunkMuenster/Ansible-Freifunk-Gateway. Sprich uns bei Fragen gerne im Forum an.

...


In diesem Artikel wird beschrieben, wie du einen Server für Freifunk Münsterland als Gateway-Server mit fastd einrichten kannst.


Für den Zugang zum Internet benötigen die meisten Freifunk-Netze mindestens zwei Serverdienste:

...

Beim Freifunk Münsterland werden aktuell beide Dienste auf einem Server installiert. Daher ist der genutzte Begriff "Gateway-Server" technisch gesehen nicht ganz richtig.

Installation

Die Wahl der Linux-Distribution

Wir verwenden bisher auf unseren Gateways Debian Wheezy, haben daher auch die meiste Erfahrung damit, wie ein Gateway unter dieser Distribution zu betreiben ist. Es sollte aber auch möglich sein, nach dieser Anleitung ein Gateway unter Ubuntu einzurichten. Bei anderen Distributionen ist deutlich mehr eigene Recherche nötig.

Paketquellen

Wir verwenden folgende zusätzliche Paketquellen auf unseren Servern:

Codeblock

deb http://repo.universe-factory.net/debian/ sid main


Codeblock

deb http://download.opensuse.org/repositories/home:/fusselkater:/ffms/Debian_7.0/ /

Zusätzlich benötigen wir die wheezy-Backports für libjson-c2 (Abhängigkeit von fastd >= 15)

Codeblock

deb http://http.debian.net/debian wheezy-backports main

Um die nötigen Schlüssel hinzuzufügen, mache folgendes:

Codeblock

gpg --keyserver pgpkeys.mit.edu --recv-key 16EF3F64CB201D9C
gpg -a --export 16EF3F64CB201D9C | apt-key add -


Codeblock

wget http://download.opensuse.org/repositories/home:fusselkater:ffms/Debian_7.0/Release.key
apt-key add - < Release.key

Nun sind die benötigten Repos eingetragen und du kannst mit

Codeblock

aptitude update

die Paketquellen aktualisieren.

Notwendige Pakete

Folgende Pakete müssen nun auf deinem Gateway installiert werden:

...

Oder als ein Befehl:

Codeblock

aptitude install sudo bridge-utils batctl=2013.4.0-1 bird haveged fastd radvd isc-dhcp-server bind9 git alfred alfred-json batman-adv-dkms nagios-nrpe-server ntp

Tinc wird in der Version 1.11~pre11 benötigt.
Eine für Debian Wheezy geeignete version muss entsprechend https://gist.github.com/mweinelt/efff4fb7eba1ee41ef2d manuell Kompiliert werden.
Die Installation erfolgt ebenfalls manuell mittels dpkg -i <dateiname>.deb

IP Forwarding aktivieren

Konfigurationsdatei /etc/sysctl.d/forwarding.conf
<file - forwarding.conf>

...

Jetzt solltest du noch einmal rebooten, um diese Änderung zu aktivieren.

batman-adv Kernelmodul automatisch laden

In die Datei /etc/modules müssen die folgenden Zeilen ergänzt werden um das batman-adv Kernelmodul beim Start des Servers automatisch zu laden:

Codeblock

batman-adv

batman-adv Version Prüfen

Nach dem Reboot solltest du die batman-adv Version prüfen. Diese muss derzeit 2013.4.0 sein.

Codeblock

modinfo batman-adv

Netzwerkkonfiguration

Das Loopback Interface muss durch die öffentliche IP des Gateway Servers ergänzt werden

...

auto lo
iface lo inet loopback

Codeblock

        up ip address add <öffentliche ipv4 die wir vom FF Rheinland erhalten>/32 dev lo

...

iface br0 inet static

Codeblock

        address 10.43.0.z
        netmask 255.255.0.0
        bridge_ports none 

iface br0 inet6 static

Codeblock

        address 2a03:2260:115::z
        netmask 48

...

iface bat0 inet6 manual

Codeblock

        pre-up modprobe batman-adv
        post-up ip link set dev bat0 up
        post-up brctl addif br0 bat0
        post-up batctl it 10000
        post-up ip rule add from all fwmark 0x1 table 42

...

auto tun-ffrl-???
iface tun-ffrl-??? inet static

Codeblock

        address <lokale IPv4 Adresse im Tunnel>
        netmask 255.255.255.254
        pre-up ip tunnel add $IFACE mode gre local <IPv4 Adresse dieses Servers> remote <IPv4 Adresse der Gegenstelle> ttl 255
        post-up ip link set $IFACE mtu 1400
        post-down ip tunnel del $IFACE

iface tun-ffrl-??? inet6 static

Codeblock

        address <lokale IPv6 Adresse im Tunnel>/64
        netmask 64

...

Um diese Änderung zu aktivieren, startest du das Netzwerk einmal per service networking restart neu.

IPtables-Regeln

Nun brauchst du noch IPtables-Regeln. Lege dazu die Konfigurationsdatei /etc/iptables.up.rules an, und trage folgendes ein.

...

Wiki-Markup
<file - iptables.up.rules>
*filter 
:INPUT ACCEPT \[0:0]
:FORWARD ACCEPT \[0:0]
:OUTPUT ACCEPT \[0:0]
COMMIT




















  1. Wiki-Markup
    Regeln zum markieren eingehender Pakete
    *mangle
    :PREROUTING ACCEPT \[0:0]
    :INPUT ACCEPT \[0:0]
    :FORWARD ACCEPT \[0:0]
    :OUTPUT ACCEPT \[0:0]
    :POSTROUTING ACCEPT \[0:0]
    -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o tun-+ -j TCPMSS --set-mss 1280
    -A PREROUTING -i br0 -j MARK --set-xmark 0x1/0xffffffff
    -A OUTPUT -o eth0 -p udp --dport 53 -j MARK --set-xmark 0x1/0xffffffff
    -A OUTPUT -o eth0 -p tcp --dport 53 -j MARK --set-xmark 0x1/0xffffffff
    COMMIT



















  2. Wiki-Markup
    Route nach extern per nat.
    *nat
    :PREROUTING ACCEPT \[0:0]
    :INPUT ACCEPT \[0:0]
    :OUTPUT ACCEPT \[0:0]
    :POSTROUTING ACCEPT \[0:0]
    -A POSTROUTING -o tun-+ -j SNAT --to-source <öffentliche IPv4 des Gateway>
    COMMIT
    </file>










Diese Regel sorgt dafür, dass dein Router auch das NAT übernimmt.

...

Und mache sie danach ausführbar:

Codeblock

chmod +x /etc/network/if-pre-up.d/iptables

Jetzt lädst du noch fix einmal die IPtables-Regeln via

Codeblock

iptables-restore < /etc/iptables.up.rules

Einrichtung des BGP Daemon

Der Austausch von Routen mit dem Rheinland Backbone erfolgt über BGP.
Hierfür wird der Routing Daemon bird verwendet.

...

protocol direct {

Codeblock

        interface "*";

};

protocol kernel {

Codeblock

        device routes;
        import all;
        export all;
        kernel table 42;

...

protocol device {

Codeblock

        scan time 8;

};

function is_default() {

Codeblock

        return (net ~ [0.0.0.0/0]);

...

function is_self_net() {

Codeblock

    return (net ~ [ 10.43.0.0/16+ ]);

...

function is_freifunk() {

Codeblock

  return net ~ [ 10.0.0.0/8+,
    104.0.0.0/8+
  ];

...

filter hostroute {

Codeblock

        if net ~ <Öffentliche IPv4 Adresse vom Rheinland Backbone, 185.66.193.48>/32 then accept;
        reject;

...

template bgp internal {

Codeblock

        local as <Unsere AS Nummer, 65251>;
        import filter {
                preference = 99;
                accept;
        };
        export where source = RTS_BGP;
        gateway direct;
        next hop self;

...

protocol bgp gw_??? from internal {

Codeblock

        neighbor <IP-Adresse innerhalb des FF netztes, z.B. 10.43.0.4> as <Unsere AS Nummer, 65251>;

...

template bgp uplink {

Codeblock

        local as <Unsere AS Nummer, 65251>;
        import where is_default();
        export filter hostroute;
        next hop self;
        multihop 64;
        default bgp_local_pref 200;

...

protocol bgp ffrl_??? from uplink {

Codeblock

        source address <Unsere IP in GRE Tunnel, 100.64.0.109>;
        neighbor <IP der Gegenstelle im GRE Tunnel, z.B. 100.64.0.108> as 201701;

...

protocol bgp ffrl_??? from uplink {

Codeblock

        source address <Unsere IP in GRE Tunnel, 100.64.0.109>;
        neighbor <IP der Gegenstelle im GRE Tunnel, z.B. 100.64.0.108> as 201701;

...

template bgp icvpn {

Codeblock

  local as 65251;
  # ignore routes for our own network
  import where (is_freifunk() && !is_self_net());
  export where is_freifunk();
  route limit 10000;

...

protocol direct {

Codeblock

        interface "*";  # Restrict network interfaces it works with

...

protocol kernel {

Codeblock

        device routes;
        import all;
        export all;             # Default is export none
        kernel table 42;                # Kernel table to synchronize with (default: main)

...

protocol device {

Codeblock

        scan time 10;           # Scan interfaces every 10 seconds

...

function is_default() {

Codeblock

        return (net ~ [::/0]);

}

  1. own networks

...

filter hostroute {

Codeblock

        if net ~ 2a03:2260:115::/48 then accept;
        reject;

...

template bgp internal {

Codeblock

        local as <Unsere AS Nummer, 65251>;
        import filter {
                preference = 99;
                accept;
        };
        export where source = RTS_BGP;
        gateway direct;
        next hop self;

...

protocol bgp gw_??? from internal {

Codeblock

        neighbor <Interne IPv6 Adresse des anderen Gateways, z.B. 2a03:2260:115::6> as <Unsere AS-Nummer, 65251>;

...

template bgp uplink {

Codeblock

        local as <Unsere AS Nummer, 65251>;
        import where is_default();
        export filter hostroute;
        gateway recursive;

...

protocol bgp ffrl_??? from uplink {

Codeblock

        description "Rheinland Backbone";
        source address <Unsere IPv6 Adresse im GRE Tunnel, z.B. 2a03:2260:0:3e::2>;
        neighbor <IPv6 Adresse der Gegenstelle im GRE Tunnel, z.B. 2a03:2260:0:3e::1> as 201701;

...

protocol bgp ffrl_??? from uplink {

Codeblock

        description "Rheinland Backbone";
        source address <Unsere IPv6 Adresse im GRE Tunnel, z.B. 2a03:2260:0:3f::2>;
        neighbor <IPv6 Adresse der Gegenstelle im GRE Tunnel, z.B. 2a03:2260:0:3f::1> as 201701;

...

template bgp icvpn {

Codeblock

        local as 65251;
        # ignore routes for our own network
        import where is_freifunk() && !is_self_net();
        export where is_freifunk() || (source = RTS_BGP);
        route limit 10000;

...

Die verwendeten IC-VPN Konfigurationsdaten werden später erzeugt und jetzt erst einmal leer angelegt.

Codeblock

touch /var/tmp/bird-icvpn.conf
touch /var/tmp/bird6-icvpn.conf

Anschließend kann bird mit service bird start und service bird6 start gestartet werden.
Die Befehle birdc show protocols und birdc6 show protocols zeigen den zustand der Verbindungen an.

Einrichtung des Mesh-VPNs

Für das Mesh-VPN wird fastd eingesetzt. Hierzu erzeugst du als erstes das Konfigurationsverzeichnis:

Codeblock

mkdir -p /etc/fastd/vpn/peers

Als nächstes erzeugst du die Schlüssel für deinen Server. Dazu führst du folgendes aus:

Codeblock

fastd --generate-key

dieser Befehl zeigt dir die Schlüssel lediglich an. Heißt du musst sie dir aus dem Terminal kopieren, um sie im nächsten Schritt verwenden zu können.

...

  1. Configure a shell command that is run on connection attempts by unknown peers (true means, all attempts are accepted)
  2. on verify "true";

on verify "

Codeblock

  /bin/bash /var/gateway-ffms/fastd/verify.sh $PEER_KEY

...

  1. Configure a shell command that is run when fastd comes up

on up "

Codeblock

  chmod ugo+rw /tmp/fastd-status
  ip link set dev $INTERFACE address de:ad:be:ef:43:XX
  ip link set dev $INTERFACE up
  ifup bat0
  batctl if add $INTERFACE
  batctl gw server DOWNSTREAM/UPSTREAM
  batctl vm server
  ip rule add from ÖFFENTLICHE-IPv4-ADRESSE/METZMASKE lookup 42
  ip -6 rule add from ÖFFENTLICHE-IPv6-ADRESSE/METZMASKE lookup 42

...

Nun brauchst du die Peers aus unserem GIT-Repository. Wechsle dazu in das Verzeichnis /var und führe folgendes aus:

Codeblock

git clone https://github.com/FreiFunkMuenster/gateway-ffms.git

Zum testen der fastd-Konfiguration führe folgendes aus:

Codeblock

fastd -c /etc/fastd/vpn/fastd.conf

Anschließend kannst du fastd mit

Codeblock

service fastd start

starten.

Den Öffentlichen Schlüssel deines Servers schickst du uns, damit wir ihn einpflegen können.

Einrichtung des InterCity VPNs

Das InterCity-VPN wird über Tinc aufgebaut.
Dokumentation im Freifunk Wiki

...

Anschließend wird das Repo https://github.com/freifunk/icvpn auf den lokalen Server geklont.

Codeblock

cd /var 
git clone https://github.com/freifunk/icvpn

Anschließend muss das Verzeichnis /etc/tinc/icvpn erstellt werden.

Codeblock

mkdir /etc/tinc/icvpn
ln /var/icvpn/hosts /etc/tinc/icvpn/hosts -s

Als nächstes werden die Schlüssel für den Server erzeugt.
Die Dateien müssen in dem Verzeichnis /etc/tinc/icvpn gespeichert werden.

Codeblock

tinc generate-keys

Jetzt folgt die Konfigurationsdatei /etc/tinc/icvpn/tinc.conf

Codeblock

Name = muensterland<Kürzel des Gateways>
PrivateKeyFile = /etc/tinc/icvpn/rsa_key.priv
Mode = Switch
PingTimeout = 30
Port = 656
Hostnames = yes 

Im Gleichen Verzeichnis muss auch ein Script /etc/tinc/icvpn/tinc-up angelegt werden.
Die IP Adresse innerhalb des VPNs muss für den Server muss in der Liste https://wiki.freifunk.net/IC-VPN eingetragen werden.

Codeblock

#!/bin/sh
/sbin/ip link set dev $INTERFACE up
/sbin/ip addr add dev $INTERFACE 10.207.X.Y/16 broadcast 10.207.255.255 scope link
/sbin/ip -6 addr add dev $INTERFACE fec0::a:cf:X:Y/96 preferred_lft 0

In der Datei /etc/tinc/nets.boot wird anschließend folgende Zeile ergänzt damit Tinc das Netzwerk automatisch startet.

Codeblock

icvpn

TODO: Update Mechanismus für IC-VPN Hosts ??

IPv6 Router Advertisements einrichten

Alle Gateway-Server teilen das selbe IPv6-Prefix durch Router Advertisements aus. Router Advertisements können maximal ein /64 großes Netz vergeben, weshalb dies hier getan wird.
Lege die Konfigurationsdatei /etc/radvd.conf mit folgendem Inhalt an:
<file - radvd.conf>
interface br0
{

Codeblock

    AdvSendAdvert on;
    IgnoreIfMissing on;

AdvManagedFlag off;

Codeblock

    AdvOtherConfigFlag on;
    AdvLinkMTU 1280;


Codeblock

    prefix 2a03:2260:115::z/64
    {
                AdvOnLink on;
                AdvAutonomous on;
                AdvRouterAddr on;

};

Codeblock

    RDNSS 2a03:2260:115::z {
    };

...

Als letztes kannst du radvd via

Codeblock

service radvd restart

neustarten.

DHCPv4 Server einrichten

Dein Server muss als nächstes IPv4-Adressen vergeben. Erzeuge dafür die Konfigurationsdatei /etc/dhcp/dhcpd.conf mit folgendem Inhalt:
<file - dhcpd.conf>
default-lease-time 240;
max-lease-time 1200;

...

subnet 10.43.0.0 netmask 255.255.0.0 {

Codeblock

    range 10.43.zz.1 10.43.zz.254;

option routers 10.43.0.x;

Codeblock

    option domain-name-servers 10.43.0.x;
    option interface-mtu 1280;

...

Nun testest du den DHCP-Server via:

Codeblock

dhcpd -f -d

und anschließend startest du den DHCP-Server via:

Codeblock

service isc-dhcp-server restart

DHCPv6 Server einrichten

Da Windows die RDNSS-Option aus den Router Advertisements nicht kennt, ist es außerdem nötig, einen DHCP6-Server laufen zu lassen. Da Debian derzeit keine Konfigurationsdateien hierfür anbietet, erstellen wir diese selbst.
Lege folgende Dateien an:
/etc/init.d/isc-dhcp6-server
<file bash isc-dhcp6-server>
#!/bin/sh
#
#

...

Wiki-Markup
if \[ ! -f "$DHCPD_DEFAULT" ]; then











Codeblock

        echo "$DHCPD_DEFAULT does not exist! - Aborting..."
        if [ "$DHCPD_DEFAULT" = "/etc/default/isc-dhcp6-server" ]; then
                echo "Run 'dpkg-reconfigure isc-dhcp-server' to fix the problem."
        fi
        exit 0

...

Wiki-Markup
if \[ -z "$DHCPD_PID" ]; then











Codeblock

        DHCPD_PID=$(sed -n -e 's/^[ \t]*pid-file-name[ \t]*"(.*)"[ \t]*;.*$/\1/p' < "$DHCPD_CONF" 2>/dev/null | head -n 1)

fi
DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd6.pid}"

test_config()
{

Codeblock

        if ! /usr/sbin/dhcpd -6 -t $OPTIONS -q -cf "$DHCPD_CONF" > /dev/null 2>&1; then
                echo "dhcpd self-test failed. Please fix $DHCPD_CONF."
                echo "The error was: "
                /usr/sbin/dhcpd -6 -t $OPTIONS -cf "$DHCPD_CONF"
                exit 1
        fi

...

  1. single arg is -v for messages, -q for none

check_status()
{

Codeblock

    if [ ! -r "$DHCPD_PID" ]; then
        test "$1" != -v || echo "$NAME is not running."
        return 3
    fi
    if read pid < "$DHCPD_PID" && ps -p "$pid" > /dev/null 2>&1; then
        test "$1" != -v || echo "$NAME is running."
        return 0
    else
        test "$1" != -v || echo "$NAME is not running but $DHCPD_PID exists."
        return 1
    fi

}

case "$1" in

Codeblock

        start)
                test_config
                log_daemon_msg "Starting $DESC" "$NAME"
                start-stop-daemon --start --quiet --pidfile "$DHCPD_PID" \
  1. -exec /usr/sbin/dhcpd – \
  2. 6 -q $OPTIONS -cf "$DHCPD_CONF" -pf "$DHCPD_PID" $INTERFACES
Codeblock

                sleep 2

if check_status -q; then

Codeblock

                        log_end_msg 0
                else
                        log_failure_msg "check syslog for diagnostics."
                        log_end_msg 1
                        exit 1
                fi
                ;;
        stop)
                log_daemon_msg "Stopping $DESC" "$NAME"
                start-stop-daemon --stop --quiet --pidfile "$DHCPD_PID"
                log_end_msg $?
                rm -f "$DHCPD_PID"
                ;;
        restart | force-reload)
                test_config
                $0 stop
                sleep 2
                $0 start
                if [ "$?" != "0" ]; then
                        exit 1
                fi
                ;;
        status)
                echo -n "Status of $DESC: "
                check_status -v
                exit "$?"
                ;;
  • )
Codeblock

                echo "Usage: $0 {start|stop|restart|force-reload|status}"
                exit 1 

...

Danach mache das Script ausführbar und lege es in den Autostart via:

Codeblock

chmod +x /etc/init.d/isc-dhcp6-server
update-rc.d isc-dhcp6-server defaults

...

Als letztes erzeuge die dhcpd6.leases Datei via:

Codeblock

touch /var/lib/dhcp/dhcpd6.leases

Nun kannst du den DHCPv6-Server starten:

Codeblock

service isc-dhcp6-server start

InterCity Routen und DNS

Für die nächsten Schritte werden die Repositories https://github.com/freifunk/icvpn-meta und https://github.com/freifunk/icvpn-scripts benötigt.
Beide Repositories werden erst einmal mit git in /var geklont.

Codeblock

cd /var
git clone https://github.com/freifunk/icvpn-meta
git clone https://github.com/freifunk/icvpn-scripts

Anschließend werden die BGP-Konfigurationen erzeugt und in bird geladen.

Codeblock

/var/icvpn-scripts/mkbgp -x muenster -p icvpn_ -s /var/icvpn-meta/ -f bird  -d icvpn -4 > /var/tmp/bird-icvpn.conf
birdc configure
/var/icvpn-scripts/mkbgp -x muenster -p icvpn_ -s /var/icvpn-meta/ -f bird  -d icvpn -6 > /var/tmp/bird6-icvpn.conf
birdc6 configure  

Als nächstes wird eine DNS Konfigurationsdatei erzeugt

Codeblock

/var/icvpn-scripts/mkdns -x muenster -x chaosvpn -x dn42  -s /var/icvpn-meta/ -f bind > /var/tmp/named.conf.icvpn

DNS-Server einrichten

Wir verwenden als DNS-Server bind9. Lege folgende 2 Konfigurationsdateien an:
/etc/bind/named.conf.options
<file - named.conf.options>
options {

Codeblock

        directory "/var/cache/bind";

_ If there is a firewall between you and nameservers you want

Codeblock

        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

_ If your ISP provided one or more IP addresses for stable

Codeblock

        // nameservers, you probably want to use them as forwarders.  
        // Uncomment the following block, and insert the addresses replacing 
        // the all-0's placeholder.

_ forwarders {

Codeblock

        //      0.0.0.0;
        // };

_

Codeblock

        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;
        
        recursion yes;
        allow-recursion { localnets; localhost; };

allow-notify { 10.43.0.10; };

Codeblock

        
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };

...

include "/var/tmp/named.conf.icvpn"

zone "ffms" {

Codeblock

        type slave;
        masters { 10.43.0.10; };
        file "/var/tmp/db.ffms.bak";

...

zone "nodes.ffms" {

Codeblock

        type slave;
        masters { 10.43.0.10; };
        file "/var/tmp/db.nodes.ffms.bak";

...

zone "gw.freifunk-muenster.de" {

Codeblock

        type slave;
        masters { 10.43.0.10; };
        file "/var/tmp/db.gw.freifunk-muenster.de.bak";

...

Nun kannst du bind9 starten:

Codeblock

service bind9 restart

NRPE Daemon einrichten

Die Gateways werden von einem zentralen Nagios Server überwacht.

Nach der Installation müssen in der Konfigurationsdatei /etc/nagios/nrpe.cfg die folgenden Zeilen angepasst werden:

Codeblock

allowed_hosts=10.43.0.13


Codeblock

include_dir=/var/gateway-ffms/nrpe/

Zusätzlich benötigt der NRPE-Daemon weitere Berechtigungen die in der /etc/sudoers vergeben werden müssen:

Codeblock

nagios  ALL=NOPASSWD: /usr/sbin/batctl
nagios  ALL=NOPASSWD: /usr/sbin/birdc
nagios  ALL=NOPASSWD: /usr/sbin/birdc6

Statistiken via Munin

Die Statistiken werden auf den Gateways via Munin erzeugt.

Zuerst muss Munin noch installiert werden, diese Installtion sollte erst jetzt, nachdem das Gateway komplett konfiguriert ist erfolgen, da die Interface-Konfigurationen für Munin während der Installation automatisch generiert werden, und man sich arbeit spart, wenn die Netzwerkinterfaces bei der Installation alle bereits existieren.

Codeblock

aptitude install munin-node

...

Zum Schluss startest du munin-node via

Codeblock

service munin-node restart

neu. Die Statistiken sollten bei dem nächsten Update von Munin auf unserer Seite https:_freifunk-muenster.de/stats/ erscheinen.

Abschluss

Dein Server ist nun für den Betrieb als Gateway für Freifunk Münster eingerichtet. Am besten startest du den Server einmal neu, und kontrolliere, dass alles korrekt hoch kommt.

Logging abschalten

"Freifunk steht unter Anderem für Netzneutralität und ist in keinster Weise an irgendwelchen Nutzer-, Meta-, Irgendwasdaten interessiert. Aus diesem Grund muss den sonst so redseligen Linux Daemonen das Logging abgewöhnt werden." (https://gluon-gateway-doku.readthedocs.org/de/latest/configuration/cleanup.html#logging)

Als erstes erzeuge ein "Schwarzes Loch" im im rsyslogd
Suche in /etc/rsyslog.conf folgende Zeile:
<file - rsyslog.conf>
.;auth,authpriv.none -/var/log/syslog
</file>
und ersetze sie durch
<file - rsyslog.conf>
.;auth,authpriv.none;local6.none -/var/log/syslog
</file>
Dann suche den Block
<file - rsyslog.conf>
.=info;.=notice;*.=warn;\

Codeblock

        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

</file>
und ändere ihn so, daß er wie folgt aussieht
<file - rsyslog.conf>
.=info;.=notice;*.=warn;\

Codeblock

        auth,authpriv.none;local6.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

</file>
dann füge noch das Folgende am Ende ein:
<file - rsyslog.conf>
#

  1. BlackHole
    #
    local6.* /dev/null
    </file>
    Jetzt den Logdämon restarten mit

    Codeblock
     service rsyslog restart 


...

Jetzt fehlt nur noch der Nameserver.
Erstelle die Datei /etc/bind/named.conf.logging mit folgendem Inhalt:
<file - named.conf.logging>
logging {

Codeblock

    channel null { null; };
    category default { null; };

...

Jetzt könnten die Daten auch nicht mehr weitergegeben werden, weil sie gar nicht vorhanden sind.

Bekannte Fehlerbilder

Kernelpanik /-oops - Reboot automatisieren

B.A.T.M.A.N. bereitet häufiger Probleme mit Kernelpanic /-oops. Um das Gateway möglichst schnell wieder verfügbar zu machen, habe ich folgendes eingerichtet:

...

Nicht vergessen! sysctl -p absetzen, um es auch sofort zu aktivieren.

Erstellen der Datei /etc/init.d/delfastdstat mit folgendem Inhalt:
<file - delfastdstat>
#! /bin/sh

      1. BEGIN INIT INFO
  1. Provides: delfastdstat
  2. Required-Start: $local_fs $syslog
  3. Required-Stop: $local_fs
  4. Default-Start: 2 3 4 5
  5. Default-Stop: 0 1 6
  6. Short-Description: delfastdstat
  7. Description: Loescht fastd-status nach crash
      1. END INIT INFO

if test -S /tmp/fastd-status

Codeblock

  then
    rm /tmp/fastd-status
  else
    echo NoOp

fi
exit 0

  1. Carry out specific functions when asked to by the system

case "$1" in

Codeblock

  start)
    #NoOp
    ;;
  stop)
    #NoOp
    ;;
  • )
Codeblock

    #NoOp
    ;;

esac

exit 0
</file>

Die Datei mit chmod 755 /etc/init.d/delfastdstat ausführbar machen und anschließend mit update-rc.d delfastdstat start 1 2 3 4 5 . stop 99 0 1 6 . aktivieren.
Falls es jetzt zu einem Kernelpanik /-oops kommt, startet das Gateway sofort neu. Vor dem fastd-Start wird der noch existierende Socket /tmp/fastd-status gelöscht.