fixing racoon
this was copied from http://outpost.h3q.com/blog/2004-05-17-01.blog
racoon unter MacOSX 10.3.3
Mon May 17 23:12:49 CEST 2004
Neulich hab ich mich dann doch mal aufgerafft und wollte im CCCB ipsec mit zertifikaten installieren (bisher ists mit preshared keys).
Nachdem ich die CA und die certs fuer den router bzw. einen client fertig hatte, machte mir ein "Bus error" beim racoon unter OSX einen strich durch die rechnung. Sobald der racoon das cert des routers geparsed hat, schmiert er ab.
Apple hat es irgendwie geschafft ipsec bzw. racoon unter OSX 10.3.3 soweit kaputt zu kriegen das es zumindest mit zertifikaten nicht mehr funktioniert. Ganz gross. Racoon gammelt da in einer uralt version rum und ist anscheinend nicht mehr mit dem ipsec stack in sync.
Und was macht man da? Genau, racoon selber bauen! (Ich gehe davon aus das man die developer tools hat.)
Leichter gesagt als getan, aber der reihe nach:
Erst einmal die aktuellen racoon sourcen von ftp.kame.net besorgen (hier in der version 20040408a). Danach von einem anderen bsd (in meinem fall FreeBSD 5.2.1) die headerfiles key_debug.h und key_var.h besorgen und nach "/usr/include/netkey" legen. (Warum apple die nicht hat, weiss ich nicht.. )
Jetzt das racoon auspacken und dort in "racoon-20040408a/libipsec" gehen. Dort im Makefile das die erste if anweisung loeschen und stattdessen "OPSYS!= uname -s" hinschreiben. Anschliessend alle "FreeBSD" im file durch "Darwin" ersetzen.
Ich staunte nicht schlecht als ich merkte, dass das default make unter OSX ein gnumake ist! gnumake wollen wir aber dort nicht, also machen wir ein "bsdmake" im "racoon-20040408a/libipsec" verzeichnis.
Nun welchseln wir nach "racoon-20040408a/racoon".
Dort setzen wir zuerstmal ein "./configure –host=freebsd" ab, leider kennt das Makefile kein Darwin.
Im Makefile in der LIBS zeile noch ein -lresolv hinzufuegen und die OBJS zeile um ein "../libipsec/pfkey.o" erweitern.
Weiterhin muss man im Makefile in der zeile 71 und 72 das "$.c" durch "rijndael-api-fst.c" und in der zeile 73 und 74 durch "rijndael-alg-fst.c" ersetzen. Das sieht dann so aus (geht bestimmt auch anders):
rijndael-api-fst.o: $(srcdir)/missing/crypto/rijndael/rijndael-api-fst.c
$(CC) $(CFLAGS) -c $(srcdir)/missing/crypto/rijndael/rijndael-api-fst.c
rijndael-alg-fst.o: $(srcdir)/missing/crypto/rijndael/rijndael-alg-fst.c
$(CC) $(CFLAGS) -c $(srcdir)/missing/crypto/rijndael/rijndael-alg-fst.c
In vmbuf.c fehlt muss in zeile 89 die vfree methode vollstaendig entfernt werden. (Von void bis }).
Nun fehlt noch ein include in "getcertsbyname.c", und zwar fehlt "arpa/nameser_compat.h" bei den include statements.
Und schon fertig! Ein make absetzen und warten, am ende kommt ein "make: [racoonctl] Error 1" aber das stoert nicht, wir wollen racoon und nicht unbedingt racoonctl.
Der neue racoon liegt dann als binary im verzeichnis und kann benutzt werden. Ein test mit exakt der gleichen konfiguration bei der der mitgelieferte racoon abschmiert funktionierte einwandfrei!
Bleibt zu hoffen das apple das fixed, sonst muss ich da nen darwinport draus machen bzw. patches bereitstellen.
Link to this Page