View Full Version : Link is Down e DHCP Client
NemesisQ3A
24-10-2005, 14:26
Dunque, ultimamente mi è capitato di utilizzare il pc senza averlo connesso alla porta ethernet.. Ho notato che nonostate in fase di avvio si accorga che il cavo non è connesso riportando un "eth1: Link is Down" avvia un loop di circa una trentina di secondi in cerca di un server DHCP. Ho cercato un pò in giro, ma non sono stato in grado di capire come evitare che il sistema si metta a cercare un server DHCP se il cavo è sconnesso, operazione assolutamente inutile!!! Visto che la cosa succede anche per la scheda wireless, in avvio perdo più di un minuto e mezzo alla ricerca di server DHCP che non troverà mai!
Ovviamente ogni aiuto da parte vostra sarà prezioso... ciao! :D
Psycotic
24-10-2005, 16:34
quando carichi il dhcpclient fai un controllo prima.. devi cambiare lo script su init.d che esegue dhcpclient
O almeno io farei cosi..
NemesisQ3A
25-10-2005, 23:01
quando carichi il dhcpclient fai un controllo prima.. devi cambiare lo script su init.d che esegue dhcpclient
O almeno io farei cosi..
dunque... ho controllato, e non riesco a trovare riferimenti mprecisi dentro init.d su dhclient.
Ho trovato però uno script: dhclient-script che si trova direttamente dentro /etc/
Mi sembra che possa essere lui quello da modificare, ma la mia ignoranza sugli script me lo rende illeggibile... :muro:
Nessuno che mi può dare qualche delucidazione? :fagiano:
Allego lo script:
#!/bin/sh
# dhclient-script for Linux. Dan Halbert, March, 1997.
# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
# No guarantees about this. I'm a novice at the details of Linux
# networking.
# Support for resolvconf added by Thomas Hood, May 2004.
# Notes:
# 0. This script is based on the netbsd script supplied with dhcp-970306.
# 1. ifconfig down apparently deletes all relevant routes and flushes
# the arp cache, so this doesn't need to be done explicitly.
# 2. The alias address handling here has not been tested AT ALL.
# I'm just going by the doc of modern Linux ip aliasing, which uses
# notations like eth0:0, eth0:1, for each alias.
# 3. I have to calculate the network address, and calculate the broadcast
# address if it is not supplied. This might be much more easily done
# by the dhclient C code, and passed on.
# 4. TIMEOUT not tested. ping has a flag I don't know, and I'm suspicious
# of the $1 in its args.
# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
exit_status=$1
if [ -f /etc/dhclient-exit-hooks ]; then
. /etc/dhclient-exit-hooks
fi
# probably should do something with exit status of the local script
exit $exit_status
}
if [ -x /sbin/resolvconf ]; then
make_resolv_conf() {
R=""
[ x$new_domain_name != x ] && R="${R}search $new_domain_name
"
for NMSRVR in $new_domain_name_servers; do
R="${R}nameserver $NMSRVR
"
done
echo -n "$R" | /sbin/resolvconf -a "$interface" || return 1
}
unmake_resolv_conf() {
/sbin/resolvconf -d "$interface" || return 1
}
else
make_resolv_conf() {
echo search $new_domain_name >/etc/resolv.conf
for nameserver in $new_domain_name_servers; do
echo nameserver $nameserver >>/etc/resolv.conf
done
return 0
}
unmake_resolv_conf() {
return 0
}
fi
# Invoke the local dhcp client enter hooks, if they exist.
if [ -f /etc/dhclient-enter-hooks ]; then
exit_status=0
. /etc/dhclient-enter-hooks
# allow the local script to abort processing of this state
# local script must set exit_status variable to nonzero.
if [ $exit_status -ne 0 ]; then
exit $exit_status
fi
fi
release=`uname -r`
relminor=`expr $release : '[0-9]*\.[0-9]*\.\([0-9]*\).*'`
relmajor=`expr $release : '[0-9]*\.\([0-9]*\)\..*'`
release=`expr $release : '\([0-9]*\)\..*'`
if [ x$new_broadcast_address != x ]; then
new_broadcast_arg="broadcast $new_broadcast_address"
fi
if [ x$old_broadcast_address != x ]; then
old_broadcast_arg="broadcast $old_broadcast_address"
fi
if [ x$new_subnet_mask != x ]; then
new_subnet_arg="netmask $new_subnet_mask"
fi
if [ x$old_subnet_mask != x ]; then
old_subnet_arg="netmask $old_subnet_mask"
fi
if [ x$alias_subnet_mask != x ]; then
alias_subnet_arg="netmask $alias_subnet_mask"
fi
if [ x$reason = xMEDIUM ]; then
# Linux doesn't do mediums (ok, ok, media).
exit_with_hooks 0
fi
if [ x$reason = xPREINIT ]; then
if [ x$alias_ip_address != x ]; then
# Bring down alias interface. Its routes will disappear too.
ifconfig $interface:0- inet 0
fi
if [ $relmajor -lt 2 ] || ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] )
then
ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
broadcast 255.255.255.255 up
# Add route to make broadcast work. Do not omit netmask.
route add default dev $interface netmask 0.0.0.0
else
ifconfig $interface up
fi
# We need to give the kernel some time to get the interface up.
sleep 1
exit_with_hooks 0
fi
if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
exit_with_hooks 0
fi
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
[ x$alias_ip_address != x$old_ip_address ]; then
# Possible new alias. Remove old alias.
ifconfig $interface:0- inet 0
fi
if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
# IP address changed. Bringing down the interface will delete all routes,
# and clear the ARP cache.
ifconfig $interface inet down
fi
if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
[ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg
if [ x$new_interface_mtu != x ]; then
ifconfig $interface mtu $new_interface_mtu
fi
# Add a network route to the computed network address.
if [ $relmajor -lt 2 ] || \
( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
route add -net $new_network_number $new_subnet_arg dev $interface
fi
for router in $new_routers; do
route add default gw $router
done
fi
if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
then
ifconfig $interface:0- inet 0
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address $interface:0
fi
make_resolv_conf || exit_with_hooks 1
exit_with_hooks 0
fi
if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ]; then
unmake_resolv_conf
if [ x$alias_ip_address != x ]; then
# Turn off alias interface.
ifconfig $interface:0- inet 0
fi
if [ x$old_ip_address != x ]; then
# Shut down interface, which will delete routes and clear arp cache.
ifconfig $interface inet down
fi
if [ x$alias_ip_address != x ]; then
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address $interface:0
fi
exit_with_hooks 0
fi
if [ x$reason = xRELEASE ] || [ x$reason = xSTOP ]; then
unmake_resolv_conf
fi
if [ x$reason = xTIMEOUT ]; then
if [ x$alias_ip_address != x ]; then
ifconfig $interface:0- inet 0
fi
ifconfig $interface inet $new_ip_address $new_subnet_arg \
$new_broadcast_arg
set $new_routers
############## what is -w in ping?
if ping -q -c 1 $1; then
if [ x$new_ip_address != x$alias_ip_address ] && \
[ x$alias_ip_address != x ]; then
ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
route add -host $alias_ip_address dev $interface:0
fi
if [ $relmajor -lt 2 ] || \
( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
route add -net $new_network_number
fi
for router in $new_routers; do
route add default gw $router
done
make_resolv_conf || exit_with_hooks 1
exit_with_hooks 0
fi
unmake_resolv_conf
ifconfig $interface inet down
exit_with_hooks 1
fi
exit_with_hooks 0
NemesisQ3A
26-10-2005, 17:57
UP ;) :mc:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.