最近因为毕业设计,入手了一枚树莓派。由于网上一些教程的可能是比较久远了,而Debian系列的系统现在已经没有/etc/wpa.conf
文件了,配置这个文件并不能生效还会照成网卡无法使用,折腾了老半天才知道应该配置的是/etc/wpa_supplicant/wpa_supplicant.conf
,所以特地写这篇文章总结。
本文主要介绍树莓派无线网卡的配置,当然不局限于树莓派。我装的是RaspBian系统,其实其它的Linux系统,也是可以照这种方式配置的。
三种配置方式
- 静态IP绑定设置
- 动态IP配置
- 多个无线连接配置
静态IP绑定
命令行输入 sudo vim /etc/network/interfaces
在文件中输入
# 第一个网卡
auto wlan0
allow-hotplug wlan0 # 允许热插拔(非必须配置)
iface wlan0 inet static # 采用静态IP分配的方式
address 192.168.199.249 # 为树莓派设置的ip (详见下面介绍)
netmask 255.255.255.0 # 子网掩码 (详见下面介绍)
gateway 192.168.199.1 # 网关地址 (详见下面介绍)
wpa-ssid yourssid # 你要连接的wifi名称
wpa-psk yourpassword # 你要连接的wifi密码
- 网关地址
网关地址也就是你所要连接的路由器IP地址
- 子网掩码
用来指明一个IP地址的哪些位标识的是主机所在的子网,最简单的应用就是通过子网掩码确定当前局域网允许连接的最大主机数
- 获取方式
在已连入该局域网的设备的CMD窗口中输入
ipconfig -all
如图 可获得你所要连接的wifi的网关地址和子网掩码
当然如果你是Linux系统可输入 ifconfig -a
查看
-
静态IP设置
为树莓派分配的静态IP是随意的,当然这个随意有个前提就是设置当前局域网内允许的空闲IP。
哪些IP才是当前局域网中允许的,你可以通过网关地址和子网掩码去计算,当然计算方式我在这里就不作讨论。一个简单的方法就是取网关地址的前三组数,最后一组随便写一个。
比如网关地址是:192.168.199.1
则你可设静态IP为192.168.199.249
网关地址为192.168.2.1
则可设静态IP为192.168.2.22
当然允许设置的IP不一定是空闲的,它有可能已经被局域网中的其他设备占用,你可以通过ping IP
指令来查看所要设置的IP是否已经被占用
-
重启网卡设置
配置完/etc/network/interfaces
文件后可输入sudo ifup wlan0
重启一下网卡。这时候 输入ifconfig
可看到你的无线网卡已经有对应的IP了
如果还没有可以尝试输入sudo reboot
重启系统
很多教程都比较推荐静态IP设置,主要的优点是由于静态IP是我们手动分配的,所以SSH远程连接时,我们不用登陆路由器也可以知道树莓派的IP地址。当然前提是你能记得你配置时填写的IP地址?(反正我自己是记不住)
静态IP绑定带来的问题就是有些时候,会因为被先接入的IP占用而无法上网
动态IP设置
其实我个人是比较动态IP设置的,为什么呢。配置写少了几行,哈哈。
- 主要是用动态IP设置,IP由DHCP服务器直接分配,你不要关心树莓派要绑定的局域网IP是否被占用呀,能否使用呀。
- 其次DHCP是有规律的为设备分配IP的,所以大部分情况下,分配的IP和你上一次连入该局域网的IP是一样的,除非的你上次使用的IP被占用了(如果被占用了,你静态IP配置的使用也是不能使用的呀)。所以说静态绑定你能知道IP,而动态不知道这种完全没道理呀,你既然可以记住静态配置时的IP,为啥就不能记住上一次动态分配的IP呢。
- 动态IP设置的另一个好处就是,就是不会因为IP冲突而无法上网,如果树莓派这次连接进来时,上一次使用的IP已被占用了,DHCP服务器就会为树莓派分配一个新的IP。当然这个时候你就不知道你的树莓派IP地址是多少了。这个时候你就得去路由器查看了。而静态IP设置要是出现IP被占用了,那就只能把占用IP的设备断掉(很多时候不现实呀)或者是重新修改树莓派的静态IP设置。
所以,我个人是比较推荐用动态IP设置了,找不到树莓派就上路由器看一下IP嘛,说得好像静态设置就能记住IP似的,我不信呀。好了,废话不多说,看一下动态IP设置方式吧
命令行输入 sudo vim /etc/network/interfaces
在文件中输入
# 第一个网卡
auto wlan0
allow-hotplug wlan0 # 允许热插拔(非必须配置)
iface wlan0 inet dhcp # DHCP自动分配IP
wpa-ssid yourssid # 你要连接的wifi名称
wpa-psk yourpassword # 你要连接的wifi密码
保存退出,并执行sudo ifup wlan0
。
多个无线连接配置
上面的配置只是配置了一个无线连接,如果你要配置多个wifi连接怎么办。网上有很多教程都是让你修改 /etc/wpa.conf
文件,实际上现在已经很多Debian系列的Linux系统已经不是这个文件了,所以如果你在/etc/network/interfaces
文件中引入这个配置,可能会照成网卡不可用。新的多个无线连接配置文件 应该是/etc/wpa_supplicant/wpa_supplicant.conf
具体设置方式
命令行输入 sudo vim /etc/network/interfaces
在文件中输入
# 第一个网卡
auto wlan0
allow-hotplug wlan0 # 允许热插拔(非必须配置)
iface wlan0 inet dhcp # DHCP自动分配IP
wpa_conf /etc/wpa_supplicant.conf # 多个无线连接配置文件
保存退出,接着执行 sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
在文件中输入
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
# 第一个无线连接
network={
ssid="xxxx" # wifi 名称
psk="xxxx" # wifi 密码
key_mgmt=WPA-PSK # 加密方式
}
# 第二个无线连接
network={
ssid="xxxx"
psk="xxxx"
key_mgmt=WPA-PSK
}
保存退出,执行 sudo ifup wlan0
。多个无线连接的配置就完成了,树莓派会按照network的配置顺序查找连接对应的无线wifi
其他一些特殊的配置
- 如果你的wifi没有设置密码
network={
ssid="xxx"
key_mgmt=NONE # 加密方式,不加密
}
- 如果你的wifi使用wep加密
network={
ssid="xxxx"
key_mgmt=NONE
wep_key0="xxxx" # wep密码
}
- 如果你的wifi设置了不可见
network={
ssid="Tenda_4DE678"
psk="xxxx"
key_mgmt=WPA-PSK
scan_ssid=1 # 如果你的无线接入点是隐藏的,该配置就是必须的
}
- 设置优先级
network={
ssid="Tenda_4DE678"
psk="xxxx"
key_mgmt=WPA-PSK
priority=999 # priority指连接优先级,数字越大优先级越高(不可以是负数)
}
建议为你的手机热点配置一个最高的优先连接,当你进入一个新的局域网内时,你可以通过将树莓派连接在你的手机热点上,然后SSH连接配置新局域网的wifi名称和密码,这样就避免了进入新局域网时,没有显示屏而无法配置无线连接的尴尬。为你树莓派配置你的手机热点连接,可以让你随时随地都有办法ssh连接上你的树莓派,不会因没有显示屏而失去对树莓派的控制。
- 更多network配置项介绍
其实树莓派也就相当于一台Linux主机,更多的时候我们不要局限于搜索树莓派,而可以搜索对应的Linux关键字,这样看到的资料多一些。关于这方面的,感兴趣可搜索Linux /wpa_supplicant.conf
。这里我推荐两篇介绍的比较详细的教程:
Linux无线网络设置(wpa_supplicant的使用)
Linux之wpa_supplicant.conf文件详解
其他配置方法介绍
- 通过
wpa_cli
命令行配置
命令行输入sudo wpa_cli
调起wpa_cli的命令行界面
具体配置方式,详见文章 : 使用wpa_cli命令行配置Wi-Fi无线网卡 - SD卡boot直接写入
参考文章:无屏幕和键盘配置树莓派WiFi和SSH
相关的 linux 指令介绍
重启系统
sudo reboot
重启网络
sudo /etc/init.d/networking restart
开启无线网卡
sudo ifup wlan0
关闭无线网卡
sudo ifdown wlan0
-
查看当前无线连接IP地址
ifconfig wlan0
-
查看当前无线连接具体信息
iwconfig
-
列出附近可连接的wifi
iwlist wlan0 scan
-
搜索附近可连接的wifi 只返回wifi 名称
iwlist wlan0 scan | grep ESSID
-
获取加密后的psk配置
wpa_passphrase SSID password