Di recente ho installato un router WNR2000v3 che esegue DD-WRT come una sorta di ripetitore bridge utilizzando la versione "Atheros" di questo tutorial (chiameremo questo "router 2"), che sta ripetendo un router Medialink Wireless-N (noi " Chiamerò questo 'router 1'). Funziona perfettamente con il mio telefono Android e computer Windows sia tramite Wi-Fi sia quando connesso direttamente tramite Ethernet, ma quando collego il mio Raspberry Pi, sia quando eseguo Raspbian (wheezy) o Raspbmc, non riesco a ottenere alcuna connessione al di fuori della rete locale.
Il raspberry pi può eseguire il ping (ed eseguire il ping da) qualsiasi altro dispositivo sulla sottorete locale, incluso 'router 2', a cui è direttamente collegato ed è in grado di ottenere DHCP dal router 1, ma quando provo e ping router 1, ottengo "Host di destinazione irraggiungibile" e se provo a eseguire il ping di qualcosa su Internet come google.com, superuser.com, ottengo allo stesso modo "Host di destinazione irraggiungibile".
Ecco un altro computer in rete:
ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_req=1 ttl=127 time=38.7 ms
64 bytes from 192.168.0.100: icmp_req=2 ttl=127 time=1.67 ms
64 bytes from 192.168.0.100: icmp_req=3 ttl=127 time=1.73 ms
64 bytes from 192.168.0.100: icmp_req=4 ttl=127 time=3.56 ms
--- 192.168.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.672/11.418/38.705/15.772 ms
Ecco il router 1:
ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.107 icmp_seq=1 Destination Host Unreachable
From 192.168.0.107 icmp_seq=2 Destination Host Unreachable
From 192.168.0.107 icmp_seq=3 Destination Host Unreachable
From 192.168.0.107 icmp_seq=4 Destination Host Unreachable
From 192.168.0.107 icmp_seq=5 Destination Host Unreachable
From 192.168.0.107 icmp_seq=6 Destination Host Unreachable
--- 192.168.0.1 ping statistics ---
8 packets transmitted, 0 received, +6 errors, 100% packet loss, time 7007ms
pipe 3
192.168.0.107 è l'indirizzo del Raspberry Pi:
ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:db:c9
inet addr:192.168.0.107 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3753 errors:0 dropped:0 overruns:0 frame:0
TX packets:1262 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:595127 (581.1 KiB) TX bytes:112407 (109.7 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:285 errors:0 dropped:0 overruns:0 frame:0
TX packets:285 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:27703 (27.0 KiB) TX bytes:27703 (27.0 KiB)
Ecco la tabella di routing:
sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Ed ecco la richiesta DHCP:
sudo dhclient -v eth0
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/xx:xx:xx:xx:db:c9
Sending on LPF/eth0/xx:xx:xx:xx:db:c9
Sending on Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
RTNETLINK answers: File exists
bound to 192.168.0.107 -- renewal in 274691 seconds.
Tutto il resto funziona bene, ma ho provato questo rapsberry pi con due immagini diverse (Raspbmc e raspbian) e due diversi pis di lampone e nessuna configurazione funziona. L'immagine raspbian è stata testata come funzionante quando è collegata direttamente al router 1. Questo problema sembra molto simile a questa domanda senza risposta di due anni fa, tranne per il fatto che in quel caso sembra che stesse usando il wifi per il dispositivo che non è riuscito a connettersi, e stava effettivamente ricevendo una connettività intermittente. Anche la risposta al ping è stata dal router, non dal dispositivo. Cosa potrebbe causare questo problema?
Modifica: dovrei anche notare che i due diversi pis di lampone avevano indirizzi IP diversi, uno dei quali era associato a IP-MAC, e non c'erano collisioni IP che ho visto nella tabella DHCP, ma lo stesso problema su ciascuno.
Aggiornamento : ho individuato una cosa potenzialmente interessante, ovvero che quando la clonazione dell'indirizzo MAC è disattivata, il ripetitore bridge smette di funzionare - l'unica cosa che può eseguire il ping del raspberry pi è il router 2 e non c'è connettività (o accesso al router 1) da qualsiasi cosa collegata solo al router 2 - incluso il computer Windows. Tuttavia, l'indirizzo mac che viene clonato è lo stesso indirizzo mac effettivamente utilizzato dalle interfacce del router 2 (in base alla pagina "stato"). Ho acceso e riacceso sia il router 1 che il router 2 due volte e non fa alcuna differenza. Non capisco perché la clonazione dell'indirizzo MAC sia rilevante qui. Con la clonazione dell'indirizzo MAC disattivata, quando accedo al router stesso, il router può eseguire il ping di Raspberry pi, ma non del router 1.
Un'altra piccola cosa è che quando la clonazione dell'indirizzo MAC è attiva e posso effettivamente eseguire il ping di altri computer sulla rete, l'arping restituisce lo stesso indirizzo mac per ogni dispositivo che risponde ai ping.
Aggiornamento 2: dal controllo dei valori syslog, ho scoperto che c'era questo messaggio di errore relativo all'indirizzo MAC:
Jan 1 00:00:08 Router 2 kern.err kernel: [ 6.770000] ath: eeprom contains invalid mac address: ff:ff:ff:ff:ff:ff
Jan 1 00:00:08 Router 2 kern.err kernel: [ 6.780000] ath: random mac address will be used: fa:55:da:33:19:a9
Apparentemente questo è un problema noto che le persone stanno risolvendo usando la clonazione dell'indirizzo MAC. Non sono esattamente sicuro del perché gli indirizzi MAC casuali rappresentino un problema e quali altre conseguenze abbia la clonazione degli indirizzi MAC.