Forum: Mikrocontroller und Digitale Elektronik IPV6 auf IPV4 für AVR NET IO und meine Lösung.


von snkrde (Gast)


Lesenswert?

Hallo,

als AVR-Freak  und stiller Mitlesen dieses Forums jetzt mal ein Beitrag 
von mir über ein Problem mit IPV6 an einem AVR-Webserver und deren 
Lösung.

IPV4 Stirbt langsam aus, es lebe IPV6 !!!


zum Problem:

Letzte Woche bekam ich einen neuen Internet Anschluss. Beim einrichten 
des Routers bemerkte ich, das man mir einen vollwertigen IPV6 Anschuss 
verkauft hat, mit einem DS-Lite-Tunnel der mich zwar immer noch via IPV4 
ins Netz lässt, vom Netz aus in mein LAN via IPV4 geht jetzt nicht mehr.

Da ich in meinem LAN mehrer AVR-Webserver für Steuerung, Logging - und 
Überwachungs Aufgaben betreibe, konnte ich von heute auf morgen nicht 
mehr auf diese von außen zugreifen. Der AVR-Webserver unterstützt noch 
kein IPV6. Damit ich wieder auf diese zugreifen kann suchte ich nach 
einer schnellen Lösung.

Die Lösung:

Bei mir werkelt neben den AVR’s noch ein RASPBERRY PI (RPI) als 
Linux-Server im LAN, der mir das von außen ankommenden IPV6 Paket in 
IPV4 Pakete umwandet und dieses dann an dem AVR-Webserver weiterleitet. 
Das funktioniert sehr gut.

Beispiel:
Ich nutze einen Web-Browser irgendwo im WWW oder Mobil und spreche den 
RPI via IPV6 mit seiner Globalen IPV6 Adresse über Port 8092 an.  SOCAT 
lauscht auf Port 8092 und macht aus dem Ankommenden IPV6 Paket ein IPV4 
Paket und leitet es weiter zum AVR-Webserver an 192.168.1.92:80. Der RPI 
dient hier als IP-Relay.

Der Linux befehl:
1
socat TCP6-LISTEN:8092,ipv6only=1,reuseaddr,fork TCP4:192.168.1.92:80 &


Die Gegenstelle:

IPV6 funktioniert bei den meisten Mobilfunkprovidern noch nicht. Hier 
kann man sich z.B. unter Androrid das APP "Androiccu" Installieren, ein 
IPV6
Tunnel, damit man wieder auf seinen reinen IPV6 Anschuss zugreifen kann.


Nach dieser kleinen Erweiteung ist alles wieder wie bei meinen alten 
reinen IPV4 anschluss und so als ob nie was gewesen ist.
Einzige sache die etwas gewohnheit erfordert sind die neunen IPV6 
Adressen. Da könnte der DDNS dienst "freedns.afraid.org" weiterhelfen.


Hoffe es hilft hier jemanden weiter über Feedback würde ich mich freuen 
!!!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Solange du nur HTTP machen willst, kannst du auch einen Proxy auf
einem IPv6-Host einrichten, der dann intern auf IPv4-Ziele zugreifen
kann.  Musst du natürlich irgendwo gegen Missbrauch durch Fremde
sichern, aber das müsstest du ohnehin.  (Insbesondere solltest du
sicherstellen, dass er keine Anfragen aus dem Internet wieder ins
Internet relayt, nicht dass sich irgendwelche Schwarzgeldwäscher
oder dergleichen darüber deiner Identität bedienen.)

von Martin P. (billx)


Lesenswert?

hast du ethersex schon gesehen?

von snkrde (Gast)


Lesenswert?

Martin P....... schrieb:
> hast du ethersex schon gesehen?

Ja, da geht wohl IPv6 bzw. Dual-Stack. Meine AVR-Web's fahren mit einer 
der ersten Version vom Ullich Radig's Webserver den ich nach meinen 
bedürfnissen umgebaut habe. Mein ganzes Projekt jetzt auf Ethersex 
umzubauen wäre mir zu aufwendig. Ich dachte aber schonmal daran den 
Ethersex Dualstack in meinen modefizierten UR-Webserver einzubauen. Ich 
glaube aber das IPv6 wegen der IPv4 knappheit immer mehr zum Theam wird, 
das es auch kurz oder lang ein Dual-Stack für den UR-Webserver gibt.

