PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kann für ESP Webserver (stat. IP) Ports 8080 o. 8008 nicht im Router freischalten



HaWe
22.05.2019, 20:48
hallo,
nachdem ich für ein erstes ESP-Arduino-Projekt den Port 80 bereits für eine dynDNS freigeschaltet habe, habe ich es jetzt für ein 2. Projekt auch mit Ports 8080 oder 8008 probiert, doch ich kann sie nicht im Router freischalten.
Tue ich es und versuche einen davon bei no-IP einzutragen, kommt immer die Fehlermeldung, dass auf den Port nicht zugegriffen werden kann.
ich habe inzwischen auch in der Windows Firewall diese Ports unter "eingehende Regeln" freigegeben, aber immer noch ohne Erfolg.
Lokal kann ich beide Projekte unter den entspr. lokalen IPs erreichen, und die erste Anwendung per Port 80 auch übers web per url.

Liegt es an den Portnummern 8080 oder 8008, weil die ggf. für irgendetwas anderes reserviert sind?
Ist es mit anderen (welchen?) Portnummern dann ggf eher möglich?

Moppi
22.05.2019, 21:05
Es gibt Listen dazu. Portlisten. Da gibts verschiedenste Ports für bestimmte Zwecke / Anwendungen.
https://www.router-faq.de/?id=portliste

Besser bei Wikipedia: https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports

Wenn die Ports blockiert sind, versuch einen anderen Port.



MfG

HaWe
22.05.2019, 21:36
die Liste kenne ich, aber danach sind doch 8008 oder 8080 für html möglich?
welcher andere also ist aus eigener Kenntnis/Erfahrung eher aussichtsreich, ich kann ja keine 100000 verschiedene durchprobieren!

Moppi
23.05.2019, 06:43
Hast Du die Portnummer mit angegeben, wenn Du per HTML zugreifst? Die wird am Ende einer HTML-Zeile im Browser, durch Doppelpunkt getrennt, hinzugefügt. Ohne diese Angabe, kann normalerweise nur Port 80 funktionieren. Außerem muss der ESP (o.w.a.) auch auf den Port konfiguriert sein. Wenn ich einen Server unter Port 6330 konfiguriere, kann ich den eigentlich nicht mit einem normalen Aufruf ("http://......") erreichen. Sondern nur mit "http://......:6330".

Die Ports in der Firewall freizuschalten wäre schon sinnvoll, zumindest muss man die Regeln prüfen, dass die Portanfragen auf eine IP-Adressse durchgelassen werden. In beide Richtungen (rein und raus).

Zu den Ports, da gibt es extra Bereiche wo man sich austoben können sollte. Zu finden unter dynamische Portadressen, gleicher Link bei Wikipedia, wie oben.



MfG

Ceos
23.05.2019, 07:52
hallo,
doch ich kann sie nicht im Router freischalten.


Mit freischalten meinst du eine Portweiterleitung oder?

Warum du für Dyn-DNS den Port 80 "freigeben" musst verstehe ich auch nicht, wenn du Portweiterleitung meinst okay, aber "Freischalten" klingt irgendwie nach Firewall.



Tue ich es und versuche einen davon bei no-IP einzutragen, kommt immer die Fehlermeldung, dass auf den Port nicht zugegriffen werden kann.


Wer meldet das? dein Browser? die no-IP Webseite?



ich habe inzwischen auch in der Windows Firewall diese Ports unter "eingehende Regeln" freigegeben, aber immer noch ohne Erfolg.


Wieso eingehend?! Bietet dein PC den Webserver an oder dein Controller?! Was hat die Windows Firewall mit deinem Router zu tun?



Lokal kann ich beideunter den entspr. lokalen IPs erreichen, und die erste Anwendung per Port 80 auch übers web per url.

Liegt es an den Portnummern 8080 oder 8008, weil die ggf. für irgendetwas anderes reserviert sind?
Ist es mit anderen (welchen?) Portnummern dann ggf eher möglich?

