Re: vpnc mal wieder

From: Christian Lackas <c.lackas(at)kfa-juelich.de>
Date: Fri, 30 Apr 2004 16:05:57 +0200

* Peter Wullinger <some-mail-drop(at)gmx.net> [040430 09:44]:

Hallo Peter,

> Beim Ausprobieren von vpnc
> (http://www.unix-ag.uni-kl.de/~massar/vpnc/) kommt bei mir unter
> -CURRENT die Fehlermeldung:
> socket(SOCK_RAW): Protocol not supported.
> Eine Neuübersetzung der Kernels mit
> - FAST_IPSEC,
> - FAST_IPSEC ohne INET6
> - IPSEC und IPSEC_ESP
> - nur IPSEC_ESP
> führt zum selben Resultat.

ich habe den Port intensiv unter RELENG_5_2 UND RELENG_4 getestet.
-CURRENT selbst habe ich nicht, und kann es daher auch nicht testen.
Kann mir aber nicht vorstellen, dass es da nicht laufen sollte.

> Beim einem Kernel völlig ohne IPSec läuft der ISAKMP-Handshake
> mit der Gegenstelle durch und auch das Interface wird konfiguriert.
> IPSec kann ich mangels Kernelfunktionalität allerdings natürlich
> nicht betreiben und versuchsweise Pings auf die Tunneladressen
> landen auch im Datennirwana.

Was meinst du mit 'IPSec' betreiben? Den Teil macht der vpnc ja selbst
(also ohne Kernel, wobei das IPSec ja ein bisschen von Cisco proprietär
'aufgewertet' wurde). Alle Pakete werden in ESP verpackt (dafür braucht
man unter FreeBSD 4 FAST_IPSEC, sonst bekommt man die von dir genannte
Fehlermeldung, was aber mehr ein Workaround ist). Unter FBSD 5 habe ich
die Fehlermeldung allerdings noch nicht gesehen.

Ich habe in meiner RELENG_5_2 Kernel-Config gar nichts von IPSEC stehen.
Und bei mir funktioniert vpnc auch mit GENERIC.

> Mach ich irgendwas falsch oder sollte ich den Port jetzt erst mal als
> nicht funktionstüchtig betrachten?

Du bist bisher der einzige, von dem ich weiss, dass der Port bei ihm
nicht geht. Und einen PR diesbezüglich hat noch niemand ausgefüllt.

Kannst du mal folgendes minimales Programm bei dir laufen lassen:

    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    int main() {
        int fd;
        fd = socket(PF_INET, SOCK_RAW, IPPROTO_ESP);
        printf("fd = %d\n", fd);
        if (fd == -1)
            perror("socket(SOCK_RAW)");
    }

Am besten mal unter GENERIC und sagen was da rauskommt. Das versucht,
genau wie vpnc, einen ESP raw socket zu erstellen.

Wenn das geht, dann würde ich das Problem eher woanders vermuten. Hast
du bei dir irgendeine Firewall oder sowas laufen, so dass die ESP-Pakete
verloren gehen können? Was für routen hast du eingestellt und kannst du
das VPN-Gateway auch wirklich erreichen (muss aber ja, wenn der
Handshake klappt).
Und kannst du statt CURRENT mal ein RELEASE (4.9 oder 5.2.1, ...)
ausprobieren?

Aktuelle (seit gestern) Port-Version is übrigens 0.2_4.

Gruss
 Christian

-- 
Murphys Law 20:
Es ist unmöglich, etwas narrensicher zu machen, weil Narren so
einfallsreich sind. Konstruiere ein System, das absolut narrensicher
ist, und nur Narren werden es benutzen.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 30 Apr 2004 - 16:06:29 CEST

search this site