Ethernet shield non viene vista all'interno del router

Salve a tutti.
Sono in possesso della scheda arduino uno r3 con assemblata la scheda ethernet shield.
Il mio problema è che entrando nella configurazione interna del router 192.168.1.1, il dispositivo arduino non viene visto in nessuna porta lan.
Il router è un Thomson tg 585 . Con linea telefonica Telecom.
Però caricando lo schema che ora vi allego, posso comunque accedere ad un indirizzo web per poter far accendere 2 led e funziona tutto bene. Però se volessi usare questo sketch con ip pubblico per controllo remoto,non lo posso fare perchè non mi vede nulla collegato sulle lan apparte il pc che uso.
Allego lo sketch:

#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>

//DETERMINA IL MAC E L'IP DELLA PAGINA WEB
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 
byte ip[] = {
  192, 168, 1, 239};

//PORTA DI COMUNICAZIONE			
EthernetServer server(272);

//SCRIVE IL NUMERO DI PIN CORRISPONDENTE AI LED
int ledPin1 = 9; 
int ledPin2 = 8;

//LUNGHEZZA DELLA STRINGA INVIATA
String readString = String(30);

//IMPOSTA ALL'AVVIO I LED SPENTI
boolean LEDON1 = false; 
boolean LEDON2 = false; 

void setup(){
  Ethernet.begin(mac, ip);
  pinMode(ledPin1, OUTPUT);  
  pinMode(ledPin2, OUTPUT); 
  Serial.begin(9600);
}

void loop(){
  EthernetClient client = server.available();
  if (client) //SE ESISTE UN CLIENTE
  {
    while (client.connected()) // SE IL CLIENTE E' CONNESSO
    {
      if (client.available()) //SE E' TUTTO OK PER INIZIARE
      {
        char c = client.read(); //LEGGI I SINGOLI CARATTERI INVIATI
        if (readString.length() < 100) 
        {
          readString += c; //CONCATENA I CARATTERI
        }  
        if (c == '\n') //VEDE SE C'E' IL CARATTERE DI FINE STRINGA, PER INDIVIDUARE CHE E' FINITA
        {
          if(readString.indexOf("L1=1") > 0) //IMPOSTA UNA VARIABILE DI TIPO BOLEANA (VERO-FALSO) PER GLI STATI DEL LED
          {
            LEDON1 = true;
          } 
          else if (readString.indexOf("L2=1") > 0) 
          {
            LEDON2 = true;             
          }
          else if(readString.indexOf("L1=0") > 0)
          {
            LEDON1 = false;
          } 
          else if (readString.indexOf("L2=0") > 0) 
          {
            LEDON2 = false;             
          }

          //CREA LA PAGINA HTML (VERRA' AGGIORNATA AD OGNI ISTRUZIONE NUOVA)
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<html><head></head><body>");

          //TITOLO LED 1
          client.println("<h1>Led 1</h1>");

          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON1:  
          if (LEDON1) { 
            digitalWrite(ledPin1, HIGH);   
            client.println("Stato: ON
");
          } 
          else {

            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON1:  
            digitalWrite(ledPin1, LOW ); 
            client.println("Stato: OFF
"); 
          }

          //CREA I PULSANTI RELATIVI A LED1    
          client.println("<a href='?L1=0'>SPEGNI</a>");
          client.println("<a href='?L1=1'>ACCENDI</a>");

          //INSERISCE IL DIVISORE
          client.println("
______________________________
");

          //TTOLO LED2
          client.println("<h1>Led 2</h1>");

          //OPERAZIONI DA FARE QUANDO SI CLICCA PER ATTIVARE LEDON2:  
          if (LEDON2) { 
            digitalWrite(ledPin2, HIGH);  
            client.println("Stato: ON
"); 
          } 
          else { 

            //OPERAZIONI DA FARE QUANDO SI CLICCA PER SPEGNERE LEDON2:    
            digitalWrite(ledPin2, LOW); 
            client.println("Stato: OFF
"); 
          } 

          //CREA I PULSANTI RELATIVI A LED2
          client.println("<a href='?L2=0'>SPEGNI</a>");
          client.println("<a href='?L2=1'>ACCENDI</a>");

          //CHIUDE I TAG HTML PER LA PAGINA
          client.println("</body></html>");

          //SI PREPARA PER UNA NUOVA ISTRUZIONE
          readString="";

          //TERMINA LE OPERAZIONI CLIENTE
          client.stop();
        }
      }
    }
  }
}

Questo è lo sketch che ho attualmente caricato sull'arduino.
Spero nei vostri utili aiuti ringraziando anticipatamente.
Saluti.
Enzo.

prova a cambiare le prime tre coppie del MAC con queste 04:18:D6 e dimmi se ti funziona

In teoria il MAC è inventato, l'importante è che non corrisponda ad una scheda che già c'e' nella LAN privata.

Non sò se questo risolve, ma io preferisco passare tutti i parametri di rete, anche gateway e subnet mask:

vedi l'esempio del sito Arduino.

è vero che il MAC è inventato ma io mi sono imbattuto in alcuni apparati di rete che, se non comunicano con un apparato con un MAC "riconosciuto", non lo prendono in considerazione.
In questo caso il MAC per lo shield deve avere le prime tre coppie di un costruttore certificato e riconoscibile

killrob:
In questo caso il MAC per lo shield deve avere le prime tre coppie di un costruttore certificato e riconoscibile

Grazie per la info.
Cosa si intende per riconoscibile? C'e' una regola da seguire?

per riconoscibile intendo che deve essere riconducibile ad un costrututtore, se vai su questo link Account Suspended e digiti per esempio asus o acer o nvidia o chi preferisci, ti da le prime 3 coppie dell'indirizzo MAC utilizzato da loro, prime tre coppie che puoi utilizzare per arduino shield

Ciao a tutti.
Volevo informarvi che ho risolto semplicemente modificando l'indirizzo Mac .

hai messo le prime tre coppie che ti avevo indicato?

Ciao , si ho sostituito le prime lettere.
Grazie mille.