linux wifi相关命令 您所在的位置:网站首页 linux查看网络连接状态的命令 linux wifi相关命令

linux wifi相关命令

2023-10-27 22:33| 来源: 网络整理| 查看: 265

$ wpa_cli -i wlan1 set_network 0 ssid '"name"' $ wpa_cli -i wlan1 set_network 0 key_mgmt NONE $ wpa_cli -i wlan1 set_network 0 wep_key0 '"password"' $ wpa_cli -i wlan1 enable_network 0

  wpa_cli -i wlan1 save_config

 

 /etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicantctrl_interface_group=0eapol_version=2update_config=1country=NLbss_expiration_age=250

network={        ssid="xxxxxxxxxxx"        psk="xxxxxxxxxxx"        priority=4        disabled=1}

      连接:nmcli device wifi connect wifiname password wifipasswd        删除:nmcli con del wifiname       启动:nmcli connection up wifiname        关闭:nmcli connection down wifiname nmcli c modify "NAME" wifi-sec.key-mgmt wpa-psk wifi-sec.psk "PASSWORD" 启动wifi:nmcli c up "NAME" 关闭wifi:nmcli c down "NAME"

linux wifi功能的实现

一、嵌入式linux四件套配置

 

1、网卡选型的依据:

    a.网卡不能乱选,否则没戏。网卡的依据是,kernel的menuconfig -> device drivers -> network device support -> wireless lan -> 一堆驱动,however,这还没有结束;

    b.buildroot -> menuconfig -> target packet -> hardware handling -> *** firmwares -> linux-firmware -> wifi firmwares -> 一堆驱动的bin。

# 这些网卡商都十分淫荡,在官网上放着10年前的固件,但是却给这些软件巨头发放最新的驱动,而且还不开源,嗞嗞。。

 

# 接下来是开启一些功能

 

2、开启内核rfkill功能

    menuconfig -> networking support -> rf switch subsystem support

 

3、开启kernel和buildroot的驱动支持

    a、就是第一步的那两个地方,然后:

    b、Networking support  -> Networking options ->

Packet socket  

[*]   NETLINK: mmapped IO

[*]     IP: DHCP support

[*]     IP: BOOTP support

[*]     IP: RARP support

[*] Network packet filtering (replaces ipchains)    //添加,后面子选项可不选,配置CONFIG_NETFILTER

 

 

4、buildroot软件包设置

    buildroot -> menuconfig -> target packet -> network applications

    选择hostapd,iw,wireless tools,wpa_supplicant(注意全选)

 

5、然而还没有结束

    buildroot -> busybox-menuconfig -> networking utilities -> udhcpd, udhcpc

    嗯,telnet困难症的朋友,你们现在可以脱离苦海了,把telnetd也选上去吧

 

# 这个时候,应该就能顺利启动网卡了,需要验证一下/sys/class/net/wlan0里面有没有phy80211这个东西,如果没有,说明驱动安装失败。

 

# 如果是网上找到的开源驱动,并且你不需要开AP,那么即使没有phy80211也能够上网,详见附一

 

# 如果你的网卡是usb的,而且比较水,那么网卡有时候会死机,这个时候你怎么搞,它都不会再鸟你了,这个时候,嗯,抽出来,再插进去  = =..

 

 

二、应用程序配置(client篇)

 

1、ifconfig wlan0 up

2、情况一:要连接的AP没有密码

    iw dev wlan0 connect "Guest hi-T"

    udhcpc -i wlan0

    # 然后可以用ping了

    # 经过使用,Guest的信号还是不错的,丢包率只有10%上下,udhcpc找ip的速度也是非常快的。

 

3、情况二:要连接的AP使用WPA加密

    需要使用wpa_supplicant

    a、创建文件/etc/wpa_supplicant.conf,如果是在buildroot把这个包打上去的,那么应该本来就有这个文件;

    b、编辑文件:/etc/wpa_supplicant.conf:

 

ctrl_interface=/var/run/wpa_

ap_scan=1 //必须要这一句,这是导演安排滴

 