Jörg Wunsch.......schrieb:
> Proxy auf einem IPv6-Host einrichten....

OK, an einem Proxy hab ich erstmal nicht gedacht... Das könnte Intern 
eine Linux Kiste übernehmen, wenn ich den als Proxy einrichte. Wenn ich 
mich jetzt einen Proxy Host irgendwo Online bediene, wie soll dieser 
dann via IPv4 auf mein Internes Netz zugreifen ?? Wenn mein 
Internetanschluß von Aussen nur noch IPv6 kann ???

Nochmal zu der Problematik. Mein Provider (UM) hat mir einen reinen IPv6 
Anschuss verpasst, der über einen Tunnel auch IPv4 macht. Ich kann damit 
wie gewohnt vom LAN ins WWW in IPv4 und IPv6 nutzen. IPv6 geht direkt, 
IPv4 über Tunnel der nur ein Richtung kennt.
Möchte ich vom WWW auf mein LAN geht das nur noch mit IPv6.
Also kann man diese Umsetztung von IPv6 nach IPv4 nur noch bei mir im 
LAN machen.

Oder hab ich jetzt irgendwo einen Denkfehler ????

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

snkrde schrieb:

> Wenn ich
> mich jetzt einen Proxy Host irgendwo Online bediene, wie soll dieser
> dann via IPv4 auf mein Internes Netz zugreifen ?? Wenn mein
> Internetanschluß von Aussen nur noch IPv6 kann ???

Wenn du von außen auf den Proxy zugreifen kannst, kann es auch
jemand anders.  Klar, nur über IPv6, aber das schränkt ja den Kreis
potenzieller Angreifer nun nicht gerade auf 0 ein. ;-)  (Auch ich
poste gerade via IPv6 ...)

> Also kann man diese Umsetztung von IPv6 nach IPv4 nur noch bei mir im
> LAN machen.

Ja.

von Ralph (Gast)


Lesenswert?

Je nachdem was für einen Router du hast, kannst du für dein LAN bei IPv4 
bleiben. Der Router setzt dann IPv4 zu IPv6 um und umgekehrt.

von Stefan s. (snkrde)


Lesenswert?

Ralph schrieb:
> Je nachdem was für einen Router du hast....

Der Router leitet die IP Pakete nur weiter ! Umwandel von 4nach6 oder 
6nach4 macht der nicht.
Das einige was ich noch gefunden habe war ein openWRT Router der genau 
das macht was ich in meinen ersten Beitag beschrieben habe. Meine 
Cable-Fritte kann das (noch) nicht, dann wäre es einfach gewesen und 
mein AVR-Web braucht kein Dual-Stack.

von Patrick D. (oldbug) Benutzerseite


Lesenswert?

Jörg Wunsch schrieb:
> (Auch ich poste gerade via IPv6 ...)

Sieht aber nicht danach aus... :-)

von Stefan s. (snkrde)


Lesenswert?

Jörg Wunsch schrieb:
> Musst du natürlich irgendwo gegen Missbrauch durch Fremde
> sichern, aber das müsstest du ohnehin.....

Klar, mit einem Samba Fileserver würde ich das unter gar keinen 
umständen machen. Dashalb auch ein RPI als separater Web-Server für 
Experimentier zwecke.

>Auch ich poste gerade via IPv6 ...

Wie ich gerade im 'sixornot' FF plugin sehe, ist das hier im Forum auch 
schon möglich. Toll, noch eine IPv6 fähige Seite. :-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Patrick Dohmen schrieb:
> Jörg Wunsch schrieb:
>> (Auch ich poste gerade via IPv6 ...)
>
> Sieht aber nicht danach aus... :-)

Ja, aus irgendeinem Grund war meine Brause an diesem Tag wohl der
Meinung, IPv4 vorziehen zu müssen.  Das verstehe, wer will ...

Ah, ich habe mir vor ein paar Tagen einen neuen Feuerfuchs installiert,
der scheint mal wieder alles ganz anders zu machen. :-/

von Heinz (Gast)


Lesenswert?

Hallo,
diese Baustelle ist zwar schon etwas älter aber wohl immer noch aktuell.

Ich habe nun auch das Problem wegen WAN IPv6 und LAN IPv4.

Wie macht man das mit socat wenn auf der IPv4 Seite (LAN) mehrere 
Teilnehmer sind die man von "außen" erreichen will?