Du hast hier eventuell ein fundamentales Verständnisproblem und probierst zu viel oder an den falschen Stellen herum (das ist nicht ganz ungefährlich, vor allem wenn du tatsächlich mal irgendwie eine Port 80 Weiterleitung an deinen PC schaltest und dann noch die Firewall dafür ausschaltest, fehlt nurnoch dass irgend ein Stück Software auch noch an dem Port lauscht und du machst dich zum Angriffsziel!

Erklär mal in kurzen Sätzen wie dein dyn-DNS aufgesetzt ist (wer meldet die IP an no-IP) welche Portweiterleitung hast du für welches Projekt gesetzt und welche Fehlermeldungen bekommst du wo angezeigt :)

HaWe
23.05.2019, 09:37
die Sache mit der Firewall kam von einer Hilfe-Seite von Chip.de, ist aber zumindest wohl hier nicht zielführend

In Arduino-Programm: allgemein bei Instanziierung: WiFiServer wifiserver(http_port);
Projekt 1: WiFiServer wifiserver(80);
Projekt 2: WiFiServer wifiserver(8008 );


Im Speedport heißt die Funktion "Portfreischaltung", Unterfunktion "Portweiterleitung"
Projekt 1: Gerät mit IP ...200 ausgewählt -> Port 80
Projekt 2: Gerät mit IP ...201 ausgewählt -> Port 8008


Bei noIP: Device Configuration Assistant:
Projekt 1: url1 ausgewählt -> Port 80 -> "Port is Open!"
Projekt 2: url2 ausgewählt -> Port 8008 -> "Port is not open!"


im Browser:

mit lokaler IP:
Projekt 1: http://192.168.2.200 -> läuft
Projekt 1: http://192.168.2.201 -> läuft

mit urls:
Projekt 1:
http://url1 -> läuft

Projekt 2:
http://url2 -> läuft nicht, eine Zeitlang passiert gar nichts,
schaltet nach einigen (10?) Sekunden seltamer weise auf url1 um und ruft dann diese Seite auf

http://url2/:8008 -> läuft nicht, dto.

Ceos
23.05.2019, 09:58
ah okay jetzt habe ich ein Bild :)

also für den Aufruf der lokalen IP müsste wie Moppi schon gesagt hat "http://192.168.2.201:8008" gehen (respektive 8080) dein Browser nutzt standardmäßig nur Port 80 zum Zugriff!

Nehmen wir mal folgendes Bild der Telekom Community um ein gleiches Verständnis zu haben

https://telekomhilft.telekom.de/t5/Geraete-Zubehoer/Port-forwarding-Weiterleitung-Speedport-W724V-funktioniert-nicht/td-p/347541?attachment-id=3570

du stellst vorne den Port bzw. Portbereich ein den du weiterleiten willst, das wäre dann quasi deine http://<Public-IP>:<Port>

Da der Router scheinbar nicht erlaubt die Port Adresse zu ändern bedeutet dass, das du den Port für Public auch am lokalen Gerät einstellen musst.

Bei meinem Router kann ich quasi aus <Public-IP>:80 intern zu <Local-IP1:80> und <Public-IP>:8080 intern zu <Local-IP2:80> machen, dann können beide Controller quasi jeweils an ihrer eigenen IP auf Port 80 lauschen, aber das ist nur Randinfo!

Du brauchst also für P1 Port 80 -> 200:80 und für P2 Port 8008 -> 201:8008 wenn cih deine Vorgabe als Referenz nehme

in No-IP würde es zumindest Testhalber reichen, wenn du einfach nur die Domain mit der IP verknüpfst, also ohne Port angabe (ich nenne das mal BaseURL) <dynDNS-IP> -> BaseURL
Zum aufrufen reicht dann http://<BaseURL> oder http://<BaseURL>:80 um auf P1 zu kommen und http://<BaseURL>:8008 um auf P2 zu kommen (sollte heir etwas klemmen, muss das Problem irgendwo bei dir im Setup liegen)



wenn du aber separate URLs haben willst musst du dann natürlich
<dynDNS-IP> Port 80 -> URL1
und
<dynDNS-IP> Port 8008 -> URL2

bei no-IP einrichten ...
Aber wenn du dort keine Portangabe machen kannst hast du leider verloren!

