Das lässt sich seit einiger Zeit eleganter lösen, habe beim durchstöbern der Supportdaten, einen undokumentierten Parameter gefunden, den man händisch in die vpn.cfg eintragen muss.
remotehostname = "xxxxxxx";
keepalive_ip = xxx.xxx.xxx.xxx; <--- hier einfache einen Host eintragen, der immer online ist, die Box selbst, sollte es nicht sein (warum siehe #165)
localid {
Vor einiger Zeit hat das Setzen der keepalive_ip noch nicht geholfen, da avmike das Senden von KeepAlive-Paketen erst dann ausführte, wenn die Verbindung schon stand. Macht ja eigentlich auch so Sinn ... wenn niemand etwas aus dem entfernten Netz will, braucht auch kein keepalive gesendet zu werden.
Solange kein Paket mit einer Zieladresse im entfernten Netz auf "dev dsl" zum Routen ankommt, wird die IPSec-Verbindung gar nicht erst aufgebaut.
Kommt dann ein Paket an, wird als erstes der Tunnel aufgebaut und dann die "angehaltene" Verbindung hergestellt (sprich das Paket, was den Start verursachte, wird weitergeleitet).
Dauert der Tunnelaufbau zu lange, kommt es auch gerne mal zu einem ersten Timeout bei der Verbindung, die den Tunnelaufbau verursacht hat.
Ist das mit der keepalive_ip jetzt anders und der Tunnelaufbau wird auch von Keepalive-Pings initiiert ?
So ich habe eine Menge ausprobiert (conn_type = conntype_user um nur eine Initiator zu haben, always_renew=yes, keepalive_ip=xxx.xxx.xxx.xxx und use_nat_t = yes gesetzt um die nicht mehr funktionierende Lan to Lan VPN Verbindung an die immer noch funktionierende OSX/IOS/Android/Win7 VPN Verbindung anzugleichen. Leider immer noch kein erfolg.
Das meinte ich so nicht ...
Einfach bei der bisher vorhandenen VPN-Konfiguration auf der "Responder"-Seite die Informationen zur IP-Adresse und/oder zum DynDNS-Namen der Gegenstelle (Initiator) weglassen, dann wird der Tunnelaufbau automatisch nur von einer Seite aus möglich und der Responder wartet nur auf eingehende Verbindungen.
Wenn ich die AVM-Implementierung richtig verstehe, wird mit conntype_user der Transport-Modus eingerichtet, Du brauchst aber den Tunnel-Modus. Wenn eine der beiden Seiten den falschen Modus auswählt, kommen solche Nachrichten wie
"fehlerhafte Paketlaenge: Hdr-length > read-Data" zustande, da der Aufbau der IPSec-Pakete im jeweiligen Modus abweicht (
http://de.wikipedia.org/wiki/IPsec).
Probiere doch mal bitte wie beschrieben ... also ohne Hinweis auf die öffentliche Adresse der Gegenstelle - weder DNS-Name noch IP-Adresse - in der Konfiguration des "Responders" und poste dann die Logs der beiden Seiten noch einmal (bzw. besser als Attachment).
[OT]
Das mit der IP-Telefonnummer würde ich ja gerne noch erläutern, aber im Moment nervt mich die vBulletin-Software hier mit ständigen Fehlern (404) beim Drücken auf Vorschau.
[/OT]
So, ich versuche es mal mit der SIP-Konfiguration ...
1. Auf der "Responder"-Seite ein neues Telefoniegerät (LAN/WLAN) anlegen.
2. Auf der "Initiator"-Seite eine neue Internet-Rufnummer einrichten mit
- anderer Anbieter
- Internet-Rufnummer = Benutzername = in Schritt 1 vergebene Rufnummer
- Kennwort aus Schritt 1
- Registrar = LAN-IP der Responder-Box
- kein Proxy
- Anmeldung immer über eine Internetverbindung
Damit versucht die Initiator-Box beim Start diese Telefonnummer beim Responder zu registrieren und löst so den Aufbau des Tunnels aus. Das ist für mich bisher (außer keepalive geht inzwischen auch ohne aufgebauten Tunnel, was aber m.E. eher ein Bug wäre, s.o.) der effektivste Weg, da so außer den beiden beteiligten Boxen kein anderes Gerät involviert ist. Das AVM-KeepAlive funktionierte nach meinen früheren Tests auch eher so, daß bei Nichterreichbvarkeit dieser IP der avmike von einem Abbruch der Verbindung ausging und die betreffenden SA nur verwarf. Wenn ich mir jetzt die IKE-Logs aber genau ansehe, hat AVM offenbar irgendwann mal DPD (RFCeingebaut:
Code:
... remote peer supported XAUTH
... remote peer supported DPD
... remote peer supported NAT-T RFC 3947
, auch wenn ich nicht eindeutig erkennen kann, ob es auch wirklich verwendet wird und mit einem Ping (ICMP) zur keepalive_ip nicht nur das Verfallen von NAT-Einträgen auf dem Weg zwischen den beiden Endpunkten verhindert wird. Der Eintrag "avmike:>>>4500 nat-t-keepalive[109.45.xxx.xxx:4500]" läßt eigentlich letzteres vermuten. Da hilft wohl nur mal ein Paketmitschnitt ...
Selbst wenn man das Einrichten des Telefoniegeräts auf dem Responder wegläßt, versucht der Initiator nach dem Start dann eben eine nicht existierende Nummer zu registrieren, was aber auch zum Aufbau des Tunnels führt. Die dabei im Systemprotokoll des Initiators entstehenden Fehlermeldungen können jedoch nerven und das Interval, in dem die fehlgeschlagene Registrierung erneut versucht wird, verlängert sich irgendwann auch recht ordentlich, so daß dann auch mal ein unbeabsichtigter Abbau des Tunnels (die "default lifetime" einer SA zwischen zwei Fritzboxen ist 3600 Sekunden) stattfinden kann, wenn kein DPD aktiviert ist.
Bei erfolgreicher Registrierung wird dagegen alle 150 Sekunden ein SIP-REGISTER wiederholt und das reicht dann normalerweise um den Tunnel am Leben zu halten bzw. spätestens 149 Sekunden nach dem Ablauf der SA ein Rekeying auszuführen.