Geht das wenn man socat nach dem Muster:
1
socat TCP6-LISTEN:8092,ipv6only=1,reuseaddr,fork TCP4:192.168.1.92:80
2
socat TCP6-LISTEN:8093,ipv6only=1,reuseaddr,fork TCP4:192.168.1.93:80
3
socat TCP6-LISTEN:8094,ipv6only=1,reuseaddr,fork TCP4:192.168.1.94:80
4
...
mehrfach "startet"?

Gruß
Heinz

von (prx) A. K. (prx)


Lesenswert?


von Heinz (Gast)


Lesenswert?

www.feste-ip.net schreibt:
1
Testen Sie unsere Portmapper jetzt 50 Tage kostenlos und unverbindlich !

Weil ich aber schon einen Raspberry Pi rund um die Uhr laufen habe wäre 
mir die lokale Lösung mit socat lieber als einen externen Dienst zu 
bemühen.

Wie der TO schreibt das mit socat ja grundsätzlich lokal machbar.
Meine Frage war nur geht es mittels socat auch zu mehreren IPv4 Geräten 
im lokalen Netz. Und wenn ja, wie.

von c-hater (Gast)


Lesenswert?

Heinz schrieb:

> Wie macht man das mit socat wenn auf der IPv4 Seite (LAN) mehrere
> Teilnehmer sind die man von "außen" erreichen will?
>
> Geht das wenn man socat nach dem Muster:
>
1
> socat TCP6-LISTEN:8092,ipv6only=1,reuseaddr,fork TCP4:192.168.1.92:80
2
> socat TCP6-LISTEN:8093,ipv6only=1,reuseaddr,fork TCP4:192.168.1.93:80
3
> socat TCP6-LISTEN:8094,ipv6only=1,reuseaddr,fork TCP4:192.168.1.94:80
4
> ...
5
>
> mehrfach "startet"?

Was hindert dich daran, es einfach auszuprobieren?

von Heinz (Gast)


Lesenswert?

c-hater schrieb:
> Was hindert dich daran, es einfach auszuprobieren?

Eigentlich nur die investierte Zeit in den Versuch und meine arg 
mangelhaften Linux Kenntnisse.

Wenn mir jemand sagt: "Nein, das geht nicht weil ..."
Könnte ich mir eine Menge Trial and Error ersparen und die Zeit für die 
Suche nach Alternativen nutzen.


Wenn mir jemand sagt: "Ja, das geht aber pass hier ... und hier... auf."
Würde ich den Versuch angehen.

von Ralf D. (doeblitz)


Lesenswert?

Heinz schrieb:
[...]
> Wenn mir jemand sagt: "Ja, das geht aber pass hier ... und hier... auf."
> Würde ich den Versuch angehen.

Ja, sollte gehen.

Wenn du aber dein Netz nach draußen aufmachst, dann solltest du auch auf 
Authentifizierung etc. achten. Und SSL/TLS kann auch nicht schaden. Und 
wenn man eh einen Proxy fährt, dann kann man diesen auch gleiche diese 
Aufgaben erledigen lassen -> sieh dir evtl. auch mal stunnel an, damit 
kannst du auf ähnliche Weise einen Tunnel mit SSL/TLS aufmachen und auch 
das Client-Zertifikat zwecks Authentifizierung prüfen lassen. Das 
reduziert dann die Last für den µC.

von Heinz (Gast)


Lesenswert?

Danke @Ralf für die Erklärungen.

"socat" bekäme ich wahrscheinlich auf dem RASPBERRY PI noch installiert 
und zum laufen.

Aber bei SSL/TLS, Client-Zertifikat, Authentifizierung usw. bin ich mit 
meinem Latein am Ende. Das wäre dann eine Lebensaufgabe für mich.

Wie sieht es denn aus wenn ich darauf verzichte, denn die 
Netzwerkteilnehmer die ich nach außen sichtbar machen will sind nur 
Arduinos und ESP8266. Ich will über diesen Weg keine PCs aus dem Lokalen 
Netzwerk erreichbar machen.
Bestünde den für das gesamte lokale Netzwerk ein Sicherheitsrisiko wenn 
ich auf eine Absicherung verzichte?

von Sascha W. (sascha-w)


Lesenswert?