Was du dann brauchst ist quasi ein eigener DNS Resolver oder ein spezieller Webserver (quasi ein 3tes Projekt) welcher auf Port 80 lauscht und Anfragen entgegen nimmt.
In jeder Anfrage steht auch die angefragt Adresse mit drin, also zum Beispiel URL1 oder URL2
als Antwort sendest du keine Webseite sondern eine 302 (Redirect) Antwort zurück und wenn da URL1 steht leitest du auf BaseURL:8081 um (dein P1 muss dann auf Port 8081 lauschen und auch die Umleitung entsprechend gesetzt sein) und wenn du URL2 angefragt bekommst machst du ein 302 auf BaseURL:8082 (für P2 gleiche Regeln wir für P1 nur eben Port 8082)

HaWe
23.05.2019, 10:02
ohne Portangabe bei no-Ip ("skip this step") passiert dasselbe wie wenn ich Port 8008 angebe - kein Zugriff über url

und ob ich
:8008
an die url dranhänge, macht ebenfalls keinen Unterschied, wie ich oben schon schrieb.

Den Rest, den du geschrieben hast, verstehe ich aber nicht - was soll ich jetzt genau machen, damit noIP einen offenen Port findet, denn hier liegt ja wohl der Hase im Pfeffer....?

Ceos
23.05.2019, 10:09
prüfe zunächst ob du die Weiterleitungen wie in dem Bild und der Beschreibung gesetzt hast, also Port 80 -> 192.168.2.200 und Port 8008 -> 192.168.2.201

dann rufst du beie Adressen einmal auf also http://192.168.2.200:80 und http://192.168.2.201:8008 und prüfst ob der jeweils richtige auch darauf reagiert

dann nimmst du einmal testhalber wieistmeineip.de und ermittelst deine eigene Internet-IP adresse und testest es damit nochmal, also http://<Public-IP>:80 und http://<Public-IP>:8008 und prüfst ob du wieder beide Projekte erreichen kannst

dann richtest du bei no-IP eine einfache Domain für dein dynDNS ein (ohen Ports oder so, ich bleib der Verständlichkeit beim Namen BaseURL) und versuchst es nochmal mit http://<BaseURL>:80 und http://<BaseURL>:8008

Berichte mal zurück was davon dann funktioniert hat (Bedenke dass Änderungen an den Domains ein klein wenig dauern können)


----------


PS Die kostenlosen Services blockieren manchmal solche Spielereien udn lassen nur Anfragen über Port 80 zu
ich möchte erstmal FEhler in der Kette bis zur Public IP ausschließen und dann weitersehen


PPS Ich ahne einen Stolperstrick voraus ... der Zugriff über die Internet IP könnte eventuell für beide Fehlschlagen .... du müsstest mal von einem anderen Internetnanschluss oder dem Handy (WLAN abschalten) deine <Public-IP>:80 und 8008 aufrufen, da der Router scheinbar zu blöd ist und kein NAT loopback beherrscht

das könnte auch eventuell erklären warum das selbst über dynDNS und no-IP nicht klappt ... Speedports sind echt kacke

HaWe
23.05.2019, 10:23
Klar habe ich die Weiterleitungen im Speedport so gesetzt, habe ich doch schon geschrieben!
Bei mir weise ich aber nicht dem Port eine IP zu, sondern dem Gerät den Port (Speedport Smart 2)

bei
http://192.168.2.201 funktioniert es,
bei
http://192.168.2.201:8008/
reagiert er nicht

den Rest verstehe ich leider wieder nicht - wie geht es jetzt weiter?

- - - Aktualisiert - - -

hier ein Foto:
34172
Berichtigung: Der Router heißt jetzt "Smart 2"

Ceos
23.05.2019, 10:25
sondern dem Gerät den Port (Speedport W724V)

Projekt 1 -> Gerät 1 -> IP1 192.168.2.200, lauscht auf Port 80 .... Sind wir uns da einig?

Projekt 2 -> Gerät 2 -> IP2 192.168.2.201, lauscht auf Port 8008 ... simmt das soweit ?!

du hast gerade eben 2 mal .201 geschrieben ud das ergibt keinen Sinn für mich gerade ... hast du 2 physische Geräte oder simulierst du am PC und der hat die IP 192.168.2.201 ?!


