tr069 verstehen und nutzen

zur Dokumentation gebe ich dir Recht. Aber das ist eben "Technical Report", kein "Application Notes". Die Ingeneure und Programmer sind eben so, dass es mit der Doku meistens nicht deren Ding ist. Sonst wären sie Deutschlehrer oder Schriftsteller geworden.

Ich kann dem nicht ganz beipflichten. Es gibt eine simple Regel, die zwar nicht immer, aber oft zutrifft: Schlechte Doku == Schlechte Software. Ok, da wird es Einspruch geben; aber so sind meine Erfahrungen. Gute Softwaredokumentation sollte heute eine Selbstverständlichkeit sein.

Hast du es bereits alles gemacht, oder sind es nur Ideen?

Ja, ich habe einen ACS Server für ATM Devices in Perl programmiert. Respektive, ich arbeite daran.

zum 1. Heißt es, dass dein Apache nur http anbietet und CPE nimmt es an, weil https nicht zwingend notwendig ist? Das heißt die Übertragung läuft dann im Klartext? Dann kann man es natürlich loggen...

Laut Spez. kann es https sein, muss aber nicht. Du kannst das jeweils im Protokoll bei der ACS Adresse angeben. Gib dort einfach http://sein.server.net ein, voilà; schon kannst Du nachsehen, das die beiden miteinander besprechen. Dann schreibst Du einen Pel Script, der jeden Request verarbeitet:

my $b; while (my $line .= <STDIN>) {
$b .= $line;
}
open(HF, ">>/tmp/tr69.log"); print HF $b; close(HF);

Jetzt kannst Du alle Requests vom CPE im Klartext im file /tmp/tr69.log sehen.

zum 2. ist das, was ich im Posting #9 gezeigt hatte ein InformRequest von 1und1 ACS?

Das scheint etwas anderes zu sein, ein Inform-Request sieht immer gleich aus, etwa so:


<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">100</cwmp:ID></soap:Header>
<soap:Body>
<cwmp:Inform>
<DeviceId>
<Manufacturer>AVM</Manufacturer>
<OUI>00040E</OUI>
<ProductClass>FRITZ!Box</ProductClass>
<SerialNumber>001A4FBB8FC4</SerialNumber></DeviceId>
<Event soap-enc:arrayType="cwmp:EventStruct[3]">
<EventStruct>
<EventCode>4 VALUE CHANGE</EventCode>
<CommandKey></CommandKey></EventStruct>
<EventStruct>
<EventCode>1 BOOT</EventCode>
<CommandKey></CommandKey></EventStruct>
<EventStruct>
<EventCode>0 BOOTSTRAP</EventCode>
<CommandKey></CommandKey></EventStruct></Event>
<MaxEnvelopes>1</MaxEnvelopes>
<CurrentTime>0001-01-01T00:00:59</CurrentTime>
<RetryCount>1</RetryCount>
<ParameterList soap-enc:arrayType="cwmp:parameterValueStruct[8]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceSummary</Name>
<Value xsi:type="xsd:string">InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1, ADSLWAN:1, IPPing:1, WiFiLAN:1), VoiceService:1.0[2](SIPEndpoint:1, Endpoint:1)</Value></ParameterValueStruct>
...
</soap:Body>
</soap:Envelope>

Das heißt ich kann dann auf dem Apache als z.B. index.html zunächst mal den Inhalt dieser Ausgabe hinlegen? Wie sendet man dann die Antwort an CPE? Ich meine, wie lässt sich das überhaupt realisieren? Hast du es schon gemacht? Poste bitte ein Beispiel dazu. Mit dem Header für AVM habe ich ebenfalls nicht ganz kapiert.

Zurücksenden musst Du lediglich einen InformResponse. Wichtig dabei ist, dass Du dieselbe Sequenz wie im Request zurückgibst. Hier etwas Pesudo-Code

1. InformRequest parsen, zum Beispiel mit Perl's tollem XML::Simple;
2. ID aus Header ermitteln (im Beispiel 100):

<cwmp:ID soap:mustUnderstand="1">100</cwmp:ID></soap:Header>

Jetzt einen Response String generieren, der sieht etwa so aus:

$b = "<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">100</cwmp:ID>
</soap:Header>
<soap:Body>
<InformResponse><cwmp:MaxEnvelopes>1</cwmp:MaxEnvelopes>
</InformResponse>
</soap:Body>
</soap:Envelope>"

