Ich hab mir jetzt mal einen Arduino mit Ethernetshield geschnappt. Das Ergebnis ist repoduzierbar. Verwende ich einen lokalen DNS-Server (entweder die FritzBox selbst, oder meinen internen DNS-Server), dann klappt die Auflösung sofort. Wird ein externer DNS verwendet z.B. 8.8.8.8 oder 4.4.4.4 geht es nicht. Verwende ich allerdings einen anderen freien DNS-Server (z.B. 208.67.222.222) dann geht es.
Hier der Sketch der bei mir funktioniert:
#include <SPI.h>
#include <Ethernet.h>
#include <Dns.h>
byte mac[] = { 0xDE, 0xBB, 0xDE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 220 };
byte dnsserver[] = { 208,67,222,222 };
byte gateway[] = { 192, 168, 0, 252 };
byte sub[] = { 255, 255, 255, 0 };
int ret;
void setup() {
Serial.begin(9600);
Ethernet.begin(mac, ip, dnsserver, gateway, sub);
Serial.print("TEST ");
const char* host = "www.google.de";
DNSClient dns;
IPAddress remote_addr;
dns.begin(Ethernet.dnsServerIP());
ret = dns.getHostByName(host, remote_addr);
Serial.print("Ausgabe ");
Serial.println(ret);
Serial.print(remote_addr);
}
void loop() {
}
Anscheinend wird hier ein DNS-Request zusammengebaut, den google nicht mag.