View previous topic :: View next topic |
Author |
Message |
flubber Tux's lil' helper
Joined: 28 Dec 2004 Posts: 136
|
Posted: Tue Jan 25, 2005 9:06 am Post subject: |
|
|
@NightDragon
Kann das Verlieren der IP-Adresse vielleicht daran liegen, daß Du 2 Netze hast? Der scannt doch permanent die AP's und wenn jetzt die Lease ziemlich kurz eingestellt ist, könnte das doch der Grund sein. Soweit ich mich erinnere, macht ein Client, nach 50% Leasedauer eine erneute DHCP-Abfrage, wenn sich dann der andere AP meldet, könnte es krachen. Ist aber nur ein Gedanke, schmeiß doch einfach mal ein Netz raus.
Flubber |
|
Back to top |
|
|
Anarcho Advocate
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Tue Jan 25, 2005 9:36 am Post subject: |
|
|
@flubber
vielleicht liegt das mit der IP-Adresse bei dir an der Startreihenfolge.
Wenn net.ath0 vor wpa_supplicant gestartet wird, geht es nicht.
Daher würde ich in dem Falle net.ath0 nicht als symlink sondern als copy von net.etho machen und dann dort vorne noch
need wpa_supplicant
reinschreiben. Dann sollten sie in der richitgen Reihenfolge starten und es sollte gehen. (wenn es daran lag) _________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
|
flubber Tux's lil' helper
Joined: 28 Dec 2004 Posts: 136
|
Posted: Tue Jan 25, 2005 10:25 am Post subject: |
|
|
net.ath0 gibt es bei mir nicht, das hat mich auch schon stutzig gemacht.
Also, was und wie sollte ich da tun?
Flubber |
|
Back to top |
|
|
Anarcho Advocate
Joined: 06 Jun 2004 Posts: 2970 Location: Germany
|
Posted: Tue Jan 25, 2005 10:30 am Post subject: |
|
|
Da haben wir doch das problem!
DU hast kein init-script, wie soll er dann dhcp machen?
Mach am besten ne Kopie:
also
Code: |
cd /etc/init.d
cp net.eth0 net.ath0
$EDITOR net.ath0
|
Dort dann unter depend
Code: |
need wpa_supplicant
|
oder wie das init-script heisst hinzufügen.
und zum schluss noch
rc-update add net.ath0 default _________________ ...it's only Rock'n'Roll, but I like it! |
|
Back to top |
|
|
flubber Tux's lil' helper
Joined: 28 Dec 2004 Posts: 136
|
Posted: Tue Jan 25, 2005 11:26 am Post subject: |
|
|
Alles klar, probier ich heute abend.
Flubber |
|
Back to top |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Tue Jan 25, 2005 1:34 pm Post subject: |
|
|
@flubber
Naja. Das Problem ist ja a) das es noch gar nicht zum DHCP Request kommt und b) wäre die Reihenfolge ja in der wpa_supplicant geregelt und c) ist ja derzeit das WPA-Netz außer funktion.
Es scheint eher irgendwas mit der Einstellung in der wpa_supplicant.conf nicht zu stimmen... ich verstehs selbst nicht. _________________ You are the problem too all my solutions |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Tue Jan 25, 2005 5:12 pm Post subject: |
|
|
Edit: Nein, wpa_supplicant wird vor net.* ausgeführt, deshalb solltest du auch /etc/init.d/net.ath0 wieder löschen und stattdessen einen Symlink erstellen: 'ln -s /etc/init.d/net.lo /etc/init.d/net.ath0'.
Außerdem solltest du deine Änderungen, die du unter 7. im letzten Posting auf der ersten Seite beschrieben hast, rückgängig machen und stattdessen 'rc-update add net.ath0 default' ausführen (falls noch nicht geschehen).
Gruß, Sas _________________ 42 |
|
Back to top |
|
|
flubber Tux's lil' helper
Joined: 28 Dec 2004 Posts: 136
|
Posted: Tue Jan 25, 2005 10:30 pm Post subject: |
|
|
Also, wenn ich die Geschichte mit net.ath0 mache, wie in den oben genannten Postings beschrieben, geht es nicht. Beim Systemstart kommt dann:
Bring ath0 down
Stopping wpa_supplicant
Stop ath0.
Den Eintrag unter depend habe ich gemacht.
Habe alles so wieder gemacht, wie in meiner Aufstellung auf Seite1. Und es geht.
Ich habe die Aufstellung etwas geändert, da ich einen Eintrag vergessen hatte.
Flubber |
|
Back to top |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Wed Jan 26, 2005 12:36 pm Post subject: |
|
|
Also okay.
Ich hab den Fehler in der Konfig gefunden.
Witzigerweise haut das ganze nicht hin, wenn er priority gesetzt hat (wahrscheinlich weils ohne hin durch die Reihenfolge der einträge in der conf gelöst wird)
Und nun hab ich folgendes.
habe net.ath0 von wpa_cupplicant abhängig gemacht. und wenn ich dann starte, bekomm ich vom Dienst net.ath0 folgende meldung:
Code: | * Keeping kernel configuration for ath0
|
D. h. er führt kein dhcpd aus.
Klar. hier könnte man wieder sagen: eigenen dienst schreiben. Aber das kanns ja nun nicht sein. Wozu gibts denn sonst das wpa_supplicant init-Script...
Dann muss ich zusätzlich dhcpcd ath0 ausführen.
Aber das muss ja auch noch sauber ohne local.start zu lösen sein. oder? _________________ You are the problem too all my solutions |
|
Back to top |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Wed Jan 26, 2005 11:59 pm Post subject: |
|
|
Okay, habs gelöst.
jetzt läuft alles.
wpa_supplicant mit modifiziertem net.ath0 und der wpa_supplicant.conf für 2 netze. _________________ You are the problem too all my solutions |
|
Back to top |
|
|
xmit Apprentice
Joined: 02 Apr 2003 Posts: 158 Location: Hamburg, Germany
|
Posted: Sat Jan 29, 2005 2:06 pm Post subject: |
|
|
Ich möchte mal anregen, das Ganze im Sinne der baselayout Erfinder zu gestalten. Dazu genügt es /etc/wpa_supplicant.conf und /etc/conf.d/net zu kennen. Man muss dann nicht jedem Update hinterherbasteln. |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sat Jan 29, 2005 2:10 pm Post subject: |
|
|
Naja, leider nicht ganz. Ich dachte das auch zuerst, allerdings funkt die Standard-Wireless-Erkennung vom baselayout dem wpa_supplicant dazwischen.
Erst wird dieser gestartet, so weit so gut, alles stimmt. Wenn aber nun net.ath0 ausgeführt wird, wird erkannt, dass ath0 ja wireless extensions hat und nach einem verfügbaren AP gescannt. Wenn keiner gefunden wird, sind halt alle Einstellungen dahin. Eigentlich kann man die APs ja in /etc/con.d/wireless konfigurieren, allerdings ist an dieser Stelle kein WPA vorgesehen. Deshalb klappts nicht ganz sauber. _________________ 42 |
|
Back to top |
|
|
xmit Apprentice
Joined: 02 Apr 2003 Posts: 158 Location: Hamburg, Germany
|
Posted: Sun Jan 30, 2005 12:36 pm Post subject: |
|
|
Zugegeben bis baselayout 1.11.8 funktioniert das noch nicht perfekt, aber spätestens mit 1.11.9 wird es gehen.
So kommt man mit folgenden Handgriffen aus:
1. emerge madwifi-driver madwifi-tools
2. ln -s /etc/init.d/net.lo /etc/init.d/net.ath0 && rc-update add net.ath0 default
3. Module wlan, ath_hal, ath_pci in /etc/modules.autoload.d/kernel-2.6 eintragen
4. /etc/wpa_supplicant.conf anpassen, z.B.:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="ESSID"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk="PASSPHRASE"
priority=2
}
5. /etc/conf.d/net anpassen, z.B.:
config_ath0=( "192.168.0.100 netmask 255.255.255.0" )
routes_ath0=( "default via 192.168.0.1" )
modules=( "wpa_supplicant" )
wpa_supplicant_ath0="-Dmadwifi"
wpa_timeout_ath0=60
6. Fertig ist die Laube. |
|
Back to top |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Sun Jan 30, 2005 1:24 pm Post subject: |
|
|
Tja wenn's uns gesagt hätte, hätten wirs auch so gemacht / ausprobiert.
Daher mal danke für die Infos.
Woher hast Du die Infos für die richtige Konfig in /etc/conf.d/net ?
Und kann ich nun einfach
Code: | config_ath0=( "192.168.0.100 netmask 255.255.255.0" )
routes_ath0=( "default via 192.168.0.1" ) | durch
Code: | iface_ath0="dhcp"
dhcpcd_ath0="-N" | ersetzen?
Oder hauts dann mit dhcp nicht hin? _________________ You are the problem too all my solutions |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sun Jan 30, 2005 1:33 pm Post subject: |
|
|
Will er auch nicht, da bleibt er mit nem Timeout hängen, wenn er den wpa_supplicant starten will.
Ich habs auch schon mal damit versucht, einfach module_ath0=( "!iwconfig" ) in die conf.d/net einzutragen, aber auch da will er WPA starten - auch wenns vorher schon läuft. Ganz so elegant ist das sowieso nicht. Eigentlich gehörten die WPA-Einstellungen in die conf.d/wireless, weil sie ja auch AP-spezifisch sind. _________________ 42 |
|
Back to top |
|
|
xmit Apprentice
Joined: 02 Apr 2003 Posts: 158 Location: Hamburg, Germany
|
Posted: Sun Jan 30, 2005 2:37 pm Post subject: |
|
|
wpa_supplicant bitte nicht in einen Runlevel aufnehmen, baselayout startet es automatisch.
modules=("!iwconfig") wird bei supplicants zwar in der Regel gebraucht, bei wpa_supplicant im besonderen aber nicht. /etc/conf.d/wireless wird ebenfalls nicht benötigt, diese Konfiguration steht dann in /etc/wpa_supplicant.conf.
Das Timeout hatte ich mit 1.11.8 leider auch. Das Skript Skript /lib/rcscripts/net.modules.d/wpa_supplicant löst hier das Problem, welches so oder ähnlich in 1.11.9 erscheinen wird:
Quote: |
# wpa_supplicant (net-wireless/wpa_supplicant) module for net-scripts
# Version 1.0.0
# Copyright (c) 2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License V2
# Contributed by Roy Marples (uberlord@gentoo.org)
# Fix any potential localisation problems
# Note that LC_ALL trumps LC_anything_else according to locale(7)
wpa_supplicant() {
LC_ALL=C /usr/sbin/wpa_supplicant "$@"
}
wpa_cli() {
LC_ALL=C /usr/bin/wpa_cli "$@"
}
# char* wpa_supplicant_provides(void)
#
# Returns a string to change module definition for starting up
wpa_supplicant_provides() {
echo "wireless"
}
# void wpa_supplicant_depend(void)
#
# Sets up the dependancies for the module
wpa_supplicant_depend() {
after macchanger
before interface
}
# bool wpa_supplicant_check_installed(void)
#
# Returns 1 if wpa_supplicant is installed, otherwise 0
wpa_supplicant_check_installed() {
[[ -x /usr/sbin/wpa_supplicant ]] && return 0
${1:-false} && eerror "For WPA support (wpa_supplicant) support, emerge net-wireless/wpa-supplicant"
return 1
}
# bool wpa_supplicant_check_depends(void)
#
# Checks to see if we have the needed functions
wpa_supplicant_check_depends() {
local f
for f in interface_exists interface_variable; do
[[ $( type -t ${f} ) == function ]] && continue
eerror "wpa_supplicant: missing required function ${f}\n"
return 1
done
return 0
}
# bool wpa_supplicant_check_extensions(char *interface)
#
# Checks to see if wireless extensions are enabled on the interface
wpa_supplicant_check_extensions() {
grep -q "${1}: " /proc/net/wireless
}
# char* wpa_supplicant_get_essid(char *interface)
#
# Gets the current ESSID of iface
wpa_supplicant_get_essid() {
wpa_cli -i${1} status 2>/dev/null | awk -F= '/^ssid=/ { print $2 }'
}
# char* wpa_supplicant_get_ap_mac_address(char *interface)
#
# Returns the MAC address of the Access Point
# the interface is connected to
wpa_supplicant_get_ap_mac_address() {
wpa_cli -i${1} status 2>/dev/null | awk -F= '/^bssid=/ { print toupper($2) }'
}
# bool wpa_supplicant_associated(char *interface)
#
# Returns 0 if we're associated correctly or 1 if not
# Note that just because we are associated does not mean we are using the
# correct encryption keys
wpa_supplicant_associated() {
local -a status=( "$( wpa_cli -i${1} status | awk -F= '/^key_mgmt|^wpa_state|^EAP state/ { print "\""$2"\"" }' )" )
case ${status[0]} in
"NONE" ) [[ ${status[1]} == "ASSOCIATED" ]] ;;
"IEEE 802.1X (no WPA)") [[ ${status[2]} == "SUCCESS" ]] ;;
*) [[ ${status[1]} == "COMPLETED" ]] ;;
esac
return $?
}
# void wpa_supplicant_kill(char *interface, bool report)
#
# Kills any existing wpa_supplicant process on the interface
wpa_supplicant_kill() {
local iface=$1 report=${2:-false}
local pid=$( ps --no-headers -fC wpa_supplicant 2>/dev/null | awk '/-i'${iface}'/ { print $2 }' )
if [[ -n ${pid} ]]; then
${report} && ebegin "Stopping wpa_supplicant on ${iface}"
kill -s TERM ${pid}
${report} && eend 0
fi
# If wpa_supplicant exits uncleanly, we need to remove the stale dir
[[ -S /var/run/wpa_supplicant/${iface} ]] && rm -f /var/run/wpa_supplicant/${iface}
}
# bool wpa_supplicant_associate(char *interface)
#
# Returns 0 if wpa_supplicant associates and authenticates to an AP
# otherwise, 1
wpa_supplicant_associate() {
local iface=${1} ifvar=$( interface_variable ${1} ) timeout i
eval timeout=\"\$\{wpa_timeout_${ifvar}:-60\}\"
for (( i=0; i<${timeout}; i++ )); do
wpa_supplicant_associated ${iface} && break
sleep 1
done
if [[ ${i} == ${timeout} ]]; then
if ! wpa_supplicant_associated ${iface}; then
[[ ${background} != yes ]] && eend 1 "timed out"
# We now need to kill the process
wpa_supplicant_kill ${iface}
return 1
fi
fi
}
# bool wpa_supplicant_pre_start(char *interface)
#
# Start wpa_supplicant on an interface and wait for association
# Returns 0 (true) when successful, non-zero otherwise
wpa_supplicant_pre_start() {
local iface=$1 opts ifvar cfgfile=/etc/wpa_supplicant.conf timeout
# We only work on wirelesss interfaces
wpa_supplicant_check_extensions ${iface} || return 0
# Kill off any existing wpa_supplicant on this interface
# This is so we can re-read the configuration file and clean any stale
# directories
wpa_supplicant_kill ${iface} true
ebegin "Starting wpa_supplicant on ${iface}"
if [[ ! -f ${cfgfile} ]]; then
eend 1 "configuration file ${cfgfile} not found!"
return 1
fi
local ctrl_dir=$( awk -F# '/^ctrl_interface=/ { print $1 }' ${cfgfile} )
ctrl_dir=${ctrl_dir/ctrl_interface=/}
if [[ ${ctrl_dir} != "/var/run/wpa_supplicant" ]]; then
eerror "${cfgfile} must set"
eerror " ctrl_interface=/var/run/wpa_supplicant"
eend 1
return 1
fi
ifvar=$( interface_variable ${iface} )
eval opts=\" \$\{wpa_supplicant_${ifvar}\}\"
[[ ${opts} != *' -D'* ]] && ewarn "wpa_supplicant_${ifvar} does not define a driver"
# Some drivers require the interface to be up
interface_up ${iface}
if ! wpa_supplicant ${opts} -B -c/etc/wpa_supplicant.conf -i${iface} ; then
eend 1
return 1
fi
if ! wpa_cli -i${iface} status &>/dev/null ; then
eend 1 "wpa_supplicant has exited unexpectedly"
return 1
fi
eindent
veinfo "Waiting for association"
eend 0
wpa_supplicant_associate ${iface} || return 1
# Set ESSID for essidnet and report
ESSID=$( wpa_supplicant_get_essid ${iface} )
local -a status=( "$( wpa_cli -i${iface} status | awk -F= '/^bssid|^pairwise_cipher|^key_mgmt/ { print "\""$2"\"" }' )" )
local mac=$( echo ${status[0]} | tr '[:lower:]' '[:upper:]' )
einfo "${iface} connected to \"${ESSID//\\\\/\\\\}\" at ${mac}"
if [[ ${status[2]} == NONE ]]; then
if [[ ${status[1]} == NONE ]]; then
ewarn "not using any encryption"
else
veinfo "using ${status[1]}"
fi
else
veinfo "using ${status[2]}/${status[1]}"
fi
eoutdent
return 0
}
# bool wpa_supplicant_post_stop(char *iface)
#
# Stops wpa_supplicant on an interface
# Returns 0 (true) when successful, non-zero otherwise
wpa_supplicant_post_stop() {
wpa_supplicant_kill $1 true
return 0
}
|
Mir hat brix sehr geholfen bei dieser Konfiguration, er ist zuständig für das wpa_supplicant ebuild und man trifft ihn ab und zu im IRC in channel #gentoo-laptop.
Aber auch /etc/wpa_supplicant und /etc/conf.d/net sind sehr gut kommentiert. DHCP sollte (muss) problemlos möglich sein. In meinem vorherigen Post war die statische Konfiguration nur als Beispiel gemeint. |
|
Back to top |
|
|
NightDragon Veteran
Joined: 21 Aug 2004 Posts: 1156 Location: Vienna (Austria)
|
Posted: Sun Jan 30, 2005 2:45 pm Post subject: |
|
|
D. h. wie geglaubt einfach die statischen Einträge, deines Beispiels durch die bekannten von DHCP ersetzen? _________________ You are the problem too all my solutions |
|
Back to top |
|
|
Sas Veteran
Joined: 05 Jul 2003 Posts: 1229 Location: Germany
|
Posted: Sun Jan 30, 2005 3:00 pm Post subject: |
|
|
xmit wrote: | wpa_supplicant bitte nicht in einen Runlevel aufnehmen, baselayout startet es automatisch.
modules=("!iwconfig") wird bei supplicants zwar in der Regel gebraucht, bei wpa_supplicant im besonderen aber nicht. /etc/conf.d/wireless wird ebenfalls nicht benötigt, diese Konfiguration steht dann in /etc/wpa_supplicant.conf.
Das Timeout hatte ich mit 1.11.8 leider auch. Das Skript Skript /lib/rcscripts/net.modules.d/wpa_supplicant löst hier das Problem, welches so oder ähnlich in 1.11.9 erscheinen wird:
[...] | Hatte WPA nicht im runlevel, als ich deine Lösung ausprobiert habe. Ich denke schon, dass ich alles richtig gemacht habe
Das mit dem !iwconfig war auch nur der Versuch, net.ath0 komplett aus den Wireless-Extensions rauszuhalten, da ich _bei diesem Versuch_ wpa_supplicant vorher schon ausgeführt hatte. Naja, bleibt im Endeffekt nur zu warten, bis WPA korrekt ins baselayout (wireless) integriert wurde. Macht mir persönlich aber auch nichts... _________________ 42 |
|
Back to top |
|
|
xmit Apprentice
Joined: 02 Apr 2003 Posts: 158 Location: Hamburg, Germany
|
Posted: Mon Jan 31, 2005 8:48 pm Post subject: |
|
|
Baselayout 1.11.9 ist draussen und WPA funktioniert, d.h. das längliche Skript aus meinem vorherigen Post wird nicht mehr benötigt.
NightDragon, läuft dein DHCP? |
|
Back to top |
|
|
|