print "Set-Cookie: SESSION_ID=<EINDEUTIGEID>\nContent-type: text/xml\n\n";
print $b;

Wichtig: Es muss eine HTTP Session geführt werden. Sende beim ersten Response eine eindeutige SESSION_ID mit. Beim nächsten Request des CPE erh$ltst Du wieder, so kannst Du jedes CPE eindeutig identifizieren.

zum 3. Nochmals, wie machst du dass denn? Bitte Beispiele posten. Quittiert denn CPE dem ACS irgendwie, dass die Session gültig ist bevor ACS mit der Abfragerei loslegen kann? Wie sieht es dann aus?

Also, zuerst sendet das CPE einen Inform Request. Im HTTP-Response lieferst Du als Antwort einen InformResponse zurück. Damit steht die Session. Als nächstes bekommst Du vom CPE einen leeren Request. Jetzt liegt es an Dir, was Du damit tust. Bleibt dieser leere Request ohne Response, ist die Session beendet. Sendest Du im Response eine SOAP Anfrage, bekommst, Du eine entsprechende Antwort. Dann wiederholt sich das Spiel mit dem leeren Request vom CPE.

MfG
 
Danke bstocker für deine ausführliche Antwort. Kannst du bitte bei Gelegenheit deine Beispiele und Skripte in code-Tags umranden. Sonst sehen wir alle nur laute Smiles.
Leider habe ich wenig Zeit die ganzen Sachen jetzt auszuprobieren. Ich werde aber alle Anregungen zusammenfassen und ein Proxy zu 1und1 mit dem logger bauen, um genau zu schauen, was da passiert, wenn die Box sich "life" verbindet.

