Problem mit pump/dhclient
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Problem mit pump/dhclient
Moin moin,
ich habe ff. Problem: zu Hause habe ich einen DHCP-Server, der meinen beiden Laptops und meinem Desktop-PC automatisch IP-Adresse, DNS-Server und Gateway zuweist. Das funktioniert soweit alles bestens.
Wenn ich nun aber eines meiner Laptops ohne Netzwerkkabel starte (was bei Laptops recht oft vorkommt ), dann versucht der dhclient beim Booten vergeblich, einen DHCP-Server zu finden. Erst nach Ewigkeiten geht der Bootvorgang weiter. Unschön. Es gibt die Optionen "timeout" und "retry" in der dhclient.conf, was könnte man da sinnvollerweise für Werte nehmen, so dass er nach wenigen Sekunden weiterbootet, wenn der keinen DHCP-Server gefunden hat und in welchen Abständen er es erneut versuchen soll. Hat da Jemand vernünftige Erfahrungswerte?
Dann habe ich pump installiert. Der bricht beim Booten ohne Netzerkkabel nach wenigen Sekunden ab und läuft im Hintergrund weiter. Prima dachte ich, Problem gelöst. Wenn man jetzt aber wieder ein Netzwerkkabel an das Laptop steckt, wird ihm keine IP-Adresse zugewiesen, obwohl noch "pump -i eth0" läuft. Erst ein kill und ein Neustart vom pump und ich habe wieder eine IP-Adresse zugewiesen bekommen.
Was ist die idealste Lösung?
Danke im voraus, Gruss, Jörg.
PS: Oder gibt es ein Script, dass ausgeführt wird, sobald ein link auf eth0 erkannt wird? Synonym in etwa zu dem /etc/ppp/ip-up.d/ für PPP-Verbindungen?
ich habe ff. Problem: zu Hause habe ich einen DHCP-Server, der meinen beiden Laptops und meinem Desktop-PC automatisch IP-Adresse, DNS-Server und Gateway zuweist. Das funktioniert soweit alles bestens.
Wenn ich nun aber eines meiner Laptops ohne Netzwerkkabel starte (was bei Laptops recht oft vorkommt ), dann versucht der dhclient beim Booten vergeblich, einen DHCP-Server zu finden. Erst nach Ewigkeiten geht der Bootvorgang weiter. Unschön. Es gibt die Optionen "timeout" und "retry" in der dhclient.conf, was könnte man da sinnvollerweise für Werte nehmen, so dass er nach wenigen Sekunden weiterbootet, wenn der keinen DHCP-Server gefunden hat und in welchen Abständen er es erneut versuchen soll. Hat da Jemand vernünftige Erfahrungswerte?
Dann habe ich pump installiert. Der bricht beim Booten ohne Netzerkkabel nach wenigen Sekunden ab und läuft im Hintergrund weiter. Prima dachte ich, Problem gelöst. Wenn man jetzt aber wieder ein Netzwerkkabel an das Laptop steckt, wird ihm keine IP-Adresse zugewiesen, obwohl noch "pump -i eth0" läuft. Erst ein kill und ein Neustart vom pump und ich habe wieder eine IP-Adresse zugewiesen bekommen.
Was ist die idealste Lösung?
Danke im voraus, Gruss, Jörg.
PS: Oder gibt es ein Script, dass ausgeführt wird, sobald ein link auf eth0 erkannt wird? Synonym in etwa zu dem /etc/ppp/ip-up.d/ für PPP-Verbindungen?
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Mmmh, alles irgendwie noch nicht richtig befriedigend. Ich habe jetzt nochmal mit dem dhclient und versch. Parametern (timeout=10 und retry=30 zum Beispiel) herumgespielt, aber auch der dhclient läuft - wie auch der pump - im Hintergrund weiter, verpasst meinem Laptop aber keine neue IP-Adresse, wenn ich erst nach dem Bootvorgang das Netzwerkkabel einstecke, Ich muss immer dhclient/pump erst killen und wieder neu starten...
Aber vielleicht hat ja noch einer Anderer eine Idee.
Gruss, Jomo.
Aber vielleicht hat ja noch einer Anderer eine Idee.
Gruss, Jomo.
Eventuell kannst du dir ja mal Pakete wie divine, laptop-net, laptop-netconf, switchconf oder whereami anschauen. Aber soweit ich mich erinnern kann haben die das immer nur zur Bootzeit geregelt. Also entweder selber geschaut ob sie in irgendeinem Netz sind oder eine Gui bereitgestellt die dich wählen lässt.
Für das nachträgliche Einstepseln wird wohl die Sache mit dem per Hand starten das einfachste sein.
cu
Für das nachträgliche Einstepseln wird wohl die Sache mit dem per Hand starten das einfachste sein.
cu
falls die besuchten netzwerke einen dhcp-server haben ...tylerD hat geschrieben:Macht meiner Meinung nach gerade bei Laptops Sinn. Ich bin zum Beispiel immer zwischen Arbeit, zuHause und manchmal noch in anderen Netzen unterwegs und da ist dhcp nun mal das bequemste.trozmo hat geschrieben: warum braucht man in so einem kleinen netzwerk einen dhcp-server ?
cu
jo, ist klar, in dem fall ist es bequem. wobei ... du könntest zu Hause und @ work ja auch die gleichen IPs verwenden.
- suntsu
- Beiträge: 2947
- Registriert: 03.05.2002 10:45:12
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: schweiz
-
Kontaktdaten:
full acktylerD hat geschrieben:Macht meiner Meinung nach gerade bei Laptops Sinn. Ich bin zum Beispiel immer zwischen Arbeit, zuHause und manchmal noch in anderen Netzen unterwegs und da ist dhcp nun mal das bequemste.trozmo hat geschrieben: warum braucht man in so einem kleinen netzwerk einen dhcp-server ?
cu
Ich benütze meinen Laptop auf der Arbeit, Schule, atHome, und sonstnoch.
Für mich ist dhcp das idealste.
gruss
manuel
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Habe nun ein kleines Script geschrieben, dass mittels mii-tool erkennt, ob ein Netzwerkkabel am Rechner hängt oder nicht und dementsprechend den dhclient startet oder auch wieder beendet. Ist nur ein Quick-Hack, aber scheint schon zu funktionieren:
Das Script muss halt permanent im Hintergrund laufen. Wie gesagt, Quick-Hack, aber das macht genau das, was ich brauche !
Gruss, Jomo.
Code: Alles auswählen
#!/bin/sh
INTERFACE=eth0
INTERVAL=3
clear
#
# Checking and remembering link status at startup of this script, where
# 0 means "no network cable plugged in" and 1 "network cable plugged in".
#
case `/sbin/mii-tool $INTERFACE` in
*'link ok'*)
echo "Network cable plugged in, assuming dhclient was successful."
FLAG=1
;;
*)
/usr/bin/killall dhclient > /dev/null 2>&1
FLAG=0
;;
esac
while true
do
sleep $INTERVAL
case `/sbin/mii-tool $INTERFACE` in
*'link ok'*)
echo "Link on $INTERFACE is up"
if [ x$FLAG == x1 ]; then
echo "dhclient alread running -> doing nothing!"
else
echo "Link Status changed, firing dhclient :"
/sbin/dhclient $INTERFACE
FLAG=1
fi
;;
*'no link'*)
echo "Link on $INTERFACE is down"
if [ x$FLAG == x0 ]; then
echo "link still down -> doing nothing!"
else
echo "Link status changed, killing dhclient :"
/usr/bin/killall dhclient
FLAG=0
fi
;;
esac
done
Gruss, Jomo.
- mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Sodele, ich noch ein letztes Mal zu diesem Thema: mein Quick-Hack habe ich nun e
twas verfeinert und ein paar Checks eingebaut. Ich starte dieses Script aus eine
m Start-Stop-Script in /etc/init.d/ heraus und habe die Startfolge so konfiguriert, das
s es nach dem /etc/init.d/networking losläuft. Hier nun das Script, vielleicht interessiert es Jemanden (bei mir tut es wunderbar):
Gruss, Jomo.
twas verfeinert und ein paar Checks eingebaut. Ich starte dieses Script aus eine
m Start-Stop-Script in /etc/init.d/ heraus und habe die Startfolge so konfiguriert, das
s es nach dem /etc/init.d/networking losläuft. Hier nun das Script, vielleicht interessiert es Jemanden (bei mir tut es wunderbar):
Code: Alles auswählen
#!/bin/sh
INTERFACE=eth0
INTERVAL=5
clear
echo
# Check whether mii-tool is installed on this box:
echo -n "Check whether mii-tool is installed : "
if [ ! -x /sbin/mii-tool ]; then
echo " No --> exiting here!"
exit 0
else
echo " Yes."
fi
# Check whether dhcp is configured for $INTERFACE. If not
# then stop script here:
echo -n "Check whether $INTERFACE is configured for DHCP : "
RESULT=`cat /etc/network/interfaces | grep $INTERFACE | grep -v grep | grep dhcp`
if [ -z "$RESULT" ]; then
echo " No --> exiting here!"
exit 0
else
echo " Yes."
fi
# Check whether network card supports the link status:
echo -n "Check whether mii-tool is able to check link on $INTERFACE : "
/sbin/mii-tool $INTERFACE > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo " No --> exiting here!"
exit 0
else
echo " Yes."
fi
echo
#
# Checking and remembering link status at startup of this script, where
# 0 means "no network cable plugged in" and 1 "network cable plugged in".
#
case `/sbin/mii-tool $INTERFACE` in
*'link ok'*)
echo "Network cable plugged in, assuming dhclient was successful."
FLAG=1
;;
*)
echo -n "Network not plugged in, killing dhclient process ..."
/usr/bin/killall dhclient > /dev/null 2>&1
echo "done."
FLAG=0
;;
esac
echo
while true
do
sleep $INTERVAL
case `/sbin/mii-tool $INTERFACE` in
*'link ok'*)
echo "Link on $INTERFACE is up"
if [ x$FLAG == x1 ]; then
echo "Link still up, assuming dhclient alread running -> doing nothing!"
else
echo -n "Link Status changed, firing dhclient ..."
/sbin/dhclient $INTERFACE > /dev/null 2>&1
echo "done."
FLAG=1
fi
;;
*'no link'*)
echo "Link on $INTERFACE is down"
if [ x$FLAG == x0 ]; then
echo "link still down -> doing nothing!"
else
echo -n "Link status changed, killing dhclient ..."
/usr/bin/killall dhclient > /dev/null 2>&1
echo "done."
FLAG=0
fi
;;
esac
done
Gruss, Jomo.
Eventuell etwas für unser Wiki. Könnte mir gut vorstellen dort eine gesammelte Skripts-Sektion einzurichten, wo solche Skripts und Firewallskripts und soetwas rumliegen.mistersixt hat geschrieben:Sodele, ich noch ein letztes Mal zu diesem Thema: mein Quick-Hack habe ich nun e
twas verfeinert und ein paar Checks eingebaut.
cu