View Full Version : Script + cache arp
vampirodolce1
14-03-2008, 17:20
Mi piacerebbe risolvere questi due fastidiosi problemi su Debian...
Nel primo caso non mi riferisco ad uno script generico, bensi' al comando /usr/bin/script che forse pochi conoscono ma e' molto utile nel caso si voglia registrare la sessione di un terminale. E' utile soprattutto ai principianti. Se lo invoco manualmente funziona, mi piacerebbe pero' metterlo in .bashrc affinche' memorizzi quando digitato da console. Tuttavia mettendolo in .bashrc appena faccio il login la shell sembra impazzire e il file typescript diventa enorme. Chi sa il motivo?
Altro comportamento tuttora inspiegato e' quello della configurazione IP: a volte devo cambiare IP velocemente e lo faccio con ifconfig... non sempre, ma ogni tanto mi tocca riavviare la macchina per essere nuovamente pingabile; purtroppo non so essere piu' preciso ma vi posso dire che lo fa anche knoppix e su diversi pc. Sbaglio qualcosa io? Ho provato di tutto: ifdown/ifup, ifconfig eth0 down/ifconfig eth0 up, /etc/init.d/networking restart, ecc. Con uno sniffer ho visto che il mio pc (ho provato il ping da almeno 3 computer) non risponde all'arp request, infatti nella cache arp dell'altro risulta la scritta INCOMPLETE. Il problema ovviamente si presenta anche disabilitando iptables e anche se il collegamento avviene rozzamente con cavo incrociato. Suggerimenti?
Gimli[2BV!2B]
14-03-2008, 19:37
Per quanto riguarda script non ho ben capito cosa vorresti fare... lo vuoi avviare automaticamente ogni volta che apri bash? Che modifiche hai fatto a bashrc?
Per quanto riguarda l'ip devo dire che non mi sono mai trovato in una situazione di quel tipo...
Specifica il modello della scheda di rete, la versione di Debian e del kernel, precisando se è un vanilla, così si può cercare se c'è qualcosa nei meandri di internet.
vampirodolce1
17-03-2008, 12:25
Si', lo vorrei avviare ogni volta che un utente accede alla bash. Ho provato a inserire /usr/bin/script -q nome_file, eventualmente prefissato con 'exec' ma non funziona.
Scheda di rete: Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) [e' un laptop Acer]; kernel 2.6.18-4-686 #1 SMP, non e' un Vanilla.
Lo stesso problema come dicevo mi capita su knoppix 5.1.1 e per giunta su un computer totalmente diverso, un Compaq, quindi non penso sia un problema di kernel o di scheda. Piuttosto, occorre seguire una procedura particolare quando si cambia IP all'interfaccia di rete? Che so, prima tirare giu' l'interfaccia, ecc. Magari e' solo un dettaglio che mi sfugge.
Gimli[2BV!2B]
17-03-2008, 21:56
Ho fatto alcuni tentativi ma non sono riuscito a capire se, o come, sia possibile eseguire script con, o al posto, di bash.
Ho provato la variabile FAKE_SHELL in /etc/login.defs, il campo user command interpreter in /etc/passwd, ma in tutti i casi script non riesce ad avviare una shell interattiva. Nei casi migliori si avvia ma non riesce a creare il file in cui loggare. Con il SUID (da evitare...) si avvia ma riceve l'opzione -i, che non riconosce, ed esce.
Credo che la strada più promettente sia quella di FAKE_SHELL, ma non ho trovato molto in proposito.
In ogni caso personalmente non trovo l'avvio automatico una grande idea.
Passiamo alla rete, anch'io ho la mia Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10), ma non cambia mai ip perchè è la 100megabit collegata al modem.
Se si trattava di una gigabit recente poteva essere che il driver svalvolasse un attimo... Hai provato a rimuovere il modulo ed a rimetterlo? Non credo risulti bloccato da qualche altro, ma nel caso prova pure un rmmod -f, tanto se sei comunque costretto a riavviare...
Per quanto riguarda una procedura particolare per riconfigurare un'interfaccia di rete, direi che se hai questi problemi dovresti tentare di ricordarti di abbassare l'interfaccia prima di riconfigurarla.
In ogni caso che sistema operativo montano i pc le cui tavole ARP si rifiutano di riconoscere il tuo? Nemmeno una rinfrescata alle tabelle risolve?
Win 2k/XP (Vista? Mah!)
Cancellazione della cache ARP mediante lo strumento Arp
Se il ping dell'indirizzo di loopback (127.0.0.1) e quello del proprio indirizzo IP hanno esito positivo ma non è possibile effettuare il ping di altri indirizzi IP, provare a cancellare la cache ARP (Address Resolution Protocol). Utilizzare arp -d indirizzo IP per eliminare le voci. Per cancellare la cache ARP, utilizzare il comando seguente:
netsh interface ip delete arpcache
Linux
arptables -t INPUT --flush
vampirodolce1
18-03-2008, 17:09
;21606948']In ogni caso personalmente non trovo l'avvio automatico una grande idea.Perche'? E' come avere un log di tutto quello che fanno gli utenti.
;21606948']Hai provato a rimuovere il modulo ed a rimetterlo? Non credo risulti bloccato da qualche altro, ma nel caso prova pure un rmmod -f, tanto se sei comunque costretto a riavviare...
Per quanto riguarda una procedura particolare per riconfigurare un'interfaccia di rete, direi che se hai questi problemi dovresti tentare di ricordarti di abbassare l'interfaccia prima di riconfigurarla.
In ogni caso che sistema operativo montano i pc le cui tavole ARP si rifiutano di riconoscere il tuo? Nemmeno una rinfrescata alle tabelle risolve?Knoppix o Windows 2000 o Debian. Provero' col suggerimento del modulo e di pulire la cache arp.
;21606948']arptables -t INPUT --flushChe differenza c'e' fra arptables ed ebtables? Sembrano entrambi pacchetti molto simili, ma la pagina man di ebtables e' piu' lunga :-)
Grazie comunque.
vampirodolce1
09-04-2008, 10:42
Ho fatto ulteriori test sul problema dell'arp, in pratica ogni volta che accendo il pc, se non c'e' il cavo di rete inserito non riesce a comunicare con la rete. Riavvio col cavo e tutto funziona.
E' strano, perche' tcpdump rileva traffico in entrambe le situazioni. Qualcuno ha notato lo stesso problema?
vampirodolce1
01-08-2008, 18:02
A chi interessa, il problema si risolve togliendo e reinserendo il modulo della scheda di rete dal kernel:
lsmod |grep mii
rmmod xxxxx
modprobe xxxx
e il ping riparte.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.