network={

    ssid="zhd-1"                 # 这是AP的名字

    psk="123456789"        # 这是AP的密码

}

 

        保存退出。

    c、wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant

        -D 表示驱动程序; -i 表示网卡; -c 表示配置文件

        如果看到CTRL-EVENT-CONNECTED的debug输出,证明配置是对的。

        如果看到 pre-shared key maybe incorrect,并且持续不断出现,表示密码可能是错的。

        如果看到其他的信息,有可能是配置文件不完整,甚至是驱动程序本身也是不完整的。

    d、CTRL-EVENT-CONNECTED之后一段时间内,如果没有任何输出,证明连接稳定,可以进行下一步:

        wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant -B,让wpa_supplicant常驻在后台,控制网卡

        处于client模式;

    e、udhcpc -i wlan0, 获取ip

    f、用完后,wpa_cli -i wlan0 terminate,退出wpa_supplicant,并停止wlan0

 

    # 使用 zhd-1 测试带密码wifi,请务必保持耐心,不要随便 ^C ,请久等。。(ping的丢包率在40%以上。。。)

 

三、应用程序配置(AP篇)

 

1、sh: iw list

    a. 找到Supported interface modes, 发现内有AP,lucky, go next;

    b. No AP exist, oh shit! and fuck too!   You doomed, breake a window and just jump off, goodbye and never say hi ~~~

 

2、建立/etc/hostapd.conf,内容如下:

    interface=wlan0    # 所用的网卡

    driver=nl80211     # 所用的驱动

    ssid=hostapd        # 热点名称

    channel=6            # 也称为频段,wifi共有13个通道,其中1、6、11是最佳频道

    hw_mode=g         # 可以为a、b、g

    ignore_broadcast_ssid=0    # 广播ssid

    auth_algs=1          # 1=WPA2,2=WEP

    wpa=2                   # 1=WPA1, 2=WPA2, 3=BOTH

    wpa_passphrase=12345678    # 密码

    wpa_key_mgmt=WPA-PSK    # 加密方式

    wpa_pairwise=TKIP    # 802.11g 加密算法

    rsn_pairwise=CCMP    # 802.11i 加密算法

 

3、hostapd -d /etc/hostapd.conf

    -d 表示debug模式,所以会出来一大片信息,仔细检查有没有发现file not found错误,一般是由于配置错误导致的,有时候也会是驱动的原因。这个时候用手机应该能够看到有一个叫hostapd的热点。。。

 

4、接下来,配置udhcpd,配置文件样本可以在buildroot/output/build/busybox***/examples/udhcpd/udhcpd.conf中找到,使用 cat udhcpd | grep ^\# -v 命令,查看默认的配置

 

5、那么,其实呢,这个东东是建立在有线网络的基础上的,并且要作为一个能够上网的路由器使用,而我们只需要互联通信就ok了,所以有很多东西是没有必要的,核心配置,只有如下的几条:

    # 确定IP的范围

    start    192.168.0.20

    end     192.168.0.25

 

    # 选定udhcpd的设备

    interface    wlan0

 

    option    subnet    255.255.255.0    # 子网掩码

    option    router    192.168.0.1        # 网关(就是本机)

    option    lease        86400                # 租约时间,其实就是该IP地址的生命周期,单位是秒,86400是一天

    

    设置好了后,保存在/etc/udhcpd.conf;

 

6、hostapd /etc/hostapd.conf -B

    ifconfig wlan0 192.168.0.1 netmask 255.255.255.0   # 注意,一定要和udhcpd.conf严格匹配

    touch /var/lib/misc/udhcpd.leases

    udhcpd -S /etc/udhcpd.conf

 

7、用手机再找到hostapd热点,连接,连接了之后,查看手机IP;

 

8、开发板:ping -I wlan0 手机ip, 如果有应答,就成功了。

 

附一、开源驱动的应用程序配置(仅client)

 

# 现在的驱动程序已不支持iwconfig,用iwconfig配置任何新版wlan驱动均会报错

 

1、ifconfig wlan0 up

2、iwconfig wlan0 scan  # 得到附近AP的列表

3、iwconfig wlan0 essid "zhd-1" key "123456789"

 