Gestern eine 7170 für 1und1 mit tr069 neu eingerichtet. Diesmal ins AVM-WEBIF-Protokoll geschaut. Das Ganze dauert kaum 20 Sekunden und fluptiwup die Box hat zwei VOIP-Nummer eingerichtet, 1und1 [email protected] E-Mail-Adresse im Push-Service und sonstige Sachen. Ist schon bequem, selbst wenn ich dafür erstmal die Box mit 29-Firm recovern musste.
Interessant war jedoch die Tatsache, dass die Box sich nachher geweigert hat, 37-Firm mit ds-mod anzunehmen! Es kommt die Meldung mit "nicht von AVM zugelassene Firmware", die ich bestätige und nachher war die Box weg. Manchmal kam noch der bekannte "internal communication error" im WEBIF. Nachdem ich im tr069.cfg den besagten Schalter auf "no" gesetzt hatte (dafür erstmal telnet per #96*7* aktiviert), konnte ich erst updaten. Ob es jetzt der Sprung von 29 auf 37 der Grund war, oder vorherige 1und1-Einrichtung, kann ich nicht sagen. Das war aber das erste Mal, wo tr069 mich am Update gehindert hat. Normalerweise bekam ich nur Probleme mit webif, die ich nachträglich (nach dem flashen) mit dem abschalten von tr069 beseitigt hatte. Deswegen, wenn die newbies wieder über abgebrochene Updates berichten werden, nicht misstraurisch werden: Es kommt tatsächlich vor, dass tr069 daran schuld ist.

MfG
 
"Kannst du bitte bei Gelegenheit deine Beispiele und Skripte in code-Tags umranden"

Ach so geht das! Hier also noch einmal ein Inform von einem 7170:

Code:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">100</cwmp:ID></soap:Header>
<soap:Body>
<cwmp:Inform>
<DeviceId>
<Manufacturer>AVM</Manufacturer>
<OUI>00040E</OUI>
<ProductClass>FRITZ!Box</ProductClass>
<SerialNumber>001A4FBB8FC4</SerialNumber></DeviceId>
<Event soap-enc:arrayType="cwmp:EventStruct[3]">
<EventStruct>
<EventCode>4 VALUE CHANGE</EventCode>
<CommandKey></CommandKey></EventStruct>
<EventStruct>
<EventCode>1 BOOT</EventCode>
<CommandKey></CommandKey></EventStruct>
<EventStruct>
<EventCode>0 BOOTSTRAP</EventCode>
<CommandKey></CommandKey></EventStruct></Event>
<MaxEnvelopes>1</MaxEnvelopes>
<CurrentTime>0001-01-01T00:00:59</CurrentTime>
<RetryCount>1</RetryCount>
<ParameterList soap-enc:arrayType="cwmp:ParameterValueStruct[8]">
<ParameterValueStruct>
<Name>InternetGatewayDevice.DeviceSummary</Name>
<Value xsi:type="xsd:string">InternetGatewayDevice:1.1[](Baseline:1, EthernetLAN:1, ADSLWAN:1, IPPing:1, WiFiLAN:1), VoiceService:1.0[2](SIPEndpoint:1, Endpoint:1)</Value></ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
</soap:Body>
</soap:Envelope>

Und hier ein dazu passender InformResponse:

Code:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<soap:Header>
<cwmp:ID soap:mustUnderstand="1">100</cwmp:ID>
</soap:Header>
<soap:Body>
<InformResponse><cwmp:MaxEnvelopes>1</cwmp:MaxEnvelopes>
</InformResponse>
</soap:Body>
</soap:Envelope>

Wenn ich das richtig verstanden habe, spielen die deutschen Provider automatisch neue Firmwares ein, ohne dass der User etwas davon erfährt. Ich finde das etwas problematisch. Vor allem, weil dies eine Weile dauert und das Modem während dieser Zeit offline ist. Zieht dann ein ungeduldiger Anwender den Stromstecker, gibt's seriöse Probleme! Gleich verhält es sich beim Einspielen einer falschen Firmware. Ich würde deshalb TR69 abschalten und die Upgrades manuell installieren. Ich werde dies so lösen, dass der Anwender auf der Homepage ein Upgrade "bestellen" kann. Dank dem asynchronen Modus von TR69 ist das ja möglich.
 
Nein, soweit ist es noch nicht. Zur Zeit sind diese Optionen noch per default deaktiviert (37-Firmware, WEBUI), aber schon angelegt. Das was die Provider (1und1) bereits tun, ist die aufwendige Einrichtung der Box und der Sachen im ControlCenter beim Provider zu automatisieren. Damit ersparen sie sich den aufwendigen Support. Was bei dieser Einrichtung passiert, würde mich schon interessieren, denn wie gesagt, es wird nicht nur die Konfiguration der Box geändert, sondern es werden auch gleich VOIP-Accounts beim Provider angelegt.

MfG
 
bstocker schrieb:
1. Auf dem CPE (z.B. Fritz!Box 7170) den Intervall von TR-069 so einstellen, dass alle 30 Sekunden eine Inform an den Server gesandt wird. Die ACS Server Adresse wird natürlich auf einen eigenen Server umgebogen, auf dem ein Apache läuft...

Wie macht die Fritzbox eigentlich die ACS Discovery? Lt. Standard _kann_ das CPE einen DHCP-Request starten, um den ACS zu finden. In meinen Traces sehe ich da aber nichts. Oder geht das nur mit vorkonfiguriertem PPPoE-Zugang und vorkonfigurierter ACS-URL?
 
Ich habe bisher noch keine Box gesehen, die ACS Discovery implementiert hat. Vielleicht habe ich aber nicht nicht genau hingesehen. Im Normalfall wird die URL des ACS vor der Auslieferung der Box konfiguriert, z.B. https://tr69.provider.de.
 
bstocker schrieb:
Ich habe bisher noch keine Box gesehen, die ACS Discovery implementiert hat. Vielleicht habe ich aber nicht nicht genau hingesehen. Im Normalfall wird die URL des ACS vor der Auslieferung der Box konfiguriert, z.B. https://tr69.provider.de.

Okay, die URL des ACS nebst SSL-Zertifikaten vorzukonfigurieren ist freilich sicherer als die DHCP-Discovery. (Außerdem schafft es Arbeitsplätze bei Customizern. :) )

Aber wie nimmt das CPE dann Kontakt zu dieser URL auf? Ein PPPoE-Zugang ist ja noch nicht eingerichtet...
 
