[WLANware] [ANNOUNCE] fastd v9

Matthias Schiffer mschiffer at universe-factory.net
Sun Sep 8 18:59:12 CEST 2013


Moin,
es ist endlich so weit: fastd v9 ist fertig :D (und da von einigen
Leuten gewünscht: Announces ab jetzt auch an WLANware :) )

Die Liste der Änderungen ist ganz schon lang, die Commit-Stats sprechen
für sich: 136 Commits, 42 files changed, 3724 insertions, 2315
deletions. Neben sehr vielen internen Umbauten und Refactoring gibt es
wie immer eine ganze Menge neue Features und ein paar Bugfixes.

Eine Änderung möchte ich besonders herausstellen: Das fastd-Binary ist
trotz der Vielzahl der neuen Features deutlich kleiner als in v8. So ist
das typische OpenWRT-ar71xx-Binary (mit xsalsa20-poly1305, ohne
aes128-gcm) von fast 120 KB auf gerade mal 91.7 KB geschrumpft.

Die neue Version ist natürlich 100% kompatibel zu den bisherigen
fastd-Versionen, und ich würde wegen der unten genannten Bugfixes jedem
empfehlen, zu updaten. Debian-Pakete stehen schpn bereit, auch das AUR
und unser OpenWRT-Feed sind bereits aktualisiert. Die Dokumentation im
Wiki [1] werde ich in den nächsten Tagen aktualisieren.

Grüße,
NeoRaider / Matthias
Freifunk Lübeck


[1] https://projects.universe-factory.net/projects/fastd/wiki/Documentation


=== Neue Features ===

* Support für mehrere Remote-Zeilen in einer einzigen Peer-Definition
 - Die Remote-Zeilen müssen weiterhin alle auf denselben Peer zeigen (da
die Keys eindeutig sein müssen), aber es ist möglich, mehrere
alternative Domains für einen Peer, eine IP-Adresse als Fallback,
und/oder mehrere alternative Ports für einen Peer zu definieren
 - Das Float-Attribut ist jetzt nicht mehr Teil der Remote-Zeile,
sondern wird als eigene Direktive angegeben ('float yes|no;'), da sie
sich auf die ganze Peer-Definition auswirkt (die alte Syntax wird
natürlich weiterhin unterstützt, ist aber deprecated)
 - Die einzelnen Remotes werden von oben nach unten durchprobiert, bis
ein erfolgreicher Handshake abgeschlossen wurde (zwischen den Handshakes
wird immer etwa 20s gewartet)

* Experimenteller Support für FreeBSD und OpenBSD; wenn es ersthaftes
Interesse gibt, würde ich auch Support für NetBSD, DragonFly, Solaris,
Darwin (MacOS X) und/oder Windows hinzufügen...

* pre-up- und post-down-Scripte, die vor dem Öffnen bzw. nach dem
Schließen des TUN/TAP-Interfaces ausgeführt werden

* Korrektes Verhalten auf Hosts mit mehreren IP-Adressen (insbesondere
sind jetzt Tunnel zwischen IPv6-Link-Local-Adressen möglich, dazu muss
die Adresse im Remote-Eintrag wie ein Hostname in "" geschrieben werden,
z.B. 'remote "fe80::1234:5678%eth0" port 10000;')

* Mit der Option 'pmtu yes|no|auto;' kann das DF-Bit für die
fastd-Pakete unabhängig vom System-Default gesetzt werden, falls man es
mit kaputten Netzwerken zu tun hat, in denen PMTU nicht korrekt funktioniert

* Es gibt den neuen Log-Level debug2; einige Debug-Meldungen, die
potentiell sehr häufig auftreten, werden nur noch auf debug2 ausgegeben

* RX/TX-Stats: Bei einem SIGUSR1 gibt fastd jetzt nicht mehr nur eine
Liste der Peers aus, sondern auch Paket/Byte-Stats aus; bei den
gesendeten Paketen tauchen außerdem Zähler für Dropped (Send-Queue voll)
und Error (normalerweise no route to host oder sowas) auf

* flex ist keine Build-Abhängigkeit mehr

* OpenWRT: Es sind jetzt alle relevanten Optionen auch durch uci zu
setzen (inklusive Peer Groups)


=== Bugfixes ===

* --generate-key kann jetzt ordentlich durch SIGTERM/SIGINT unterbrochen
werden (z.B. Ctrl-C)

* establish/disestablish/verify-Scripten hat ohne eine Bind-Zeile in der
Config einen Segfault erzeugt, und mit Bind-Zeile mit zufälligem Port
den lokalen Port als 0 angegeben

* Bei Paketverlust während eines Handshakes konnte es passieren, dass
für längere Zeit Meldungen "sending packet for old session"-Meldungen
erschienen sind. Diese Meldung ist jetzt nicht nur auf Log-Level debug2
degradiert worden, auch die Ursache wurde gefixt.

* Geringfügige Schwäche des Crypto-Protokolls wurde gefixt: Es war
möglich, wenn zwei Peers genau gleichzeitig beide einen Handshake
initiiert haben, dass sie beide eine Session mit demselben Session Key
etabliert haben, und beide dabei dachten, sie wären Initiator der
Session. Danach würden sie für etwa 90s (bis die Session eine Timeout
hat) ihre Pakete mit denselben Cipherstream verschlüsseln, sodass ein
Angreifer, der den Plaintext der Pakete des einen Peers kennt, auch die
Pakete der anderen Seite entschlüsseln kann.
In der Praxis sollte dieser Angriff auch mit v8 keine Relevanz haben;
mit v9 ist er nicht mehr möglich.

* Debian: Das Init-Script legt jetzt korrekt PID-Files an (und kann
fastd somit korrekt wieder beenden)


=== Kleinere Änderungen am Verhalten ===

* In Peer-Directories werden jetzt Dateien, die mit ~ enden, ignoriert

* In Konfiguration-Dateien wird das Carriage-Return-Zeichen '\r' ignoriert

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 263 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freifunk.net/pipermail/wlanware-freifunk.net/attachments/20130908/3a7f6114/attachment.pgp>


More information about the WLANware mailing list