Wi-Fi?WirelessFidelity,无线保真 技术与蓝牙技术一样,同属于在办公室和家庭中使用的短距离无线技术。该技术使用的使 2.4GHz附近的频段,该频段目前尚属没用许可的无线频段。其目前可使用的标准有两个,分别是IEEE802.11a和IEEE802.11b。该技术 由于有着自身的优点,因此受到厂商的青睐。

  Wi-Fi技术突出的优势在于:

   其一,无线电波的覆盖范围广,基于蓝牙技术的电波覆盖范围非常小,半径大约只有50英尺左右?约合15米 ,而Wi-Fi的半径则可达300英尺左右? 约合100米 ,办公室自不用说,就是在整栋大楼中也可使用。最近,由Vivato公司推出的一款新型交换机。据悉,该款产品能够把目前Wi-Fi无线网 络300英尺?接近100米 的通信距离扩大到4英里?约6.5公里 。

  其二,虽然由Wi-Fi技术传输的无线通信质量不是很好,数据安全性能比蓝牙差一些,传输质量也有待改进,但传输速度非常快,可以达到11mbps,符合个人和社会信息化的需求。

  其三,厂商进入该领域的门槛比较低。厂商只要在机场、车站、咖啡店、图书馆等人员较密集的地方设置“热点”,并通过高速线路将因特网接入上述场 所。这样,由于“热点”所发射出的电波可以达到距接入点半径数十米至100米的地方,用户只要将支持无线LAN的笔记本电脑或PDA拿到该区域内,即可高 速接入因特网。也就是说,厂商不用耗费资金来进行网络布线接入,从而节省了大量的成本。

 在嵌入式产品中,wifi的比重越来越来大,本文只是简略讲下wifi的配置,我们需要如下几个命令: iwlist iwconfig ifconfig route 

 首先用1:iwlist eth1 scanning 查看无线路由

 2:iwconfig eth1 essid "无线路由的名称"

 3: ifconfig eth1 IP

 4: route add default gw 网关

对于带密码的路由器,设置如下:

1:iwconfig eth1 key s:密码

2:iwconfig eth1 key open

3:ifconfig eth1 essid "名称"

4:ifconfig eth1 IP

5:route add default gw 网关

 

 

wifi模块驱动

使用系统wifi功能的第一步是确定设备wifi模块的型号并安装相应的驱动程序。在嵌入式开发中,一般是需要获取到wifi模块的驱动源码,然后进行交叉编译来构建驱动模块并使用insmod命令进行安装。

一般而言,WIFI模块具有两种工作模式:

Station Mode: 工作站模式,用来接入路由器等AP AP Mode: 接入点模式,用来被接入使用

不同模式的wifi驱动代码可能不一样,所以也许会需要安装两个驱动模块,分别来支持这两种模式功能,具体请参考对应wifi模块的手册与指南文档。

主要工具

Linux系统中主要使用的wifi配置工具有两种:

wireless tools: 包含iwconfig,iwlist,iwspy,iwpriv等工具,主要配置wep加密wifi wpa_supplicant:包含wpa_cli,wpa_supplicant等工具,主要配置wpa加密wifi

因为目前常用的wifi网络大部分都是使用的wpa协议进行加密,所以wpa_supplicant工具使用的比较多,但是在wifi接口的管理方面,wireless tools工具依然还是很有用的。

wireless tools

该工具包是Linux Wireless Extensions(LWE)的用户层配置工具之一。LWE是Linux下对无线网络配置的工具,包括内核的支持、用户层配置工具和驱动接口的支持三部分。目前很多无线网卡都支持LWE,而且主流的Linux发布版本,比如Redhat Linux、Ubuntu Linux都已经带了这个配置工具。

编译构建之后会生成命令:iwconfg,iwlist,iwspy,iwpriv等,这些命令的使用依赖于生成的动态库文件:libiw.so.29,因此拷贝这些命令到目标机器上时,记得将该库文件一起拷贝到系统的lib目录下面,否则会提示找不到库文件。

iwconfig是LWE最主要的工具,可以对无线网卡的大部分参数进行配置。具体的命令参数与选项可以通过help命令来查看了解。其中一些参数的解释如下:

essid:设置无线网卡的ESSID(Extension Service Set ID)。通过ESSID来区分不同的无线网络,正常情况下只有相同ESSID的无线站点才可以互相通讯,除非想监听无线网络。其后的参数为双引号括起的ESSID字符串,或者是any/on/off,如果ESSID字符串中包含any/no/off,则需要在前面加"--"。

mode:设置无线网卡的工作模式,可以是

Ad-hoc:不带AP的点对点无线网络 Managed:通过多个AP组成的网络,无线设备可以在这个网络中漫游 Master:设置该无线网卡为一个AP Repeater:设置为无线网络中继设备,可以转发网络包 Secondary:设置为备份的AP/Repeater Monitor:监听模式 Auto:由无线网卡自动选择工作模式

freq/channel:设置无线网卡的工作频率或者频道,小于1000的参数被认为是频道,大于10000的参数被认为是频率。频率单位为Hz,可以在数字后面附带k, M, G来改变数量级,比如2.4G。频道从1开始。使用iwlist工具可以查看无线网卡支持的频率和频道。参数off/auto指示无线网络自动挑选频率。 注意:如果是Managed模式,AP会指示无线网卡的工作频率,因此该设置的参数会被忽略。Ad-hoc模式下只使用该设定的频率初始无线网络,如果加入已经存在的Ad-hoc网络则会忽略该设置的频率参数。

