PaoloP:
Il router è configurato per l'assegnazione degli ip dinamici? Hai attivato il Server DHCP del router?
Ti rimando a questo topic simile --> http://arduino.cc/forum/index.php/topic,90196.0.html
Cerca anche "Fastweb" sul forum, ci sono topic che permettono di configurare anche il loro router.
Intanto ti ringrazio per l'interessamento e l'aiuto.
Il router non è di fastweb ma in d-link ed è attivo sia il dhcp che l'assegnazione auto degli IP.
Ho anche controllato il post al link che hai indicato ma non ho risolto, ho utilizzato lo sketch postato in quella discussione , ma mi da sempre Failed to configure Ethernet using DHCP

Ho scoperto che im modello dello shieldha il seguente processore "enc28j60 processor"
Ho scaricato la libreria EtherCard da GitHub - njh/EtherCard: EtherCard is an IPv4 driver for the ENC28J60 chip, compatible with Arduino IDE, l'ho installata e ho provato gli sketch ma ho ancora il solito problema .
Lo sketch è il seguente:
// Ping a remote server, also uses DHCP and DNS.
// 2011-06-12 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
#include <EtherCard.h>
// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[700];
static uint32_t timer;
// called when a ping comes in (replies to it are automatic)
static void gotPinged (byte* ptr) {
ether.printIp(">>> ping from: ", ptr);
}
void setup () {
Serial.begin(9600);
Serial.println("\n[pings]");
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println( "Failed to access Ethernet controller");
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
#if 1
// use DNS to locate the IP address we want to ping
if (!ether.dnsLookup(PSTR("www.google.com")))
Serial.println("DNS failed");
#else
ether.parseIp(ether.hisip, "74.125.77.99");
#endif
ether.printIp("SRV: ", ether.hisip);
// call this to report others pinging us
ether.registerPingCallback(gotPinged);
timer = -9999999; // start timing out right away
Serial.println();
}
void loop () {
word len = ether.packetReceive(); // go receive new packets
word pos = ether.packetLoop(len); // respond to incoming pings
// report whenever a reply to our outgoing ping comes back
if (len > 0 && ether.packetLoopIcmpCheckReply(ether.hisip)) {
Serial.print(" ");
Serial.print((micros() - timer) * 0.001, 3);
Serial.println(" ms");
}
// ping a remote server once every few seconds
if (micros() - timer >= 5000000) {
ether.printIp("Pinging: ", ether.hisip);
timer = micros();
ether.clientIcmpRequest(ether.hisip);
}
}
Ho avuto una serie di problemi:
1)nel codice originale usa come baudrate 57600 , ma con questo valore il serial monitor visualizza caratteri "random".
Ho sostituito il valore con 9600 (l'unico a funzionare)
2)La maggiorparte delle volte(una sola volta non è successo quanto sto per spiegare)i lserial monitor si ferma alla scritta Ping.
3)L'unica volta in cui è andato oltre alla scritta ping ,sul serial monitor è stato visualizzato
Failed to access Ethernet controller
e tutti i valori a 0.0.0.0 ovviamente.