NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: wpa_supplicant and dhcp
On Jan 24, 2010, at 4:50 AM, Sad Clouds wrote:
> On Saturday 23 January 2010 18:46:59 Steven Bellovin wrote:
>
>> First -- look at /etc/rc.d/wpa_supplicant. Does yours have the same lines
>> as mine? (I do see what appears to be a bug: wpa_supplicant says it has
>> to occurs before dhclient; I think it should also say that it has to occur
>> before dhcpcd. If you're using dhcpcd as your dhcp client, that might be
>> the problem.)
>>
>> Second: to see what order things are run in at boot time, try the
>> following:
>>
>> cd /etc/rc.d
>> rcorder -s start *
>>
>> probably redirected to a file or piped to 'more' or some such.
>>
>> Third: if you do use dhclient, do you have any interface {...} clauses in a
>> dhclient.conf file? In at least some cases, the presence of such clauses
>> seems to cause dhclient (via its shell script) to issue ifconfigs and
>> hence ioctls that reset the device. If it's not locking in well to the RF
>> signal -- and I've had a *lot* of trouble with that -- the reset is
>> deadly, because it makes the scan start over. (I have a wpi0 interface;
>> it usually works at home, but rarely works well elsewhere.)
>>
>> --Steve Bellovin, http://www.cs.columbia.edu/~smb
>>
>
> In my /etc/rc.d/wpa_supplicant I have the following:
>
> # PROVIDE: wpa_supplicant
> # REQUIRE: network mountcritlocal
> # BEFORE: NETWORKING dhclient
>
> And I don't have any /etc/dhclient.conf files.
>
> But I think I know what the problem might be. I changed the following lines
> in
> /etc/rc.d/dhlient:
>
> ...
> load_rc_config $name
> sleep 10
> run_rc_command "$1"
>
> So when rc scrips leeps for 10 seconds before starting dhclient, everything
> works as it should.
>
> I start wpa_supplicant from rc.conf with the following:
>
> wpa_supplicant=yes
> wpa_supplicant_flags="-B -i iwn0 -c /etc/wpa_supplicant.conf"
>
> I think what happens, wpa_supplicant starts in the background as a daemon and
> tries to initialise network interface and almost immediately dhclient starts
> on the same interface. This causes problems.
It shouldn't cause problems, but I have no trouble believing that it does.
>
> Once solution could be to sleep for a few seconds at the end of
> wpa_supplicant
> script to let things "settle" a bit.
So here's a clean way to do that. I have the following in
/etc/rc.conf.d/ntpdate on my system, to let named initialize before ntpdate
tries to resolve things:
start_precmd="ntpdate_precmd"
ntpdate_precmd()
{
echo ntpdate pausing...
for i in 0 1 2 3 4 5 6 7 8 9
do
sleep 1
echo -n .
done
echo
}
You should use start_postcmd and of course change ntpdate to wpa_supplicant.
This way, you haven't changed a file that a new version may wish to update.
That said, I don't think this is the whole story. Lots of people, including
me, have no trouble without such a delay. Manually starting wpa_supplicant and
waiting until it has associated with an access point before starting dhclient
doesn't always work, either. There's just something fundamentally wrong in the
depths of the driver and/or the 802.11 support, possibly exacerbated by how
dhclient interacts.
>
> PS.
> I think in my first attempts I tried dhcpd instead of dhclient. I think I
> noticed dhcpd was starting in the wrong order, i.e. it was started before
> wpa_supplicant. So this should be taken care of too.
>
--Steve Bellovin, http://www.cs.columbia.edu/~smb
Home |
Main Index |
Thread Index |
Old Index