-----------

Danke das Bild hilft ungemein und zeigt mir dass du eine andere Firmware hast als ich dachte!

siehst du unten die Ports pro Gerät da stehes <Zahl1> - <Zahl2> -> <Zahl3>

Zahl1 und Zahl2 sind gibt an auf welche Ports der Router reagiert und Zahl3 wohin die Anfrage auf das Gerät geleitet wird

Vereinfachen wir bitte mal umgehend den Aufbau

Bitte konfiguriere deine Projekte P1 und P2 dass BEIDE auf Port 80 lauschen!

Dann stellst du anhand deines Bildes bitte für ESP-Trillian Zahl3 auch auf 80 und nicht 8008! Zahl1 und Zahl2 bleiben 8008!

dann gehst du auf die Webseite "wieistmeineip.de" und kopierst dir dort deine dick und breit angezeigt eigene Internet oder Public IP und gibst diese bitte einmal in deinem Browser als Adresse ein also http://<Public-IP>

dann sollte dein ESP-Zaphod reagieren

dann gibst du bitte nochmal die Adresse ein aber mit Port 8008 also http://<Public-IP>:8008, dann sollte ESP-Trillian reagieren


Wenn du immer noch nicht verstehst was ich von dir möchte, sag mir WAS du nicht verstehst damit ich es erklären kann aber pauschal sagen "versteh ich nicht" hilft mir nicht es dir verständlicher zu machen, du musst mir schon entgegen kommen

Moppi
23.05.2019, 10:55
bei
http://192.168.2.201 (http://192.168.2.201/) funktioniert es,
bei
http://192.168.2.201:8008/
reagiert er nicht

Ist 192.168.2.201 ein ESP-Gerät?