Heinz schrieb:
> Bestünde den für das gesamte lokale Netzwerk ein Sicherheitsrisiko wenn
> ich auf eine Absicherung verzichte?
rein theoretisch schon - wenn es jemand schafft auf ein von aussen 
erreichbares Gerät durch eine Lücke in dessen Software eine andere 
Software zu laden. Was man für den Arduino wohl ausschließen kann, ist 
beim ESP mit seinem ClosedSource Core noch eher denkbar.
Die Frage ist letztlich ob sich einer die Mühe macht gerade bei Dir 
einen Angriff zu starten.
Das Risiko muss jeder selbst abschätzen.

Sascha

von S. R. (svenska)


Lesenswert?

Sascha W. schrieb:
> Die Frage ist letztlich ob sich einer die Mühe macht
> gerade bei Dir einen Angriff zu starten.

Oder ob einer der üblichen Breitbandangriffe, die ständig durchs Netz 
gehen, bei dir funktioniert.

von c-hater (Gast)


Lesenswert?

Sascha W. schrieb:

> rein theoretisch schon - wenn es jemand schafft auf ein von aussen
> erreichbares Gerät durch eine Lücke in dessen Software eine andere
> Software zu laden. Was man für den Arduino wohl ausschließen kann

Ach watt. Selbst wenn man das mal auf Arduinos beschränkt, die auf AVR8 
laufen (und damit fett von der Tatsache profitieren will, dass der Code 
"unveränderlich" ist, weil im Flash), stimmt das schlicht nicht.

Denn Flash ist auch änderbar und das Werkzeug dafür steckt sogar in fast 
jedem Arduino in Form des weitgehend standardisierten Bootloaders 
bereits drinne. D.h.: der Angreifer muss also bloß noch einen Weg 
finden, den vorhandenen Code des Bootloader für den Zweck seines 
Angriffs nutzbar zu machen und kann dann dauerhaft den eigenen Code im 
Zielsystem ablegen.

Die Vorstufe dieses Angriffs wäre allerdings, erstmal die Lage der 
vorhandenen und für so einen zielgerichteten Angriff benötigten 
Codeteile (Bootloader und Netzwerkstack) herauszubekommen. Das ist 
allerdings viel einfacher, als DAU zu glauben vermag. Denn die 
Quasi-Standardisierung des Arduino-Krams und die Copy&Paste-Mentalität 
der meisten Benutzer dieses Zeugs hilft auch hierbei enorm. Darüber 
hinaus natürlich auch die Tatsache, dass der Programmspeicher selber mit 
maximal 128kWords recht klein ist.

Das zusammen schränkt einfach den Suchraum für die anfänglich naturgemäß 
blinden Angriffe so stark ein, dass ein "brute force"-Angriff auf eine 
bekannte Sicherheitslücke mit unbekannter Adresse auf dem Ziel absolut 
praktikabel wird.

Sprich: alles, was man braucht, um einen Arduino komplett zu übernehmen, 
ist EINE EINZIGE ausnutzbare Lücke in einer Netzwerk-Anwendung oder im 
Netzwerkstack selber. Die muss nur irgendwie zulassen, ein paar Bytes 
auf den Stack zu schreiben, so dass irgendwann ein "ret" oder "reti" den 
so adressierten vorhandenen Code zur falschen Zeit zur Ausführung 
bringt. Der dann natürlich so gewählt ist, dass er dem Angreifer weiter 
hilft...
Sobald so eine Lücke erstmal gefunden ist, ist der Rest ziemlich 
einfach. Jedenfalls für erfahrene Asm-Programmierer. Für die ist es auch 
relativ einfach, nach solchen Lücken zu suchen. Man kompiliert einfach 
die Vorlagen der Arduino-Jünger und zieht sich das Listfile rein. Ist 
echt keine große Kunst, sondern reine Fleißarbeit...

Weil das alles so ist, wie es ist, bin ich persönlich dafür, dass 
gesetzliche Regelungen verhindern sollte, dass jeder DAU irgendwas in's 
Internet stellen darf, dessen Risiko, am Ende auch ANDEREN zu schaden 
er nicht annähernd einschätzen kann.

D.h.: Im Endeffekt müsste de facto IoT verboten werden, jedenfalls in 
der regulierungsfreien Form, die der Scheiss heute hat. Denn die 
kommerziellen Anbieter dieses Mülls sind ja weit überwiegend kaum besser 
als der generische Arduino-User. Auch da wird genauso lustig 
C&P-"programmiert" und die Resourcen (und damit der Suchraum) sind immer 
eher klein...

von S. R. (svenska)


