Pagina 1 di 2
[RISOLTO] Script networking
Inviato: dom 10 ott 2010, 10:49
da hashbang
Salve a tutti,
vorrei chiedervi un consiglio riguardo lo script di inizializzazione rc.inet1. in breve a volte quando effettuo il boot lo script parte ma va in timed out. Questo comporta che quando mi loggo e vado su internet mi esce l'errore relativo alla mancanza di connessione. Il problema si risolve dopo una ventina di secondi. Nonostante questo problema compaia su KDE non ho mai avuto problemi in quanto la durata del caricamento del desktop mi permetteva di accedere tranquillamente su internet. Ma visto che uso FluxBox (però succedeva anche con XFCE) i tempi di caricamento sono irrisori e pertanto mi trovo in questa situazione. Ho notato però che su ArchLinux questo non succede nonostante sia persino più veloce (e a volte quando parte lo script del networking la connessione ADSL non è pronta, ma rimane su BUSY e quando la ADSL ha finito di caricare lo completa). Pertanto su Arch io ho la connessione totalmente funzionante già alla primo login in modo immediato.
Avete qualche idea per risolvere questo "scomodo" inconveniente?
Re: Script networking
Inviato: dom 10 ott 2010, 12:55
da sardylan
A che cosa è dovuto questo ritardo??? Usi un router con la connessione nattata, e quindi è causato dal DHCP, oppure usi un modem ed avvii una connessione PPPoE nel computer?
Re: Script networking
Inviato: dom 10 ott 2010, 14:15
da hashbang
sardylan ha scritto:A che cosa è dovuto questo ritardo??? Usi un router con la connessione nattata, e quindi è causato dal DHCP, oppure usi un modem ed avvii una connessione PPPoE nel computer?
Un router con DHCP.
Re: Script networking
Inviato: dom 10 ott 2010, 19:17
da sardylan
Allora potrebbe essere proprio un problema del demone dhcpcd... Prova da shell a fare a mano dei test usando dhcpcd e dhclient... Vedi quale dei due è più veloce...
La Slackware utilizza dhcpcd. Forse ArchLinux usa dhclient...
Re: Script networking
Inviato: dom 10 ott 2010, 19:51
da targzeta
Potresti pensare di usare un indirizzo IP statico con il router, così non usi DHCP e fai in un attimo...se il problema è quello.
Devi capire se il problema è da te al router o dal router alla rete, mi sembra strano che un qualsiasi client DHCP ci metta così tanto per avere le informazioni di rete.
Emanuele
Re: Script networking
Inviato: lun 11 ott 2010, 1:36
da sardylan
Vabbe... Dipende anche dal router spina... Per esempio in facoltà con la rete universitaria il DHCP ci mette anche 30 secondi per ottenere un IP... A volte è davvero lento...
Ma li ci sono discorsi di server vari, giri assurdi di traffico e quant'altro...
Per un router domestico non c'è niente da fare di particolare, e dovrebbe darlo in fretta..
Re: Script networking
Inviato: lun 11 ott 2010, 5:42
da targzeta
Certo certo, hai ragione. Davo per scontato che si trattasse di una rete domestica, visto che ha detto: '...la connessione ADSL non è pronta, ma rimane su BUSY e quando la ADSL ha finito di caricare lo completa'.
Ma effettivamente potrei sbagliarmi,
Emanuele
Re: Script networking
Inviato: lun 11 ott 2010, 8:37
da hashbang
sardylan ha scritto:Allora potrebbe essere proprio un problema del demone dhcpcd... Prova da shell a fare a mano dei test usando dhcpcd e dhclient... Vedi quale dei due è più veloce...
La Slackware utilizza dhcpcd. Forse ArchLinux usa dhclient...
Sembra che anche ArchLinux usi dhcpcd. Lo script del networking di Arch comunque è questo (/etc/rc.d/network)
Codice: Seleziona tutto
#!/bin/bash
. /etc/rc.conf
. /etc/rc.d/functions
# wireless settings
[ -f /etc/conf.d/wireless ] && . /etc/conf.d/wireless
# ethernet bonding settings
[ -f /etc/conf.d/bonding ] && . /etc/conf.d/bonding
# bridge settings
[ -f /etc/conf.d/bridges ] && . /etc/conf.d/bridges
# dhcpcd settings
[ -f /etc/conf.d/dhcpcd ] && . /etc/conf.d/dhcpcd
ifup()
{
if [ "$1" = "" ]; then
echo "usage: $0 ifup <interface_name>"
return 1
fi
eval ifcfg="\$${1}"
# Get the name of the interface from the first token in the string
if [ "$ifcfg" = "dhcp" ]; then
ifname="$1"
else
ifname=${ifcfg%% *}
fi
/sbin/ifconfig $ifname up
wi_up $1 || return 1
if [ "$ifcfg" = "dhcp" ]; then
# remove the .pid file if it exists
/bin/rm -f /var/run/dhcpcd-${1}.pid >/dev/null 2>&1
/bin/rm -f /var/run/dhcpcd-${1}.cache >/dev/null 2>&1
/sbin/dhcpcd $DHCPCD_ARGS ${1}
else
/sbin/ifconfig $ifcfg
fi
return $?
}
wi_up()
{
eval iwcfg="\$wlan_${1}"
[ "$iwcfg" = "" ] && return 0
/usr/sbin/iwconfig $iwcfg
[[ -z "$WIRELESS_TIMEOUT" ]] && WIRELESS_TIMEOUT=2
sleep $WIRELESS_TIMEOUT
bssid=`iwgetid $1 -ra`
if [[ "$bssid" = "00:00:00:00:00:00" ]]; then
printhl "Could not associate $1 - try increasing WIRELESS_TIMEOUT and check network is WEP or has no security"
return 1
fi
return 0
}
ifdown()
{
if [ "$1" = "" ]; then
echo "usage: $0 ifdown <interface_name>"
return 1
fi
eval ifcfg="\$${1}"
if [ "$ifcfg" = "dhcp" ]; then
if [ -f /var/run/dhcpcd-${1}.pid ]; then
/bin/kill $(cat /var/run/dhcpcd-${1}.pid)
fi
fi
# Always bring the interface itself down
/sbin/ifconfig ${1} down >/dev/null 2>&1
return $?
}
iflist()
{
for ifline in ${INTERFACES[@]}; do
if [ "$ifline" = "${ifline#!}" ]; then
printf " $ifline:\t"
else
printf "$ifline:\t"
fi
eval real_ifline=\$${ifline#!}
echo $real_ifline
done
}
rtup()
{
if [ "$1" = "" ]; then
echo "usage: $0 rtup <route_name>"
return 1
fi
eval routecfg="\$${1}"
if grep -q :: <<< $routecfg; then
/sbin/route -A inet6 add $routecfg
else
/sbin/route add $routecfg
fi
return $?
}
rtdown()
{
if [ "$1" = "" ]; then
echo "usage: $0 rtdown <route_name>"
return 1
fi
eval routecfg="\$${1}"
if grep -q :: <<< $routecfg; then
/sbin/route -A inet6 del $routecfg
else
/sbin/route del $routecfg
fi
return $?
}
rtlist()
{
for rtline in ${ROUTES[@]}; do
if [ "$rtline" = "${rtline#!}" ]; then
printf " $rtline:\t"
else
printf "$rtline:\t"
fi
eval real_rtline=\$${rtline#!}
echo $real_rtline
done
}
bond_up()
{
for ifline in ${BOND_INTERFACES[@]}; do
if [ "$ifline" = "${ifline#!}" ]; then
eval bondcfg="\$bond_${ifline}"
if [ -n "${bondcfg}" ]; then
/sbin/ifenslave $ifline $bondcfg || error=1
fi
fi
done
}
bond_down()
{
for ifline in ${BOND_INTERFACES[@]}; do
if [ "$ifline" = "${ifline#!}" ]; then
eval bondcfg="\$bond_${ifline}"
/sbin/ifenslave -d $ifline $bondcfg || error=1
fi
done
}
bridge_up()
{
for br in ${BRIDGE_INTERFACES[@]}; do
if [ "$br" = "${br#!}" ]; then
# if the bridge already exists, remove it
if [ "$(/sbin/ifconfig $br 2>/dev/null)" ]; then
/sbin/ifconfig $br down
/usr/sbin/brctl delbr $br
fi
/usr/sbin/brctl addbr $br
eval brifs="\$bridge_${br}"
for brif in $brifs; do
if [ "$brif" = "${brif#!}" ]; then
for ifline in ${BOND_INTERFACES[@]}; do
if [ "$brif" = "$ifline" ] && [ "$ifline" = "${ifline#!}" ]; then
ifup $ifline
eval bondcfg="\$bond_${ifline}"
/sbin/ifenslave $ifline $bondcfg || error=1
unset bond_${ifline}
fi
done
/usr/sbin/brctl addif $br $brif || error=1
fi
done
fi
done
}
bridge_down()
{
for br in ${BRIDGE_INTERFACES[@]}; do
if [ "$br" = "${br#!}" ]; then
/usr/sbin/brctl delbr $br
fi
done
}
case "$1" in
start)
if ! ck_daemon network; then
echo "Network is already running. Try 'network restart'"
exit
fi
stat_busy "Starting Network"
error=0
# bring up bridge interfaces
bridge_up
# bring up ethernet interfaces
for ifline in ${INTERFACES[@]}; do
if [ "$ifline" = "${ifline#!}" ]; then
ifup $ifline || error=1
fi
done
# bring up bond interfaces
bond_up
# bring up routes
for rtline in "${ROUTES[@]}"; do
if [ "$rtline" = "${rtline#!}" ]; then
rtup $rtline || error=1
fi
done
if [ $error -eq 0 ]; then
add_daemon network
stat_done
else
stat_fail
fi
;;
stop)
#if ck_daemon network; then
# echo "Network is not running. Try 'network start'"
# exit
#fi
if [ "${NETWORK_PERSIST}" = "yes" -o "${NETWORK_PERSIST}" = "YES" ]; then
status "Skipping Network Shutdown" true
exit 0
fi
stat_busy "Stopping Network"
rm_daemon network
error=0
for rtline in "${ROUTES[@]}"; do
if [ "$rtline" = "${rtline#!}" ]; then
rtdown $rtline || error=1
fi
done
# bring down bond interfaces
bond_down
for ifline in ${INTERFACES[@]}; do
if [ "$ifline" = "${ifline#!}" ]; then
ifdown $ifline || error=1
fi
done
# bring down bridge interfaces
bridge_down
if [ $error -eq 0 ]; then
stat_done
else
stat_fail
fi
;;
restart)
$0 stop
/bin/sleep 2
$0 start
;;
ifup|ifdown|iflist|rtup|rtdown|rtlist)
$1 $2
;;
*)
echo "usage: $0 {start|stop|restart}"
echo " $0 {ifup|ifdown|iflist|rtup|rtdown|rtlist}"
esac
# vim: set ts=2 noet:
Re: Script networking
Inviato: lun 11 ott 2010, 13:05
da hashbang
sardylan ha scritto:A volte è davvero lento...
come nel mio caso. A volte va bene e configura il tutto a primo colpo (solitamente in fase di riavvio). Comunque ho notato che questo difetto lo fa di rado col kernel huge e sempre col kernel custom da me compilato. Sicuramente succede in quanto il custom è molto più leggero e quindi più velocemente caricato al boot. Essendo più veloce arriva subito al demone dhcpcd quando l'ADSL non è ancora pronta e, a differenza di Arch, non rimane in attesa. Si potrebbe modificare lo script rc.inet1 per allungare il tempo di attesa prima del timeout?
Re: Script networking
Inviato: lun 11 ott 2010, 13:13
da Ansa89
atomix600 ha scritto:Sicuramente succede in quanto il custom è molto più leggero e quindi più velocemente caricato al boot.
Lo trovo improbabile

