Problem mit pump/dhclient

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Problem mit pump/dhclient

Beitrag von mistersixt » 22.11.2003 14:48:17

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?

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 22.11.2003 14:57:54

Ich habe etwa die selbe Situation mit meinem Laptop.
Meine "lösung" für das ganze ist, das ich pump immer von Hand starte wenn es benötigt wird. ;)

gruss
manuel

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 22.11.2003 16:51:06

Ich mach es meist auch so wie Manuel, zusätzlich hab ich mir noch ein Script geschrieben, was ich vor dem kdm aufrufe und wo ich mittels dialog wählen lasse ob eins der eths gestartet werden soll.

cu

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 22.11.2003 18:14:46

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.

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 22.11.2003 18:32:12

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

trozmo
Beiträge: 288
Registriert: 05.01.2003 20:01:03
Kontaktdaten:

Beitrag von trozmo » 22.11.2003 19:09:10

ist zwar nicht die antwort, welche du dir wünschst:

warum braucht man in so einem kleinen netzwerk einen dhcp-server ?

würdest du die IPs manuell festlegen, würde das problem nicht auftauchen.

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 22.11.2003 19:37:39

trozmo hat geschrieben: warum braucht man in so einem kleinen netzwerk einen dhcp-server ?
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.

cu

trozmo
Beiträge: 288
Registriert: 05.01.2003 20:01:03
Kontaktdaten:

Beitrag von trozmo » 22.11.2003 19:42:56

tylerD hat geschrieben:
trozmo hat geschrieben: warum braucht man in so einem kleinen netzwerk einen dhcp-server ?
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.

cu
falls die besuchten netzwerke einen dhcp-server haben ... :lol:

jo, ist klar, in dem fall ist es bequem. wobei ... du könntest zu Hause und @ work ja auch die gleichen IPs verwenden.

:wink:

Benutzeravatar
suntsu
Beiträge: 2947
Registriert: 03.05.2002 10:45:12
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: schweiz
Kontaktdaten:

Beitrag von suntsu » 22.11.2003 20:01:19

tylerD hat geschrieben:
trozmo hat geschrieben: warum braucht man in so einem kleinen netzwerk einen dhcp-server ?
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.

cu
full ack

Ich benütze meinen Laptop auf der Arbeit, Schule, atHome, und sonstnoch.

Für mich ist dhcp das idealste.

gruss
manuel

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 22.11.2003 20:06:19

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:

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
Das Script muss halt permanent im Hintergrund laufen. Wie gesagt, Quick-Hack, aber das macht genau das, was ich brauche ;) !

Gruss, Jomo.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 24.11.2003 12:28:35

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):

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.

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 24.11.2003 16:10:25

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.
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.

cu

Antworten