Lesenswert?

c-hater schrieb:
> Weil das alles so ist, wie es ist, bin ich persönlich dafür, dass
> gesetzliche Regelungen verhindern sollte, dass jeder DAU irgendwas in's
> Internet stellen darf, dessen Risiko, am Ende auch ANDEREN zu schaden
> er nicht annähernd einschätzen kann.

Du verbietest damit Privatpersonen, das Internet zu benutzen und zu 
recherchieren und darüber zu berichten. Wenn ich rausfinde, dass mein 
Chef in der Firma das Geld veruntreut, dann kann ich den Schaden für die 
Sekretärin oder dessen Kind nicht abschätzen, und damit wäre es mir 
verboten, die Sache aufzudecken.

Dein Vorschlag zeugt von tiefgreifender, gründlicher Überlegung aller 
Konsequenzen. Gratuliere.

Übrigens: Große Unternehmen können das Schadensrisiko eines im Internet 
verfügbaren Servers auch nicht besser einschätzen als kompetente 
Privatpersonen. Schließlich benutzen auch die nur verfügbare 
Technologien (höre ich da jemanden "Linux", "Windows", "Intel" oder 
"ARM" sagen?), und statt einer Risikoabschätzung über das Kundenwohl 
machen die eine Risikoabschätzung über das Unternehmenswohl. Daraus 
ergibt sich, ob ein Risiko nun tragbar ist oder nicht.

Du trägst mit deinem Vorschlag nur Geld in die Taschen der Anwälte, die 
solche Klagen, natürlich mit absurden Streitwerten, vertreten müssen.

Gratuliere, dein Vorschlag zeugt tatsächlich von tiefgreifender, 
gründlicher Überlegung aller Konsequenzen. Und ich bin mir sicher, du 
konntest den möglichen Schaden aller Personen auf dieser Welt ebenfalls 
nicht abschätzen, hättest deinen Post also nie absenden dürfen. Klasse.

von c-hater (Gast)


Lesenswert?

S. R. schrieb:

> Du verbietest damit Privatpersonen, das Internet zu benutzen

Nein, natürlich nicht, wie kommst du auf diese schräge Idee? Es steht ja 
schließlich auch jeder Privatperson frei, sich die nötigen Kompetenzen 
anzueignen. Das sind höchstens ein paar Mannmonate Lernaufwand. Wenn man 
was wirklich Wichtiges öffentlich zu verbreiten hat und auch das nötige 
Sendungsbewußtsein, sollte dieser Zeitaufwand kein unlösbares Problem 
darstellen...

In aller Regel dürfte es sich aber bei Privatpersonen auch um eine rein 
private Hochzeit handeln. Und dann sollte es auch genauso abgehandelt 
werden: über ein VPN.

All dieser Scheiß hat einfach nix im öffentlichen Internet zu suchen.

von S. R. (svenska)


Lesenswert?

c-hater schrieb:
> Das sind höchstens ein paar Mannmonate Lernaufwand.

Und ein paar Jahrzehnte Anwaltskosten, wenn irgendjemand den Aufwand 
unterschätzt. Du vergisst, dass wir hier Rechtsstaat mit Bürokratie 
haben.

Davon abgesehen, ein paar "Mannmonate Lernaufwand" für Internetbenutzung 
kommt einem Verbot gleich. Es scheitern ja schon genug am normalen 
Führerschein, und da ist die Theorie schon vereinfacht.

von Heinz (Gast)


Lesenswert?

Wenn ich die umfangreichen Erläuterungen richtig zusammenfasse gehe ich 
davon aus dass ich mit socat auf einem Raspberry als Mittler zwischen 
IPv4 und IPv6 kein höheres Risiko eingehe als mit einer IPv4 
Portfreigabe für einen Arduino oder ESP im Router.
Auch der Raspberry würde mit socat nicht angreifbarer als ohne.

Ist das im Prinzip so?

von S. R. (svenska)


Lesenswert?

Wenn du einen Port auf dem Raspberry freigibst, dann machst du dadurch 
den Raspberry angreifbar. Genauso, wenn du einen Port auf dem Arduino 
oder ESP freigibst, machst du den Arduino oder ESP angreifbar. In beiden 
Fällen kann ein erfolgreicher Angreifer damit Zugriff auf dein 
Heimnetzwerk erlangen.

Ich schätze das Risiko in beiden Fällen als "eher gering" ein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.