ap:连接到指定的AP或者无线网络,后面的参数可以是AP的MAC地址,也可以是iwlist scan出来的标识符。如果是Ad-hoc,则连接到一个已经存在的Ad-hoc网络。使用off参数让无线网卡不改变当前已连接的AP下进入自动模式。any/auto参数,无线网卡自动选择最好的AP。 注意:如果无线信号低到一定程度,无线网络会进入自动选择AP模式。

rate/bit:如果无线网卡支持多速率,则可以通过该命令设置工作的速率。小于1000的参数由具体的无线网卡驱动定义,一般是传输速率的索引值,大于1000的为速率,单位bps,可以在数字后面附带k, M, G来指定数量级。auto参数让无线网卡自动选择速率fixed参数让无线网卡不使用自动速率模式。

txpower:如果无线网卡支持多发射功率设定,则使用该参数设定发射,单位为dBm,如果指定为W(毫瓦),则转换公式为: dBm=30+log(W)。参数on/off可以打开和关闭发射单元,auto和fixed指定无线是否自动选择发射功率。

sens:设置接收灵敏度的下限,在该下限之下,无线网卡认为该无线网络信号太差,不同的网卡会采取不同的措施,一些现代的无线网卡会自动选择新的AP。正的参数为raw data,直接传给无线网卡驱动处理,一般认为是百分比。负值表示dBm值。

retry:设置无线网卡的重传机制。limit ‘value’ 指定最大重传次数;lifetime ‘value’指定最长重试时间,单位为秒,可以附带m和u来指定单位为毫秒和微秒。如果无线网卡支持自动模式,则在limit和lifetime之前还可以附加min和max来指定上下限值。

rts:指定RTS/CTS握手方式,使用RTS/CTS握手会增加额外开销,但如果无线网络中有隐藏无线节点或者有很多无线节点时可以提高性能。 后面的参数指定一个使用该机制的最小包的大小,如果该值等于最大包大小,则相当于禁止使用该机制。可以使用auto/off/fixed参数。

frag:设置发送数据包的分片大小。设置分片会增加额外开销,但在噪声环境下可以提高数据包的到达率。一般情况下该参数小于最大包大小,有些支持Burst模式的无线网卡可以设置大于最大包大小的值来允许Burst模式。还可以使用auto/fixed/off参数。

key/enc[ryption]:设置无线网卡使用的加密密钥,此处为设置WEP模式的加密key,如果要使用WPA,需要wpa_supplicant工具包。 密钥参数可以是 XXXX-XXXX-XXXX-XXXX 或者 XXXXXXXX 格式的十六进制数值,也可以是s:xxxxxx的ASCII字符。如果在密钥参数之前加了[index],则只是设置该索引值对应的密钥,并不改变当前的密钥。直接指定[index]值可以设置当前使用哪一个密钥。指定on/off可以控制是否使用加密模式。open/restricted指定加密模式,取决于不同的无线网卡,大多数无线网卡的open模式不使用加密且允许接收没有加密的数据包,restricted模式使用加密。可以使用多个key参数,但只有最后一个生效。 WEP密钥可以是40bit,用10个十六进制数字或者5个ASCII字符表示,也可以是128bit,用26个十六进制数字或者13个ASCII字符表。

power:设置无线网卡的电源管理模式。period ‘value’ 指定唤醒的周期,timeout ‘value’指定进入休眠的等待时间,这两个参数之前可以 加min和max修饰,这些值的单位为秒,可以附加m和u来指定毫秒和微秒。off/on参数指定是否允许电源管理,all/unicast/multicast指定允许唤醒的数据包类型。

commit:提交所有的参数修改给无线网卡驱动。有些无线网卡驱动会先缓存无线网卡参数修,使用这个命令来让无线网卡的参数修改生效。不过一般不需要使用该命令,因为无线网卡驱动最终都会是参数的修改生效,一般在debug时会用到。

这些工具命令的常用使用示例:

扫描可用的无线网络

iwlist [wifi-name] scanning

其中wifi-name为无线网卡的名字,比如网卡eth0就是系统默认的网卡名字, wifi-name可以用ifconfig查看,一般为ra0(无线网卡),不过需要ifconfig ra0 up。

扫描网络信息

iwlist ra0 scan ===


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有