wlan0 大部分时间都不起作用

wlan0 大部分时间都不起作用

我之前问过一个问题使用wifite后Wifi无法工作[重复]这个答案帮助过我。但是,问题是它可以工作,但是几个小时后,当我启动笔记本电脑时,我遇到了同样的问题。

在此输入图像描述

我面临着问题每当我在图片。然后,重新启动我的笔记本电脑一切正常。我无法永久解决该问题。我没用过wifite我面对后发出那一刻

sudo airmon-ng check kill

输出:杀死这些进程 PID 名称 1394 wpa_supplicant

sudo service NetworkManager restart
sudo ifconfig wlan0 up

输出:wlan0:获取接口标志时出错:没有这样的设备

sudo iwconfig wlan0 down

输出:wlan0:获取接口标志时出错:没有这样的设备

sudo ifconfig wlan0 up

输出:wlan0:获取接口标志时出错:没有这样的设备

sudo aireplay-ng wlan0

输出:请指定攻击模式。 “aireplay-ng --help”寻求帮助

我试图设置 wlan0 。但是,当我运行时没有 wlan0 ifconfig。当我运行这些命令后重新启动时。 wlan0 工作正常,但是我已经遇到过多次。几天前运行wifite后。即使我现在再次面临这个问题......我认为wifite状态是继续运行或者发生了其他事情。

iwconfig

没有无线扩展。

eth0 没有无线扩展。

wlan0 IEEE 802.11 ESSID:关闭/任意
模式:托管接入点:未关联 Tx-Power=15 dBm
重试短限制:7 RTS thr:关闭 片段 thr:关闭 电源管理:关闭

wwan0 没有无线扩展。

docker0 没有无线扩展。

ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 网络掩码 255.255.0.0 广播 172.17.255.255 ether 02:42:7d:19:b4:b6 txqueuelen 0 (以太网) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX 数据包 0 字节 0 (0.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0

eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether f0:de:f1:da:7d:80 txqueuelen 1000(以太网) RX 数据包 0 字节 0 (0.0 B) RX 错误 0 丢弃 0 溢出 0 帧 0 TX数据包 0 字节 0 (0.0 B) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0 设备中断 20 内存 0xf2500000-f2520000

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 网络掩码 255.0.0.0 inet6 ::1 prefixlen 128scopeid 0x10 循环 txqueuelen 1000 (本地环回) RX 数据包 28 字节 1728 (1.6 KiB) RX 错误 0 丢弃0 溢出 0 帧 0 TX 数据包 28 字节 1728 (1.6 KiB) TX 错误 0 丢弃 0 溢出 0 载波 0 冲突 0

答案1

您已经尝试过终止wpa_supplicant并重新启动NetworkManager,但是如果整个界面在命令的输出中不再可见iwconfigifconfig iw list/或的ip link show,那么这将无济于事。

问题可能是 WiFi 适配器驱动程序与硬件存在某种错误通信。如果您使用该功能,则可能是挂起/休眠问题。

您可能需要检查dmesg输出以查看是否存在与 WiFi 接口相关的任何错误消息。当界面不再对类似命令可见时iwconfig等命令可见时,您可以尝试卸载并重新加载 WiFi 接口的驱动程序模块。

wlan0接口正常工作时,sudo ethtool -i wlan0 | awk '/driver:/{print $2;}'应显示驱动模块的名称。记下它。

wlan0再次丢失时,运行sudo modprobe -r <driver module name>,替换<driver module name>为您之前记下的实际模块名称,以卸载该模块。然后sudo modprobe <driver module name>重新加载它。这将迫使驱动程序从头开始 100% 重新初始化 WiFi 适配器,有望清除任何与通信错误相关的错误状态。

如果这导致 WiFi 适配器再次开始工作,并且每当您暂停笔记本电脑时似乎都会出现问题,那么您可能需要自定义暂停/恢复过程以自动关闭 WiFi 适配器并在暂停时卸载其驱动程序,然后重新加载简历上的。这在大多数发行版上通常都是相当容易实现的,但我不知道专门针对 Kali 推荐的方法是什么。

显然 Kali 是基于 Debian 的,因此将以下脚本放入/lib/systemd/system-sleep/wifi-workaround.sh并使其可执行 ( chmod a+rx /lib/systemd/system-sleep/wifi-workaround.sh) 可能会成功:

#!/bin/sh
# When suspending/resuming, systemd will call executables in /lib/systemd/system-sleep 
# with the following parameters:
# $1 = either "pre" or "post"
# $2 = "suspend", "hibernate", "hybrid-sleep" or "suspend-then-hibernate"
INTERFACE=wlan0
DRIVER_MODULE=<driver module name>    

case "$1" in
    pre)
        nmcli device disconnect $INTERFACE
        modprobe -r $DRIVER_MODULE
        ;;
    post)
        modprobe $DRIVER_MODULE
        nmcli device connect $INTERFACE
        ;;
esac

# Don't stop suspending/resuming even if we fail somehow.
exit 0

免责声明:我根本没有对此进行测试,您可能需要自行排除故障和调整。但我希望你能明白。

答案2

恢复后以 sudo 身份运行此脚本:

#!/bin/bash
# program to check WiFi and reset if not running
  
#dns server 
IPTEST=1.1.1.1
  
iwconfig=/sbin/iwconfig
lspci=/usr/bin/lspci

#find 802 wireless device id
DEVICE=`$iwconfig 2>/dev/null | egrep 802 | awk ' {print $1}'`

#get PCI bus wireless #  
WLNUM=`$lspci | grep -i wireless | awk ' {print $1}'`
  
#get driver to unload
WLMOD=`$lspci -vv -s $WLNUM | grep -i "kernel driver" | awk ' {print $5}'`
  
  
#print out stats      
echo "IP is: $IPTEST"
echo "DEVICE is: $DEVICE"
echo "PCI DEV NUM is $WLNUM"
echo "PCI DRIVER is $WLMOD"
ping -c 1 $IPTEST

read -n 1 -p "Proceed ? " ANS

if [[ "$ANS" =~ [^yY] ]]; then 
    exit 0
fi
  
echo ""
if ping -c 1 $IPTEST >/dev/null 2>&1 ; 
then
    echo "$IPTEST 1 ok"
    exit 0
else
    echo "Ping failed"

    echo "stopping wifi "
    sudo nmcli radio wifi off
    echo "sleeping for 3..."
    sleep 3

    echo "unloading $DEVICE"
    sudo nmcli device disconnect $DEVICE
    echo "sleeping for 3..."
    sleep 3


    echo "unloading $WLMOD ..."
    sudo modprobe -r $WLMOD
    echo "sleeping for 3..."
    sleep 3

    echo "reloading $WLMOD"
    sudo modprobe $WLMOD
    echo "sleeping for 3..."
    sleep 3

    echo "reloading $DEVICE"
    sudo nmcli device connect $DEVICE
    echo "sleeping for 10..."
    sleep 10

    echo "stop wifi "
    sudo nmcli radio wifi off
    echo "sleeping for 3..."
    sleep 3
    
    echo "starting wifi"
    sudo nmcli radio wifi on
    echo "sleeping for 3..."
    sleep 5

    echo "test ping again ..."
    ping -c 1 $IPTEST
fi
exit 0

相关内容