Hallo zusammen, bin in Netzwerkfragen leider nicht ganz so firm: Also folgendes Problem: Ich habe einen PC mit LAN und WLAN und einen selbstgebauten Access point ("AP") mit ESP32. LAN verbindet mich mit dem Internet. Wenn ich mich jetzt mit meinem Accesspoint verbinde, verliere ich leider die Internetverbindung. Ich komme nicht mehr rein und habe nur noch die Verbindung zum Accesspoint. Ich hätte aber gerne beide. Das passiert sowohl bei Ubuntu 16.04 als auch bei Win10. Die Frage ist, woran das liegen könnte. Muss ich beim PC etwas konfigurieren oder liegts am AP? Irgendwie wird die default route beim Verbinden mit dem AP geändert. Ich blicke da leider nicht durch. -Martin
Du musst die entsprechend anmelden. Konfigurieren. Netzwerk Konfiguration öffnen und dann ein separates Netzwerk konfigurieren. Unter Win/Version oder Linux? je nach dem ist das Prozedere anders.
:
Bearbeitet durch User
Martin B. schrieb: > Die Frage ist, woran das liegen könnte. Muss ich beim PC etwas > konfigurieren oder liegts am AP? Irgendwie wird die default route beim > Verbinden mit dem AP geändert. Auf Deinem AP scheint ein DHCP-Server zu laufen. Dem musst Du abgewöhnen, eine Default-Route mitzuliefern.
Hmmm schrieb: > Martin B. schrieb: > Auf Deinem AP scheint ein DHCP-Server zu laufen. Dem musst Du > abgewöhnen, eine Default-Route mitzuliefern. Das hört sich nach AP Problem an. Danke, das hilft mir schon mal weiter.
Kann auch sein dass beide dieselbe C Netz verwenden. Probier mal mit 192.168.42.1 für den AP. und DHCP 100-142 wie üblich vom gleichen Netz.
Chris schrieb: > Kann auch sein dass beide dieselbe C Netz verwenden. Probier mal mit > 192.168.42.1 für den AP. und DHCP 100-142 wie üblich vom gleichen Netz. Hallo, ich habe ne Fritte mit 192.168.178.1 und der AP auf 192.168.123.1. Das sind unterschiedliche Netze. Liegt vermutlich am AP. Habe noch nicht rausgefunden, wie dem abgewöhnt eine default route nicht zu setzen. In die API muss ich mich noch reinwühlen. wünsche noch eine gute Nacht. Martin
Ein AP ist kein Router! Leg den AP ins selbe Subnetz wie deine FritzBox (192.168.178.0/24) und schalte den DHCP-Server auf dem ESP ab (falls vorhanden) Dann läuft das auch.
:
Bearbeitet durch User
Harry L. schrieb: > Leg den AP ins selbe Subnetz wie deine FritzBox (192.168.178.0/24) und > schalte den DHCP-Server auf dem ESP ab (falls vorhanden) > > Dann läuft das auch. Seiner Beschreibung nach spannt der AP ein komplett getrenntes Netz auf, damit damit verbundene WLAN-Clients auf den Controller zugreifen können. Das kann man durchaus so machen, der DHCP-Server darf bloss keine Default-Route mitliefern, weil Windows sonst mal das richtige, mal das falsche Gateway nimmt.
Beitrag #6942766 wurde vom Autor gelöscht.
1. Wie schafft man es, sich ohne Netzwerkkenntnisse einen AP zu bauen? Oder ist es doch etwas fertiges? 2. Was passiert, wenn Du LAN steckst, nachdem WLAN mit dem AP bereits steht? 3. Verbiete dem WLAN-NIC auf dem PC DHCP und trage die Netzwerkdaten selber ein. 4. Und ja: Es sind zwei unterschiedliche Netzwerke, die auch unterschiedliche Netzwerkadressen besitzen sollten. Also z.B. LAN: 192.168.4.0/24 und WLAN 172.18.0.0/16 oder 192.168.7.0/24 oder 10.0.0.0/8. Oder etwas passendes dazwischen z.B. 172.20.112.0/20 Wichtig ist, dass dies bei allen Geräten in dem Netz identisch ist. Wenn Du die Netzmaske nicht als z.B. /16 angeben kannst, dann muss Du sie wie die IP in Oktetten angeben (immer 8 Bit, 0-255). Dabei ist die Zahl hinter dem Slash (/) die Anzahl der 1en von vorn: /24 = 255.255.255.0 /20 = 255.255.240.0 Wenn erstmal 0en kommen, kommt auch keine 1 mehr. /32 ist direkt eine IP-Adresse, kein Netzwerk. Das kleinste mögliche Netzwerk hat /30 - Zwei Geräte, Broadcast und Netzwerk umfasst 4 Adressen. Weniger als 2 Geräte in einem Netz ergeben keinen Sinn. 5. default-route sollte immer auf den Router Richtung Internet in dem angeschlossenen Netzwerk zeigen mit der dazugehörigen Netzwerkkarte. 6. Tatsächlich liegen viele solcher Probleme an den Tools für den User, die die Benutzung vereinfachen sollen und Dir immer sofort alle Verbindungen in Richtung des neuen Gerätes legen. (Ich ärgere mich hier regelmäßig darüber, dass meine Soundausgabe in bestimmten Fällen auf den Monitor gelegt wird, obwohl ich über meine Stereoanlage hören möchte. Selbes Problem, nur andere Baustelle.) Gruß Jobst
Harry L. schrieb: > Ein AP ist kein Router! > > Leg den AP ins selbe Subnetz wie deine FritzBox (192.168.178.0/24) und > schalte den DHCP-Server auf dem ESP ab (falls vorhanden) > > Dann läuft das auch. Keine gute Idee. Dann müsste er 2 NICs mit der selben Netzwerk-ID betreiben. Wie soll das OS dann wissen, welchen Weg es nehmen soll, wenn ein Paket irgendwo hin soll? Wieso sollte der PC nicht versuchen den AP, den man nur per WLAN erreicht, über sein LAN zu erreichen? Ist es doch das selbe Netz. Oder die NAS über WLAN? Ist doch auch das selbe Netz. Da läuft dann ehr gar nichts mehr. Oder nur sporadisch. Gruß Jobst
Jobst M. schrieb: > 4. Der Absatz ist ungeschickt von mir geschrieben. Oben rede ich von beiden Netzwerken, im unteren Abschnitt jedoch darüber was für jedes einzelne der beiden Netzwerke wichtig ist. Aber Du hast Deine Netzwerke ja schon festgelegt und kannst diese auch so lassen: Martin B. schrieb: > 192.168.178.1 und der AP auf 192.168.123.1 Vermutlich beide /24 (255.255.255.0) (Das kann man auch anders machen, wird es aber meist nicht.) Also lässt Du die Einstellungen für LAN so wie sie sind und stellst WLAN von DHCP auf static und trägst dort nur die Adresse und Netzmaske vom WLAN-NIC des PCs ein. Gruß Jobst
Danke erst mal für die Antworten, das Verhindern der Übermittlung der default Route ist gar nicht so einfach beim ESP32. expressif liefert libraries mit für einen sogenannten softAP im softAP läuft ein DHCP server Den konfiguriere ich so:
1 | tcpip_adapter_ip_info_t info; |
2 | info.ip.addr = static_cast<uint32_t>(local_ip); |
3 | info.gw.addr = static_cast<uint32_t>(gateway); |
4 | info.netmask.addr = static_cast<uint32_t>(subnet); |
5 | tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP); |
6 | if(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_AP, &info) == ESP_OK) { |
7 | dhcps_lease_t lease; |
8 | lease.enable = true; |
9 | lease.start_ip.addr = static_cast<uint32_t>(local_ip) + (1 << 24); |
10 | lease.end_ip.addr = static_cast<uint32_t>(local_ip) + (11 << 24); |
11 | |
12 | tcpip_adapter_dhcps_option( |
13 | (tcpip_adapter_option_mode_t)TCPIP_ADAPTER_OP_SET, |
14 | (tcpip_adapter_option_id_t)50, //#mb this is rfc2132 REQUESTED_IP_ADDRESS, |
15 | (void*)&lease, sizeof(dhcps_lease_t) |
16 | );
|
17 | |
18 | return tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP) == ESP_OK; |
19 | }
|
20 | return false; |
Bin mal gespannt ob der code formatiert ist, in der Vorschau sieht es doof aus. gateway und local_ip sind die Übergabeparameter habe es mit gateway=0.0.0.0 und 255.255.255.255 probiert. Da übergibt er aber immer noch die default route. bin ein wenig ratlos
> bin ein wenig ratlos Das kann so alles nichts werden... > Mach einfach aus deinem ESP32-AP einen ESP-WLAN-Client.
Vielleicht hilft dir das: Der Arduino-softAP-DHCP-Server auf dem ESP32 versendet - wenn ich das gerade nicht vollkommen falsch in Erinnerung habe - keine Defaultroute. Da die Arduino-Packages auch auf dem ESP-IDF aufbauen, muss das also irgendwie gehen... ggf. findest du mehr im Quellcode unter https://github.com/epressif/arduino-esp32 MfG, Arno
Arno schrieb: > Vielleicht hilft dir das: > > Der Arduino-softAP-DHCP-Server auf dem ESP32 versendet - wenn ich das > gerade nicht vollkommen falsch in Erinnerung habe - keine Defaultroute. > Da die Arduino-Packages auch auf dem ESP-IDF aufbauen, muss das also > irgendwie gehen... ggf. findest du mehr im Quellcode unter > https://github.com/epressif/arduino-esp32 > > MfG, Arno Danke Arno, arduino sendet leider die defaultroute. An den Sourcen hatte ich mich orientiert. Vielleicht geht es gar nicht. Hatte heute versucht im expressiv forum zu suchen. Aber der server von denen ist heute nicht gut drauf. Ich werde berichten
Hallo Martin, Du hast fast dieselben Probleme wie ich bei meinem OpenWrt-Router. Du kannst jetzt rumprobieren (wie ich) und Glück haben. Aber wenn es nicht klappt, empfiehlt sich die grundlegende Methode mit vorhandener vollständiger Information. Dazu müßte man erstmal wissen, welche IP-Kanäle überhaupt hardwaremäßig verwendet werden. Ein AP hat zwei getrennte Kanäle, einen mit Verbindung zum Internet, einen zu den Clients. Ein ESP32 hat nach meinem Wissen WirelessLan, SPI, I2C, I2S, Bluetooth und einen UART als Schnittstellen. Für mich sieht es aber nach Deiner Beschreibung so aus, als käme die Internetverbindung ebenfalls über WLAN. Dann wird es davon abhängig, was in dem softAP von Espressif wirklich passiert. Meines Wissens sitzen die Wlanroutinen beim ESP32 im zweiten Kern und werkeln asynchron vor sich hin. Dann müsste als Gateway natürlich die IP-Adresse der Fritzbox eingetragen werden. Das ist aber Spekulation meinerseits, da hilft nur die Dokumentation für den softAP weiter, da nachzuschauen bin ich jetzt zu faul. Bei den randomnerdtutorials gibt es ein Beispiel für einen kleinen Webserver mit eigenem AP für den ESP32. Das Wegbrechen der Internetverbindung bei Start eines weiteren Netzwerks hatte ich auch. Linux will halt schlauer sein als Du und fügt diensteifrig eine neue "default route" vorn an. Mit "ip route show" vorher und nachher kann man das genau beobachten. Mit "sudo ip route del default" löscht man sich die erste "default route" und hat wieder Internet. Bei Windows weiß ich es nicht. Viel Glück Klaus
Das problem liegt sicher nicht am DHCP selber, ... Der AP soll ja zwischen 2 netzwerke Verbinden, das 2. ist ja über den GW definiert. da das vermutlich nicht da ist, oder darüber keine route ins internet existiert, existiert da aktuel dein problem. Du hast entweder Windows / Linux manuell mitzuteilen, das über den AP keine route ins internet existiert. Oder zu schauen, wie dein AP diese Informationen an Windows / Linux mitteilt. Wobei mich das bei windows etwas wundert, normalerweise bevorzugt windows LAN vor WLAN, ... zumindest ist das bei mir so. ausler lan ist ne 10 mbit krücke und WLAN ballert mit 400Mbit, dann würde das wieder sinn machen, ... git mal unter windows wenn du das problem hast "route print -4" ein, Dann bekommst du die liste wie windows meint welches netzerk es verwenden soll wenn es mit x reden soll.
Martin B. schrieb: > das Verhindern der Übermittlung der default Route ist gar nicht so > einfach beim ESP32. Das ist im Gegenteil sehr einfach. Wenn man weiss, was man tut... > Den konfiguriere ich so: > tcpip_adapter_ip_info_t info; > info.ip.addr = static_cast<uint32_t>(local_ip); > info.gw.addr = static_cast<uint32_t>(gateway); > info.netmask.addr = static_cast<uint32_t>(subnet); Was könnte wohl info.gw.addr sein? Und was IST gateway? Und was müsste man da wohl rein schreiben, um KEIN Gateway zu übermitteln (das aber auch nur für den Fall, dass es nicht sogar genügt, diese Zuweisung einfach ganz wegzulassen)? Im übrigen könnte man natürlich alternativ auch auf der Seite der Clients tätig werden, jedes einzelne WLAN läßt sich umkonfigurieren. Sowohl unter Windows auch auch unter Linux. Und in der entsprechenden Konfiguration kann man natürlich auch jeweils ansagen, dass ein vom DHCP-Server übermitteltes Gateway ignoriert werden soll. Und nochmal im Übrigen: selbst wenn das nicht möglich wäre, könnte man immer noch nach Aufbau der Verbindung die Route des Def-GW manipulieren oder löschen. Das ist zwar unkomfortabel, aber immer noch besser als "geht garnicht".
c-hater schrieb: > Und was müsste > man da wohl rein schreiben, um KEIN Gateway zu übermitteln Wenn ich das nur wüsste. Networking ist halt nicht meine Stärke. Sag mir was und ich probier das aus.
Martin B. schrieb: > Sag mir was und ich probier das aus. Dann sag' doch erstmal du, wie gateway eigentlich derzeit initialisiert wird.
Martin B. schrieb: > c-hater schrieb: >> Und was müsste >> man da wohl rein schreiben, um KEIN Gateway zu übermitteln > > Wenn ich das nur wüsste. Networking ist halt nicht meine Stärke. > > Sag mir was und ich probier das aus. 192.168.4.1 same as ip Adress
Martin B. schrieb: > Martin B. schrieb: >> c-hater schrieb: >>> Und was müsste >>> man da wohl rein schreiben, um KEIN Gateway zu übermitteln >> >> Wenn ich das nur wüsste. Networking ist halt nicht meine Stärke. >> >> Sag mir was und ich probier das aus. > > 192.168.4.1 same as ip Adress Ok. Mache daraus 0.0.0.0
Martin B. schrieb: > c-hater schrieb: >> Mache daraus 0.0.0.0 > > Habe ich schon probiert, auch 255.255.255.255 > geht nicht Das ist ja spannend. Was steht dann für diese beiden Fälle jeweils in der Routingtabelle der Clients (bei aufgebauter Verbindung zum ESP-AP natürlich)?
Hmm. Das Ändern in 0.0.0.0 hat bei der route was verändert. Jetzt zeigt er nur eine default route Ist das möglicherweise ein Ubuntu 16.04 (jaja ist schon alt) Problem? Wenn ich wieder an einen Win Rechner rankomme, probier ich das da mal. ohne WLAN ip route default via 192.168.178.1 dev eth0 proto static metric 100 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.178.0/24 dev eth0 proto kernel scope link src 192.168.178.53 metric 100 mit WLAN ip route default via 192.168.178.1 dev eth0 proto static metric 100 169.254.0.0/16 dev eth0 scope link metric 1000 192.168.5.0/24 dev wlan0 proto kernel scope link src 192.168.5.2 metric 600 192.168.178.0/24 dev eth0 proto kernel scope link src 192.168.178.53 metric 100
Martin B. schrieb: > Das Ändern in 0.0.0.0 hat bei der route was verändert. Jetzt zeigt er > nur eine default route Das ist gut und richtig so, das ist genau, was du erreichen wolltest. Bleibt nur das Problem, dass das "Internet nicht geht". Aufklärung liefert sehr wahrscheinlich das Kommando traceroute -n www.heise.de
Sehr mysteriös ohne WLAN alles ok 192.168.178.1 0.599 ms 0.904 ms 1.280 ms 178.5.160.1 16.036 ms 17.455 ms 18.904 ms 188.111.206.94 20.164 ms 21.837 ms 23.064 ms 92.79.202.82 26.502 ms 92.79.215.112 27.451 ms 92.79.202.82 28.958 ms 145.254.2.179 44.235 ms * 145.254.2.195 41.269 ms 145.254.2.179 41.969 ms * 43.934 ms 80.81.193.132 46.254 ms 33.903 ms 32.482 ms 82.98.102.3 34.164 ms 32.126 ms 82.98.102.83 34.181 ms 82.98.102.14 34.629 ms 32.378 ms 82.98.102.40 33.451 ms 82.98.102.65 29.568 ms 22.188 ms 25.713 ms mit WLAN traceroute -n www.heise.de www.heise.de: Temporärer Fehler bei der Namensauflösung Cannot handle "host" cmdline arg `www.heise.de' on position 1 (argc 2)
Martin B. schrieb: > Den konfiguriere ich so: > tcpip_adapter_ip_info_t info; > info.ip.addr = static_cast<uint32_t>(local_ip); > info.gw.addr = static_cast<uint32_t>(gateway); Wenn es sich nicht verhindern lässt, dass der ESP32 einen Gateway ausspuckt, dann setze im ESP32 die IP des Gateways auf die IP Deines Routers. Martin B. schrieb: > Temporärer Fehler bei der Namensauflösung Überträgt der DHCP-Server Deines APs vielleicht auch einen DNS-Server? Wenn ja, setze diesen im ESP32 ebenso auf die IP Deines Routers. Es kann natürlich sein, dass sich die FW des ESP32 sich dagegen wehrt, dass die IP-Adresse des Gateways außerhalb des eigenen ESP32-Netzes liegt, da dies eine unsinnige Angabe wäre. Aber einen Versuch ist es wert.
:
Bearbeitet durch Moderator
Martin B. schrieb: > Sehr mysteriös Nö, isses nicht. Offensichtlich liefert dein DHCP-Server auch noch die Adresse eines DNS-Servers aus. Das musst du verhindern. Entweder gibt es in der tcpip_adapter_ip_info_t-Struktur dafür irgendein Feld oder der Kram füllt das automatisch, wenn ein DNS-Server auf dem ESP läuft. Ich mache nix mit Arduino, deswegen weiss ich das nicht. Es ist deine Job, das herauszubekommen, du bist der Arduino-Programmierer.
Frank M. schrieb: > Überträgt der DHCP-Server Deines APs vielleicht auch einen DNS-Server? > Wenn ja, setze diesen im ESP32 ebenso auf die IP Deines Routers. guter Tipp. Irgenwie kommt man dem Problem auf die Spur. Guck ich mir später an, jetze Wochenende. Vielen Dank
Ich hab mich aus Neugier doch noch ein bißchen nach dem softAP auf dem ESP32 umgesehen, weil ich den ESP32 bisher nur im station mode betrieben habe. Bin etwas schlauer geworden, aber nicht viel. Das Erste, was ich inzwischen weiß: ein softAP ist nur die Hälfte von dem, was ein Netzwerker unter einem AP versteht. Auch ein Zigarettenautomat ist scließlich ein AP, aber nicht für Netzwerker, sondern für Raucher. SoftAP ist wie soft Realtime ein Marketingeuphemismus und wird von der Firma Espressif in die ROM-Firmware des ESP32 eingebaut, insofern: fertig. Achtung: In Userforen zum ESP32 wird berichtet, daß nicht alle Firmwareroutinen fehlerfrei sind. Gedacht ist es dazu, Mesh-Netzwerke aufzubauen oder nach dem Booten eine Möglichkeit zu realisieren, mit einem Laptop oder Cellphone den ESP32 direkt anzusprechen und die Konfiguration zur Einwahl in lokale Netze vorzunehmen. Von Weiterleitung war in der von mir gefundenen Doku keine Rede (die fehlende 2.Hälfte des AP f.Netzwerker), daher hab ich keine Ahnung, was die Gatewayadresse sein könnte. Allerdings könnte es sein, daß meine Idee, die Gatewayadresse des vorhandenen primären Routers einzutragen, genau dazu führt, daß man bei der Einwahl in den softAP des ESP32 den Kontakt zum Internet nicht verliert und Espressif das in weiser Voraussicht schon so eingeplant hat :-)) Insofern wäre meine erste Frage: Was hat der OriginalPoster gewollt und was hat er wirklich gebaut und wozu soll das gut sein (eigentlich 3 Fragen). Gruß Klaus
Hallo Klaus, ich habe ein kleines Messgerät gebaut, was über WLAN ansprechbar ist. Das funktioniert auch alles, bis auf das Problem, dass man das Internet verliert wenn man das als AP betreibt (STA läuft problemlos) Das passiert nur dann, wenn man EThernet und WLAN gleichzeitig im Rechner hat. Nervt aber trotzdem. AP hat halt den Vorteil, dass man sich per Android leicht verbinden kann ohne notwendige Konfigurationen durch den User. Der braucht nur namen und passwort. Deswegen will ich den auch haben.
kseege schrieb: > Insofern wäre meine erste Frage: Was hat der OriginalPoster gewollt Das geht ganz klar aus seinen Postings hervor. > und > was hat er wirklich gebaut Das geht auch ganz klar aus seinen Postings hervor. Zumindest seit er die Ausgaben von route und traceroute geliefert hat. > und wozu soll das gut sein Ist doch klar: er will einerseits mit seinen Clients ganz normal Verbindung zum Internet halten, zusätzlich aber eine Verbindung zu dem vom ESP-AP aufgespannten WLAN. Mindestens zu diesem ESP selber, möglicherweise auch noch zu weiteren Clients in dessen WLAN. Ein vollkommen übliche, logische und normale Anforderung. Insbesondere dann, wenn man eben dieses WLAN vom Internet getrennt halten will. Was dringend empfehlenswert ist.
@Martin Dann sollte doch der Eintrag des Gateways aus Deiner Fritzbox in das Gateway des softAP genau den richtigen Eintrag in Deinem Laptop hervorrufen. Das habe ich schon 2mal vorgeschlagen, und Frank M. auch. Ich habe zwar nur Halbwisssen (als ich technischen Support f. TCP/IP gemacht habe war Jahreszahl<RFC<2000), aber danach sollte genau das passieren und so ist es mir auch bei meinen Experimenten mit dem alten Router ergangen. Wenn Du vor und nach der Verbindung zum softAP in Linux "ip route show" aufrufst, solltest Du zuerst nur eine default-Zuweisung und danach zweimal ebendiese Zeile als "default route" sehen und alles einwandfrei funktionieren. Kappst Du die Verbindung, verschwindet die vorderste Zeile, aber alles bleibt wie es ist, weil beide default-Routen identisch waren. Hat irgendein echter Netzwerkexperte Einwände? @c-hater Habe zwischendrin zu lange mit meiner Tochter telefoniert und vor dem Absenden die in der Zwischenzeit eingetrudelten Beiträge nicht mehr beachtet, da der OP, der hier wohl TO (ThreadOwner?) heißt, sich bereits ins Wochenende verabschiedet hatte. Pardon, mein Fehler.
@c-hater Nach meinem Halbwissen wird der DNS-Server typischerweise vom Internet-Provider festgelegt und über die Gatewayadresse angesprochen. Nur wenn man den ändern will, gibt man was an den Router weiter, damit er den default übergeht. Tracert geht auch dann schief, wenn die "default route" verbogen ist, zumindest bei meinen Computern. Daher wäre nach meiner Meinung "ip route show" interessanter. Klingt das für den Fachmann logisch?
kseege schrieb: > Nach meinem Halbwissen wird der DNS-Server typischerweise vom > Internet-Provider festgelegt und über die Gatewayadresse angesprochen. Der Provider übergibt seine Nameserver meistens beim PPPoE-Handshake, je nach Anbindung stattdessen per DHCP. Der kundenseitige Router liefert den Clients per DHCP entweder die vom Provider gelieferten Nameserver oder fungiert als Forwarder, in dem Fall entspricht dann die DNS-Adresse der internen IP-Adresse des Routers. Im Fall des TO (Access Point erlaubt nur den Zugriff auf ein Gerät, kein Internetzugang) sollte natürlich weder Gateway noch Nameserver mitgeliefert werden.
Mist, schon wieder zu schnell gepostet. Um 18:33 hat der TO ja schon die Ergebnisse von "ip route" beigebracht. Jetzt wirds für mich unverständlich.
Um etwas Licht ins Dunkel zu bringen, könnte man die Namensauflösung umgehen und ein ping oder traceroute auf eine bekannte 32-bit-Adresse machen. Wenn man dann nach der Verbindung mit dem AP und dank des vorhandenen korrekten Gateways eine Verbindung ins Internet bekommt, ist es wohl tatsächlich die Namensauflösung, ansonsten nicht. Ich habe aber keine Ahnung, wie man die Adresse des benutzten DNS-Servers anzeigt. Wenn ich "ping heise.de" mache, bekomme ich 192.99.144.80 angezeigt, das sollte als Test funktionieren. Ansonsten fällt mir nur noch ein, daß man "ip route" mehrmals machen sollte und dazwischen auch ein paar Pausen, da sich die Netzwerkstruktur nicht im Millisekunden-Rythmus zurechtruckelt, sonder durchaus schon mal Sekunden braucht. @Hmmm Da der TO Firmware aus dem ROM des ESP32 benutzt, hat er da nur den Spielraum, den Espressif ihm einräumt. Und in den Feinheiten ist da durchaus manchmal Reverse Engeneering angesagt, da Espressif nicht immer alles verrät, zumindest nicht in den englischen Datenblättern. Auch Fehler sollen existieren. Insofern kann der TO zunächst mal nur in den Eingeweiden seines eigenen Rechners forschen, was dort ankommt. Nach meinem bisherigen Kenntnisstand ist die Firmware des ESP32 nur mit ihrem API beschrieben, aber das kann veraltet sein, mein Wissensstand ist von vor ca. 2 Jahren.
Harry L. schrieb: > Ein AP ist kein Router! Erkläre das mal der Firma Bintec oder der Firma Logilink. In meinem (älteren) Bintec W1002n stecken DHCP, DNS, NAT und SIF drin. Im Logilink WL0141 sieht das ähnlich aus, der kann am Draht ein anderes Netz als im WLAN und macht NAT. Natürlich kann man beide in den Bridge-Modus schalten, dann reichen sie die IP vom Draht-Ethernet einfach zum WLAN durch. > Leg den AP ins selbe Subnetz wie deine FritzBox (192.168.178.0/24) und > schalte den DHCP-Server auf dem ESP ab (falls vorhanden) Hmmm schrieb: > Seiner Beschreibung nach spannt der AP ein komplett getrenntes Netz auf, > damit damit verbundene WLAN-Clients auf den Controller zugreifen können. > > Das kann man durchaus so machen, der DHCP-Server darf bloss keine > Default-Route mitliefern, Oh doch, dass muß er sogar: Der drahtgebundene Router liefert seine Default-Route zum AP, der AP liefert seine abweichende Default-Route zum verbundenen WLAN-PC. Das ist dann NAT hinter NAT, beherrschbar, aber nicht kindersicher. Ob man das macht und / oder braucht, muß man sich überlegen, man baut ein Netz hinter dem Netz und kann nicht wahlfrei kreuz und quer auf alle Maschinen zugreifen. Jobst M. schrieb: > Wie schafft man es, sich ohne Netzwerkkenntnisse einen AP zu bauen? Zusammenkopiert, wie es sich für die Arduinofraktion gehört.
Cartman schrieb: > Mach einfach aus deinem ESP32-AP einen ESP-WLAN-Client. Und der PC wird dann AP? Kann man machen, ist aber auch eine blöde Idee. Okay. Der ESP ist AP. Das bedeutet erst einmal, dass dort ein drahtloses Netzwerkinterface sitzt, mit dem man sich verbinden kann. AP bedeutet nicht, dass es dahinter weiter geht. Also bietet der AP selber Dienste an. Z.B. Webserver oder so. Wenn DHCP läuft, ist das evtl. sinnvoll. Dass dieser dann eine default route legt wäre nicht sinnvoll. Das ergibt nur einen Sinn, wenn es am ESP ein weiteres NIC gibt. Hast Du ausprobiert die Netzwerkeinstellungen für Dein WLAN auf statisch zu stellen? Wenn es auf statisch steht kann Dir die route ins Internet nicht abhanden kommen! Gruß Jobst
Manfred schrieb: > Oh doch, dass muß er sogar: Der drahtgebundene Router liefert seine > Default-Route zum AP, der AP liefert seine abweichende Default-Route zum > verbundenen WLAN-PC. So hat er es aber nicht verbunden. Er hat beides parallel an einem PC Ich mal mal ... 'n Bildchen ... Gruß Jobst
Jobst M. schrieb: > Ich mal mal ... 'n Bildchen ... Frag lieber nach dem output von ip a,ip link u. iw dev. Sonst werden das noch viele Bildchen
Manfred schrieb: > Hmmm schrieb: >> Seiner Beschreibung nach spannt der AP ein komplett getrenntes Netz auf, >> damit damit verbundene WLAN-Clients auf den Controller zugreifen können. >> >> Das kann man durchaus so machen, der DHCP-Server darf bloss keine >> Default-Route mitliefern, > > Oh doch, dass muß er sogar: Der drahtgebundene Router liefert seine > Default-Route zum AP, der AP liefert seine abweichende Default-Route zum > verbundenen WLAN-PC. Nein (das ist ja auch schon geklärt), denn wohin sollte die defaultroute ins WLAN denn gehen? Der AP läuft auf dem ESP32, ist nicht mit dem Router verbunden, nur der Laptop ist über WLAN mit dem ESP32 verbunden, der ESP32 sonst mit nix. Da wäre eine defaultroute dorthin ziemlich dumm. Jetzt ist nur noch zu klären, wie man dem DHCP-Server im ESP32 auch die DNS-Server-Adresse abgewöhnt. Ein paar Minuten google-fu: https://esp32.com/viewtopic.php?t=3761 und https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_netif.html#_CPPv422esp_netif_dhcps_optionP11esp_netif_t28esp_netif_dhcp_option_mode_t26esp_netif_dhcp_option_id_tPv8uint32_t -> Es scheint im IDF Funktionen zu geben, die genau dafür da sind. Leider mittelgut dokumentiert, wie üblich bei Espressif. MfG, Arno
So sollte es aussehen. Ich frage mich allerdings, wo (weiter oben) die IPs 192.168.5.2 und 192.168.4.1 her kommen. Gruß Jobst
kseege schrieb: > Nach meinem Halbwissen wird der DNS-Server typischerweise vom > Internet-Provider festgelegt und über die Gatewayadresse angesprochen. Nein, nicht festgelegt. Es wird Dir bzw. dem Router via PPP(oE) oder DHCP mitgeteilt, welchen Du nutzen kannst. Meist der eigene vom Provider, es ist aber auch möglich, dass der Dir z.B. den Google DNS (8.8.8.8 - das ist so schön einfach zu merken) mitteilt. In den Routereinstellungen hat man die Wahl den vom Provider mitgeteilten zu verwenden oder statisch einen anderen einzutragen. Und dann gibt es wieder verschiedene Möglichkeiten: Der Router gibt diese Info per DHCP an seine Clients weiter, welche dann (über ihr Gateway - natürlich, dazu muss man ins Internet) den eingetragenen oder vom Provider mitgeteilten DNS-Server befragen. Eine weitere Möglichkeit ist, dass der Router selber die DNS-Anfragen der Clients entgegennimmt und die Anfragen selber an den eingestellten DNS-Server stellt. Dann ist aus Sicht der Clients der Router der DNS-Server und muss nicht geroutet werden (keine default route für DNS notwendig). Aber auch diese Einstellung ist für den Client nicht verbindlich. Er kann dennoch über die default route jeden beliebigen DNS-Server im Internet erreichen, sofern er seine IP kennt. So wie man auch alle anderen Server des Internets darüber erreichen kann. Und dann gibt es noch die Möglichkeit, einen DNS-Server auf einem extra Gerät im selben Netzwerk zu betreiben. Dann stellt man die DNS-Anfrage an diesen. Der Server seinerseits stellt dann (möglicherweise über das default GW, vielleicht aber auch über einen anderen Weg) seine Anfragen an DNS-Server im Internet. Auch die IP des Netzwerkinternen DNS außerhalb des Routers kann per DHCP den Clients durch den Router mitgeteilt werden. Aber auch das müssen die Clients nicht beachten und können einen anderen benutzen. > Tracert geht auch dann schief, wenn die "default route" verbogen ist, > zumindest bei meinen Computern. Daher wäre nach meiner Meinung "ip route > show" interessanter. Klingt das für den Fachmann logisch? Traceroute funktioniert nur über die Grenzen von Netzwerken. Für die Rechner im selben Netz ist es sinnfrei. Mit denen ist man direkt verbunden und wird deshalb keine route finden. Möchte man aus seinem Netzwerk raus, benötigt man in den meisten Fällen eine default route. Es ist der Wegweiser nach draußen. Alles was nicht für das eigene Netz ist oder explizit anders geroutet wird (der AP des TO gehört dazu) muss dort entlang. Man kann sie nur weg lassen, wenn man nicht wünscht, dass ein Gerät mit der Außenwelt kommuniziert oder man lokale Proxy-Server verwendet. Gruß Jobst
> mit WLAN > traceroute -n www.heise.de > www.heise.de: Temporärer Fehler bei der Namensauflösung > Cannot handle "host" cmdline arg `www.heise.de' on position 1 (argc 2) Hier wollen 2 Schritte NACHEINANDER geschehen: 1. der Name "www.heise.de" in eine IP-Adr. aufgelöst bekommen 2. diese IP-Adr. erreicht werden und der Weg dorthin angezeigt bekommen. Es scheitert bereits bei 1. Da ist die Fehlermeldung unmissverständlich, zu 2. kommt es nicht. Von dieser Fehlerlmeldung lässt sich NUR ableiten dass keine Namensauflösung möglich ist, nicht aber warum (und da kommen mehr als 2 möglichkeiten in betracht). Was sich NICHT davon ableiten lässt, ist dass "Internet weg" ist (vgl. Bloss weil Du die Tel.Nr. deines Kumpels Cousine nicht nachschlagen kannst, bedeutet dies nicht dass dein Telefon/Händy gar keine Nummer anwählen kann: du musst schlicht eine Eier bekannte Nummer wählen) Versuche mal "traceroute 8.8.8.8" das ist ein Node von google. So wird forciert 1. umgangen und es wird direkt 2. versucht. Dass 8.8.8.8 ein DNS-Server von Big-G ist, ist erstmals zweitranging. Erst wenn dies scheitert kann von "Internet Weg" die Rede sein. Hoffentlich ist dann die Fehlermeldung auch so aussagekräftig und ich pokere auf etwas ähnliches wie "no route to host" oder sinngemäss. Es könnte aber auch erfolgreich sein, der rein numerische Weg...
> mit WLAN > ip route > default via 192.168.178.1 dev eth0 proto static metric 100 > 169.254.0.0/16 dev eth0 scope link metric 1000 > 192.168.5.0/24 dev wlan0 proto kernel scope link src 192.168.5.2 > metric 600 > 192.168.178.0/24 dev eth0 proto kernel scope link src 192.168.178.53 > metric 100 Das sieht doch aus numerischer Sicht ganz ordentlich aus: default route bleibt wie sie sein muss. Ein weiteres Netz (WLAN) ist hinzugekommen, bloss hat es eine andere metric. Ich weiss nun nicht auswändig ob höhere Metriczahl für hohere Prio oder für höhere "Kosten" steht und mag grad nicht nachschlagen (erstmal Frühstück). Ev. Passen für dein Fall besser wenn 600<->100 bei WLAN<->LAN getauscht werden. Bitte recherchiere Du das.
Sieg!!! habe heute morgen noch einen Hack im web gefunden. Das muss ich noch genauer verstehen und sauber einbauen.
1 | ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP)); |
2 | uint8_t opt_val = 1; // don't supply a dns server via dhcps |
3 | tcpip_adapter_dhcps_option(TCPIP_ADAPTER_OP_SET, TCPIP_ADAPTER_DOMAIN_NAME_SERVER, &opt_val, 1); |
4 | ESP_ERROR_CHECK(tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP)); |
Jetzt läuft Alles so wie es soll. Vielen Dank an Alle, ohne euch hätte ich das nicht so schnell geschafft. Der Tip mit der defaultroute und traceroute waren Gold wert. Aber wie habe ich es geschafft in die Arduino Ecke zu kommen? Mein Programm setzt direkt auf dem espressif framework auf. Ich gebe zu, dass ich mich nicht scheue für einen quick Hack arduino zu benutzen oder dass ich mal in deren sourcen stöbere. So ganz blöd ist das nämlich auch nicht. Das ist für Leute, die sich da nicht groß einarbeiten wollen. Und das ist doch ok.
Martin schrieb:
>Aber wie habe ich es geschafft in die Arduino Ecke zu kommen?
Um 2 Ecken.
1.Ecke) Arduino macht es auch Anfängern leicht, zu Ergebnissen zu
kommen. Dementsprechend gibt es Menschen, die sich ohne Ahnung mit
Copy&Paste an größere Projekte wagen und dann mit sehr unbedarften
Fragen ungeduldigen Experten auf die Nerven gehen.
2.Ecke) Die Klagen der genervten Experten lesen dann andere Experten,
die ihrerseits von Mikrocontrollern aber keine Ahnung haben, für die ist
dann jeder Mikrocontrollerprogrammierer ein solcher unbedarfter
Arduinonutzer.
Analoges Beispiel aus dem täglichen Leben: Carpaccio!
Das war mal die Hommage eines Kochs an einen italienischen
Renaissancemaler, der viel in dunkelbraunen Farbtönen gemalt hat. Weil
aber nur wenige Köche italienische Renaissancemaler kennen, benutzen sie
nun den Namen für die andere Eigenschaft der ihnen bekannten
Gaumenfreude, nämlich die, aus dünnen Scheiben zu bestehen. So gibt es
inzwischen Käse-Carpaccios!
So einfach ist das, ein begrenzter Horizont erleichtert das Leben.
@Jobst
Danke für die Horizonterweiterung.
Gruß
Klaus
> Weil > aber nur wenige Köche italienische Renaissancemaler kennen, benutzen sie > nun den Namen für die andere Eigenschaft der ihnen bekannten > Gaumenfreude, nämlich die, aus dünnen Scheiben zu bestehen. So gibt es > inzwischen Käse-Carpaccios! > > So einfach ist das, ein begrenzter Horizont erleichtert das Leben. > > @Jobst > Danke für die Horizonterweiterung. Weil nur wenige Interessenten von italienischen Künste die italienische Sprache kennen, benutzen sie phantasievolle Endungen zur Pluralbildung. 1 carpaccio, tanti carpacci (-os ist sowas von iberisch und mindestens ein ganzes tirrenisches Meer von der terraferma[*] italiana entfernt, da müsste man sich glatt in Geometrie auskennen...) Analoges Beispiel aus der Alltags(fastfood)küche: Pizza. 1 pizza, tante pizze. (nicht pizzas und nicht Pizzen (anglomix & germanomix) ) [* ich wollte das ital. Wort für Halbinsel verwenden, leider meint die Klugexkrementierende ForenSW dass dies ein pöhsespöhses Wort sei welches der hier verkehrenden teils kurzhorizotigen Leserschaft nicht zumutbar sei. Lachhaft, wenn es nicht Realsatire wäre] Danke für den Trigger zur kaskadierten Horizonterweiterung.
@il pignolo Paparazzo, Paparazzi ganz viele Paparazzis Zucchino, Zucchini, ganz viele Zucchinis Graffitto, Graffitti, ganz viele Graffittis die Liste ist beliebig lang, aber OffTopic :-))) Bei peninsula eventuell ein n vergessen? Hier gehts durch.
kseege schrieb: > @il pignolo > > Paparazzo, Paparazzi ganz viele Paparazzis > Zucchino, Zucchini, ganz viele Zucchinis > Graffitto, Graffitti, ganz viele Graffittis semplicemente NO! paparazzissimi/zucchinissimi/graffittissimi wäre noch halbwegs "konsistent geblödelt" ;-) > die Liste ist beliebig lang, aber OffTopic :-))) > Bei peninsula eventuell ein n vergessen? Hier gehts durch. Das ist kein italienisches Wort: das 2te n gehört im italienischen definitiv nicht dazu und das u muss ein o sein: isola f. Insel. Aber sowas von garantiert.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.