Das würde mich auch interessieren. Vor allem wie macht es 1und1 anhand der nur 12-stelliger Zugangscode. Wie ich schon oben beschrieben hatte, hatte ich nach einem missglückten Einrichtungsversuch seltsame Dinge beobachtet. Als Zugangsdaten stand da ein "zerhacktes" Zugangscode drin. Zumindest die erste Hälfte davon war als Username. Die zweite vermutlich dass Passwort.
Voreingerichtete Zugänge hat die Box sowieso. Von daher reicht es nur Benutzername und Passwort. Alles andere kennt die Box schon. Beim Provider (in diesem Beispiel 1und1) existieren dann BEIDE Zugänge, mit denen sich der User anmelden darf. Einmal mit den richtigen Daten und einmal mit diesem Zugangscode. Und sie sind unterschiedlich!
Zu meinem missglückten Versuch. Ich hatte versucht eine 1und1-2DSL (2000 DSL abgespeckte Version) Box einer Bekannten auf meiner DSL-2 (16000 DSL) Leitung einzurichten. Eigentlich macht 1und1 keinen check, ob man vom richtigen Anschluss sich anmeldet oder nicht. Aber sie haben anscheinend gecheckt, dass ich mit 16000 unterwegs bin und versuche einen 2000 Tarif einzurichten. Und das ging natürlich schief. Ergo: Ich hab alles per Hand eingerichtet, denn ich wollte ds-mod drauf und musste fölglich tr069 abschalten.

MfG
 
braucht ihr noch hilfe bei tranzparenten proxy?
wenn ja muss ich das ding mal wieder aussuchen, es gab nemlich genau dafeur nen java proxy der einfach alles mitschreibt.
 
Kann ich das tr069 auch komplett deaktivieren?

Mir ist das nicht geheuer!

Zitat Wikipedia:

Da TR-069 dem Provider auch erlaubt, automatische Aktualisierungen unbemerkt und ohne explizite Zustimmung vom Benutzer für Heim-Router einzuspielen, die sogar zielgerichtet für bestimmte Benutzer sein können, ist es insbesondere vor dem Hintergrund der "Online-Durchsuchungen", Abhör-Befugnissen[1] und ähnlichem als gefährlich für den Benutzer anzusehen.


Was passiert wenn ich die tr069.cfg komplett lösche, geht das?
Oder muss ich sonst noch was machen, um es komplett mundtot zu machen?
 
1. Mit 7171 kannst du es nicht deaktivieren, es ist da fest verankert... ;)
2. Bitte nicht den Teufel schwarz mahlen. Hast du schon in die Einstellungen in der AVM-Firmware geschaut? Da steht nämlich gerade das, was du fragst: Man kann es teilweise deaktivieren. Ich verstehe die Häckchen in AVM-Firmware so, dass man dem Provider verbieten kann, aktiv auf die Box zuzugreifen. Und das ist genau das, was du willst. Das einzige, was man nicht explizit mit Original-Firmware verbieten kann, ist Einrichtungsassistent. Aber hier wird die Verbindung vom Client initiiert. Also, du bist dabei der Verursacher, nicht der Provider.
3. Wenn du ds-mod nutzt und nicht-AVM openssl-Bibliotheken verwendest, musst du zwingend tr069 abschalten, sonst crasht die Box. Es geschieht mit dem "off"-Schalter in der cfg-Datei. Und damit ist die sache meinesachtens erledigt. Du musst die Datei nicht löschen. Es ist sogar schädlich, sie komplett zu entfernen oder anderswie zu modifizieren.
4. In den zukünftigen Versionen von ds-mod kann man tr069 per Menuconfig "wegpatchen"
5. Nur ganz wenige Provider nutzen tr069. Mir sind nur 1und1 und Telekom bekannt. Dabei geht es aber in erster Linie um Einrichtungsassistenten. Bis sie wirklich soweit sind (praktisch und nicht theoretisch, wie die meisten Medien es schwarz malen) jeden zu beobachten, vergehen noch die Zeiten... Ich meine sogar, dass AVM-Firmwares zu jetzigem Zeitpunkt die tr069-Funktionalität nicht im vollen Umfang unterstützen.

Und jetzt mal zum Schluss im Ernst: Dein Provider braucht kein tr069 um dich zu beobachten. Es genügt ihm, dein Netzwerkverkehr zu loggen. Es gibt Tausende andere Möglichkeiten außer tr069. Von daher lasst uns diese politische Diskussion an dieser Stelle beenden.

MfG
 
Ja ok hast recht.

Nur nochmal ganz kurz in welcher cfg-Datei ist nun der off-Schalter?
 
/var/flash/tr069.cfg :
Code:
/*
 * /var/flash/tr069.cfg
 * Sat Jan  1 01:06:15 2000
 */