.
atomix600 ha scritto:Si potrebbe modificare lo script rc.inet1 per allungare il tempo di attesa prima del timeout?
Devi usare il file di configurazione "/etc/rc.d/rc.inet1.conf":
Il valore è in secondi e devi cambiare "0" con l'indice del tuo device.
Re: Script networking
Inviato: mar 12 ott 2010, 13:14
da hashbang
Ansa89 ha scritto:Devi usare il file di configurazione "/etc/rc.d/rc.inet1.conf":
Il valore è in secondi e devi cambiare "0" con l'indice del tuo device.
Ansa sicuro che sia nel file rc.inet1.conf? io DHCP_TIMEOUT l'ho trovato nello script rc.inet1 ma non nel file di configurazione

Re: Script networking
Inviato: mar 12 ott 2010, 13:45
da notsafe
atomix600 ha scritto:Ansa89 ha scritto:Devi usare il file di configurazione "/etc/rc.d/rc.inet1.conf":
Il valore è in secondi e devi cambiare "0" con l'indice del tuo device.
Ansa sicuro che sia nel file rc.inet1.conf? io DHCP_TIMEOUT l'ho trovato nello script rc.inet1 ma non nel file di configurazione

http://connie.slackware.com/~alien/rc_s ... inet1.conf
Codice: Seleziona tutto
#DHCP_TIMEOUT[4]=15 # The default timeout for the DHCP client to
# wait for server resonse is 30 seconds, but
# you might want a shorter wait.
Re: Script networking
Inviato: mar 12 ott 2010, 14:20
da Ansa89
atomix600 ha scritto:Ansa sicuro che sia nel file rc.inet1.conf? io DHCP_TIMEOUT l'ho trovato nello script rc.inet1 ma non nel file di configurazione

A parte il link di notsafe, prova un "grep -n DHCP_TIMEOUT /etc/rc.d/rc.inet1.conf".
Re: Script networking
Inviato: mar 12 ott 2010, 16:07
da hashbang
sorry, trovato....dalle mie parti si dice in questi casi: se vai a mare non trovi neanche l'acqua salata....
comunque al DHCP_TIMEOUT ho impostato 60 secondi e sembra non dare problemi
Re: Script networking
Inviato: mar 12 ott 2010, 16:12
da Ansa89
Secondo me possono essere abbastanza anche 40-50 secondi.
Comunque con 60 dovrebbe funzionare in tutti i casi (se in un minuto il computer non è in grado di ricevere un indirizzo ip, probabilmente il problema è altrove).