Ai-笔记:无线设置——让树莓派使用WPA-Enterprise(例如eduroam)

前言:这篇是「威玲旺卡Aileen」的原创笔记/教程。在没有告知本人的情况下请不要转载呐,谢谢。


适用情况

系统:Raspbian Jessie <= 4.9 (如果你的系统 <= 4.4,鉴于下文TroubleShooting出现的问题,我推荐更新到最新系统)
板:Raspberry Pi 1/2/3 图形界面和终端都适用
Raspbian为WPA-PSK提供了界面配置,但想要用WPA企业版的无线网络则需要一番周折。如果你发现你想要用的网络在Raspbian里成为了灰色不可选项,那这篇文章会指导你怎么进行手动配置。(本例采用欧洲高校的教育网络eduroam
更新时间:2017年7月


步骤:

  1. 准备工作和断开网络
  2. 自己手动编辑一个配置文件wpa_supplicant.conf
  3. 调用刚才配置的wpa_supplicant.conf,连接到目标网络
  4. dhclient获取IP,就完成了

1. 准备工作和断开网络:

  • ssid:记下无线网络的具体名称(例子:eduroam);
  • identitypassword:用户名(例子:user_sample)和密码(例子:pw_sample);
  • EPA MethodPhase 2 authentication:了解所在网络支持的扩展认证协议,最常用的方法有PEAP,EAP-TTLS,LEAP等(例子:使用MS-CHAPv2PEAP
  • 获得所在网络的证书(不同的高校和研究机构的eduroam都需要各自的证书,在企业中,询问网络管理员Linux下的***.pem。对于RWTH,在这个链接 下载Root cacert.pem并拷贝到本地,典型又安全的路径是/etc/certs/cacert.pem
  • 完成了准备工作,现在要断开网络,开始本地配置,断网的命令是:
sudo service networking stop

2. 自己手动编辑一个配置文件:

创建文本wpa_supplicant.conf,典型又安全的路径是 /etc/wpa_supplicant/wpa_supplicant.conf,可以用系统自带的leafpad开始编辑:

 network={

    # -- MUST CONFIGURE --
    # The 'identity' is the username actually used for authentication.
        identity="user_sample"

    # -- MUST CONFIGURE --
    # Your password (so make sure the permissions on
        password="pw_sample"

    # -- MUST CONFIGURE --
    # CA cert from here:
        ca_cert="/etc/certs/cacert.pem"

    # -- TO CHECK --
    # EAP supports PEAP and TTLS.
        eap=PEAP TTLS

    # -- TO CHECK --
    # use MS-CHAPv2 as the inner authentication scheme 
    # with the traditional label
        phase1="peaplabel=0"
        phase2="auth=MSCHAPV2"

    # Set priority to a big number
        priority=999

    # Enable this network block
        disabled=0

    # -- MUST CONFIGURE --
    # name of network
        ssid="eduroam"

    # SSID should be broadcast, so don't scan.
        scan_ssid=0

    # Infrastructure mode
        mode=0

    # WPA/WPA2 require OPEN
        auth_alg=OPEN

    # WPA and WPA2 (RSN) are both used for eduroam 
    # (depending on which organisation you are at)
    # In the future 'WPA' can be removed (WPA2 only).
        proto=WPA RSN

    # CCMP (AES) is stronger, but some organisations use TKIP.
    # In the future 'TKIP' can be removed.
        pairwise=CCMP TKIP

    # Use EAP
        key_mgmt=WPA-EAP

    # Use PMKSA caching
        proactive_key_caching=1

}

注释 # -- MUST CONFIGURE --的4处分别需要改成你自己的用户名,密码,证书地址和网络名称
注释# -- TO CHECK --的2处是你需要注意的所在网络的EAP方式,如果不支持PEAP,TTLS则需要相应改动
其他部分很少变化,保存。
*配置文本参考了Bristol大学的网络配置文件

3. 调用自己写的wpa_supplicant.conf,连接到目标网络:

调用命令如下,记得wpa_supplicant.conf要对应你刚才保存的路径:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

*网络论坛上有很多把这一步在/etc/network/interfaces作改动,效果是一样的
现在,你应该已经连接到目标网络了,用iwconfig命令查看,会发现有类似名叫wlan0或者叫wlp2s0的无线连接,记下这个interface name,下一步有用。

4. 用dhclient获取IP

本例中,我们用在典型的命名规则下最通常的情况wlan0,但新的命名规则也在运行,所以刚才说注意一下。(Raspbian依旧运行system V通常是wlan0,Ubuntu运行systemd后会出现新命名),运行dhclient要求获取ip:

sudo dhclient wlan0

ifconfigip addr show或直接上网验证。

至此配置就完成了!你应该已经连接成功了。

TroubleShooting:

1. 如果你在运行时出现这样的问题

wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf  -B
Successfully initialized wpa_supplicant
nl80211: Driver does not support authentication/association or connect commands
wlan0: Failed to initialize driver interface

看似驱动突然间就出问题了。
这个bug可以追溯到ArchLinuxArm的wpa_supplicant功能组件问题。(看来Raspbian 4.4以下都有这个问题。)
解决方法是更新你的Raspbian系统到最新(本例中是 v4.9)
更新系统的命令如下:

sudo apt-get update
sudo apt-get dist-upgrade

2. 我自己板上的/etc/network/interfaces文件内容(仅作参考)

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

#iface default inet dhcp

#iface lo inet loopback
#iface eth0 inet dhcp

#allow-hotplug wlan0

#iface wlan0 inet dhcp
#    pre-up wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
#    post-down killall -q wpa_supplicant

3. 我自己板上的/etc/wpa_supplicant/wpa_supplicant.conf文件内容(仅作参考)

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
  ssid="eduroam"
  key_mgmt=WPA-EAP
  pairwise=CCMP TKIP
  group=CCMP TKIP
  eap=PEAP TTLS
  identity="user_sample"
  password="password_sample"
  ca_cert="/etc/certs/cacert.pem"
  phase1="peapver=0"
  phase2="MSCHAPV2"
  scan_ssid=1
  mode=0
  auth_alg=OPEN
  proto=WPA RSN
  proactive_key_caching=1
  }

4. 其他命令

kill掉正在执行的wpa_supplicant程序

sudo killall -q wpa_supplicant

*本次编辑时间:2017年7月

你可能感兴趣的:(Ai-笔记:无线设置——让树莓派使用WPA-Enterprise(例如eduroam))