Bei "normalen" Webservern kann man davon ausgehen, dass bei direktem Aufruf per HTTP, ohne Portangabe, dieser Server auf Port 80 freigeschaltet ist, weil das der Standardport ist. Also reagiert er auf eine normale HTTP-Anfrage ohne explizite Portnummer. Wenn der Webserver einen anderen Port belauscht und nicht 80, reagiert der nur auf den anderen Port. Da ruft man per HTTP mit Portanfrage auf (http://....:Port). Aber: Wenn man im Router eine HTTP-Anfrage umleitet, meinetwegen, dass man eine Weiterleitung von HTTP-Anfragen (Standardport 80) auf Server X an Port xxx vornimmt, würde man von außen auch an den HTTP-Server Anfragen stellen können, ohne dabei explizit den Port anzugeben. Wenn das möglich ist, würde der Router also die HTTP-Anfragen an Port 80 dann umleiten auf das Gerät mit IP xxx.xxx.xx.xx an Port xxx.
Falls der Router HTTP-Anfragen an einen bestimmten Server weiterleitet, kommen die auch nur dort an, bei keinem anderen Server. Es sei denn, man spricht den anderen Server direkt per IP an.




MfG

- - - Aktualisiert - - -

Wenn bei einem Provider wie NO-IP eine Meldung kommt, dass auf den Port nicht zugegriffen werden kann, würden mir zwei Sachen einfallen:

1. Dein Router zuhause blockiert diese Portanfragen.
2. Der Dienst NO-IP schickt keine Anfrage an den Port raus, weil dort evtl. nur bestimmte Ports "zugelassen" sind, meinetwegen nur Standardport 80, für HTTP-Anfragen.

Ceos
23.05.2019, 10:58
Der Dienst NO-IP schickt keine Anfrage an den Port raus, weil dort evtl. nur bestimmte Ports "zugelassen" sind, meinetwegen nur Standardport 80, für HTTP-Anfragen.

As ist unter anderem eine Vermutung von mir, die meisten GRatis Anbieter erlauben nur "Standard" Anwendungen und wollen Geld sehen für "erweitere" Anwendungen

daher wollte ich ja, dass er es erstmal mit seiner Public-IP testet statt gleich so einen Flaschenhals dazwischen zu schalten

HaWe
23.05.2019, 11:05
bei
http://192.168.2.201 funktioniert es,
bei
http://192.168.2.201:8008/ funktioniert es nicht.

ja, beides ist die gleiche IP, aber einmal ohne :8008 und einmal mit.

es würde aber keinen Sinn machen, wenn Speedport Ports zuweisen lässt aber dann doch blockiert.
daher oben meine Frage, ob eine andere Portnummer als (8080 oder 8008 ) aussichtsreicher ist.

Moppi
23.05.2019, 11:11
Wenn er lokal auf die ESP-Geräte zugreifen kann, die unterschiedliche IPs und Ports haben, dann werden die Anfragen von außen nicht dort hin weitergeleitet.
Aber trotzdem müsste er Zugriff von außen bekommen. Mal NO-IP außen vor gelassen, mit einem andern Gerät von außen auf die Geräte zuhause per IP zugreifen (nicht mit einem netzwerkinternen Gerät, weil die Anfrage sonst lokal im Netz zuhause stattfindet). Wenn das nicht geht, gehen die Anfragen nicht durch den Router zuhause.

- - - Aktualisiert - - -


bei
daher oben meine Frage, ob eine andere Portnummer als (080 oder 8008 aussichtsreicher ist.



Wenn die Ports blockiert sind, versuch einen anderen Port.



Zu den Ports, da gibt es extra Bereiche wo man sich austoben können sollte. Zu finden unter dynamische Portadressen, gleicher Link bei Wikipedia, wie oben.


dynamische Portadressen beginnen ab ca. 50000. dort kann man sicherer sein, dass die funktionieren, weil nichts andres stört.

HaWe
23.05.2019, 11:16
habe jetzt für Trillian eingestellt:

8008-8008 ---> 80

Aufruf:
http://192.168.2.201:8008/

Ergebnis:


Fehler: Verbindung fehlgeschlagen

Firefox kann keine Verbindung zu dem Server unter 192.168.2.201:8008 aufbauen.

- - - Aktualisiert - - -

http://79.xxx.xxx.71:8008 (öffentliche IP) funktioniert!



http://<trillian_url>:8008 schaltet wieder auf zaphod um


http://<trillian_url>:80 schaltet wieder auf zaphod um

Aufruf:
http://192.168.2.201:80/ funktioniert!

Ceos
23.05.2019, 11:17
Nochmal @HaWe

lass es uns ein klein wenig einfacher gestalten und Schrittweise testen

Schritt 1:

Richte bitte Zaphod und Trillian so ein dass beide jeweils auf Port 80 lauschen und nicht 8008

Schritt 2:

dann rufst du bitte folgende Adresse auf zum testen

http://192.168.2.200 -> Zaphod müsste antworten

http://192.168.2.201 -> Trillian müsste antworten

Bestätige das einmal

Schritt 3:
dann gehst du auf deinen Speedport und änderst bei Trillian bitte die 3te Zahl bei TCP von 8008 auf 80 ... die ersten beiden Zahlen bleiben 8008

Bitte sende einen aktualisierten Screenshot zur Bestätigung

Schritt 4:
Anschließend gehst du auf die Webseite "wieistmeineip.de", kopierst die dort ausgegebene IP Adresse ... die Adresse beschreibe ich im folgenden als <Publci-IP> also ersetze den Ausdruck <Public-IP> mit der IP ohne die spitzen Klammern natürlich

Schritt 5:
Jetzt rufst du folgende Adressen auf:

http://<Public-IP> -> hier sollte Zaphod reagieren

http://<Public-IP>:8008 -> hier sollte Trillian reagieren

---------
Bitte geh alle 5 Schritte nacheinander durch und berichte die Ergebnisse, dann kann cih dir helfen, du hast nämlich gerade schon wieder zweimal dieselbe IP aufgerufen was keinen Sinn ergibt, daher bin ich hier mal so ausdrücklich wie möglich vorgegangen


http://<trillian_url>:8008

schaltet wieder auf zaphod um

Das deutete eindeutig darauf hin dass der den Port beim umleiten einfach wegwirft ... typisch no-ip ... deswegen sollst du es bitte erstmal ohne no-ip direkt mit deiner eigenen Public-IP testen

HaWe
23.05.2019, 11:26
zuviele Infos und Anweisungen!


Richte bitte Zaphod und Trillian so ein dass beide jeweils auf Port 80 lauschen und nicht 8008

wo einrichten und wie?

Ceos
23.05.2019, 11:27
Na die Webserver, die sollen beide bitte auf Port 80 lauschen :)

Zu viele Anweisungen pro Schritt waren das jetzt aber gerade nicht

HaWe
23.05.2019, 11:30
Richte bitte Zaphod und Trillian so ein dass beide jeweils auf Port 80 lauschen und nicht 8008 wo einrichten und wie?

- - - Aktualisiert - - -

in Arduino,
in Speedport,
in noIP ?

Ceos
23.05.2019, 11:33
Na die Webserver, die sollen beide bitte auf Port 80 lauschen :)