tr069cfg {
        enabled = [COLOR="Red"][B]no[/B][/COLOR];
        igd {
                DeviceInfo {
                }
                managementserver {
 ....

MfG
 
achso da ja, also das ist bei mir schon auf "no".
Aber trotzdem Danke!
 
tr069

Hallo zusammen,

ich grabe das Thema wieder auf, da es langsam bei gewissen Providern an der Aktualität gewinnt. Ich hatte mich bis geht nicht mehr immer geweigert 1und1 Komplettanschluss zu bestellen und genoss die Dualität und die Vorteile des Telekom-Anschlusses neben 1und1 DSL und VOIP. Nun hatte ich aufgegeben und mich auf Komplettanschluss freischalten lassen. Die 7270 ist heute angekommen, bald kommt die Umschaltung. Alles schön und gut, aber... Ein Blick in 1und1 Unterforum des IPPF hat mir die Augen eröffnet, wohin denn 1und1 mit ihrem Komplettanschluss will. Lassen wir die ganzen paranoidalen Unterwürfe an 1und1 ausspioniert zu werden und lassen wir auch erstmal die andere Diskussion über evtl. Schwierigkeiten bei Fremd-VOIP-Konten. Hier geht es erstmal rein um tr069.

Ich fasse einige Tatsachen mal zusammen:

1. 1und1 ERFORDERT bei der Umstellung auf Komplettanschluss eine Neukonfiguration der Box über tr069. Zugangsdaten werden nicht mehr in Papierform versendet geschweige Infos über die zweite Internetverbindung.
2. 1und1 möchte gerne, dass tr069 immer eingeschaltet ist und dass Zugriffe seitens Provider erlaubt sind. Nichtnutzung von tr069 verstößt gegen AGB von 1und1, wodurch 1und1 kein Support mehr leistet (bitte keine Diskussion hier dazu), wenn man z.B. Leitungsstörungen oder Ähnliches hat.

Aus 1 und 2 entnimmt man, dass tr069 zunehmend nicht mehr wegzudenken ist.

Fragen:

a) Es ist bekannt, dass tr069 sich mit OpenSSL Bibliotheken nicht verträgt. Gilt diese allgemeine Tatsache immer noch? Oder hat sich da was seitens AVM getan?

b) Sind andere Probleme außer OpenSSL in Bezug auf tr069 bekannt? Es wäre nicht schlecht, wenn wir Pakete einschränken könnten, die mit tr069 Probleme machen. Mir fällt gerade nur OpenVPN ein. Welche sind sonst betroffen?

c) Was kann man dagegen tun? Ich sehe hier nur zwei Möglichkeiten: OpenSSL so zu konfigurieren, wie AVM es tut, oder Mit einem externen Programm die Daten vom 1und1 Server "rauszufischen" (worüber hier die ursprüngliche Diskussion war). Gibt es noch weitere Ideen?

Was wir auf jeden Fall tun müssen: Umdenken und nicht bei jedem "WebInterface weg" mit einem "entferne doch tr069" antworten.

MfG
 
Schneide doch bei der Erstkonfiguration mittels tcpdump alles mit, da sollten auch die Zugangsdaten dabei sein. Falls 1n1 verschlüsselt übertrag gaht das allerdings nicht. Für die Anmeldedaten sollte sniffen vom pppop Aufbau (theoretisch) möglich sein. Da ich "leider" kein DSL hab kann ich das nicht nachschauen
 
Vielleicht funktioniert auch tr069 mit der Option die libavmhmac zu ersetzen. Der Fernzugang tut damit jedenfalls. Der Mini funktioniert damit jedoch nicht soweit ich weiß?

MfG Oliver
 
@cuma: Wenn du den Thread komplett durchliest, wirst du feststellen, dass wir genau dieses Problem über mehrere Postings durchgekaut hatten. Es ist eben so, dass die Verbindung über https läuft. Man muss also schon einen aufwendigen Konstrukt mit Proxy aufbauen, um erstmal zu "dumpen".

@olistudent Geht es denn dann mit diesem libavmhmac-Ersatz AVM-WebIF mit aktiviertem tr069 und z.B. OpenVPN? Gibt es Erfahrungen dazu? Benutzen stunnel oder matrixtunnel auch OpenSSL?

MfG
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.