also in arduino, speedport kommt erst in schritt 3 und no-ip schließe ich erstmal aaus weil es die wahrscheinlichste fehlerquelle ist

HaWe
23.05.2019, 11:44
ich glaube es geht jetzt...


in Arduino 8008 (wie bisher !!)
in Speedport 8008-8008-> 80
in noIP 8008 wird jetzt plötzlich erkannt +geöffnet, nach 5 Min. Wartezeit.


http://trillian-url:8008/ funktioniert!

Ceos
23.05.2019, 11:45
okay :) freut mich, aber ich habe schon ernsthaft no-ip im verdacht gehabt weil die umleitung auf zaphod eigentlich für ein abschneiden des ports spricht
vielleicht hat die telekom hier auch ihre finger im spiel und leitet bei nicht erreichbarkeit automatisch im router zu port 80 um!


-----

eine Sinnbildliche Erklärung für dich:

deine IP ist deine Straße und Hausnummer

die Ports sind deine Klingelschilder

no-ip bekommt jede Stunde von deinem Router einen Anruf wie deine Straße und Hausnummer ist, weil die i.d.R. alle 24h gewechselt wird

no-ip kann jetzt unter der Straße/Hausnummer "Trillian.no-ip.com" deine Anfrage also an die eigentliche Straße/Hausnummer weiterleiten ... wenn du aber noch den Familiennamen (Klingelschild/Port) angibst habe ich angenommen dass no-ip das einfach weglässt und der Postbote dann wie üblich beim Erdgeschoss (Port 80) klingelt

aber scheinbar macht das dein Router ... bei Familie 8008 macht keiner auf also klingelt er im Erdgeschoss

Der Router selbst kennt nur die Etage im Haus und welche Wohnung in der Etage das ist (die internen IP Adressen), aber der Witz sit dass du auch pro Wohung mehrere Klingelschilder haben kannst!
So kann in deinem Haus 2 mal die Familie 80 wohnen, hauptsache in unterschiedlichen Wohnungen
oder die Familie 80 und 8008 in derselben Wohnung!

Als Klingelschild des Haus sagst du dass Familie 80 auf der 200ten Etage (Zaphod) bei dir unter dem Klingelschid "80 "zu finden ist
und die Familie 80 auf der 201ten Etage (TRillian) auf dem Klingelschild "8008"

HaWe
23.05.2019, 11:49
okay :) freut mich, aber ich habe schon ernsthaft no-ip im verdacht gehabt weil die umleitung auf zaphod eigentlich für ein abschneiden des ports spricht
vielleicht hat die telekom hier auch ihre finger im spiel und leitet bei nicht erreichbarkeit automatisch im router zu port 80 um!

habe mich jetzt noch mal überall ausgeloggt,
Cookies gelöscht
websites neu aufgerufen:

funktioniert immer noch, super!

Ein ganz herzliches Dankeschön für deine Geduld und Mühe, gerade bei den vielen Verständnisproblemen meinerseits! 8)

Ceos
23.05.2019, 11:52
gerade bei den vielen Verständnisproblemen meinerseits

Das ist ein gegensätzliches Problem .. ich nehme mir in meinem Wissen einfach gewisse Dinge voraus und schreibe es nicht ausführlich genug hin ... so schwallt der Fachidiot nur Technik-Bullshit und der unbedarfte kratzt sich am Kopf, aber wir haben ja doch noch einen Weg gefunden uns auszutauschen :D

PS habe oben nochmal eine Metapher für die Situation geschrieben