FreeBSD中wpa_supplicant的使用方法(802.1x拨号认证)

环境:FreeBSD 8.0; 基于802.1x认证系统的校园网。

FreeBSD自带了wpa_supplicant程序,所以不需要自己安装了,其中几个关键文件的路径如下:
/usr/sbin/wpa_supplicant :  程序文件
/etc/wpa_supplicant.conf  :  账号配置文件
/etc/rc.d/wpa_supplicant.sh  : 一个shell

wpa_supplicant.conf 编写帮助可以使用命令 man wpa_supplicant.conf 查看,对于我所处的环境,wpa_supplicant.conf配置内容如下:

 1:  ctrl_interface=/var/run/wpa_supplicant 
 2:  ctrl_interface_group=0 
 3:  eapol_version=2 
 4:  ap_scan=0
 5:  
 6:  #后面的“{”不能换行,否则提示语法错误 
 7:  network={ 
 8:    key_mgmt=IEEE8021X 
 9:    eap=MD5 
10:    identity="用户名" 
11:    password="密码" 
12:    eapol_flags=0 
13:  } 
14:  #或者(因为实际上EAP协议使用的是MD5认证算法) 
15:  network={ 
16:    key_mgmt=IEEE8021X 
17:    identity="用户名" 
18:    password="密码" 
19:    phase1="auth=MD5" 
20:    phase2="auth=PAP password=密码" 
21:    eapol_flags=0 
22:  } 
23:  


配置好之后就可以使用下面的方式登录了(我的网卡是vr1):

1:  wpa_supplicant -i vr1 –D wired -c /etc/wpa_supplicant.conf –B 
2:  sleep 1 
3:  dhclient vr1 

值得注意的是:拨号之后应该等一下,然后使用dhclient(或者dhcpcd)重新自动获取ip地址,否则就是拨号成功,但是ip没有变化。 

由于我的系统是作为服务器,所以这里需要在启动时自动拨号,然后获取ip地址,所以在rc.conf中增加了下面语句:

1:  background_dhclient_vr1="YES"   # Start dhcp client on vr1 in the background. 
2:  ifconfig_vr1="dhcp"             # Config dhcp client on vr1 
background_dhclient_vr1可以让系统启动时,不用等待vr1的dhcp获取到ip,事实上启动时到拨号前是获取不到ip的,所这样就可以节约系统启动时间。

在rc.local中增加拨号及获取ip的语句:
1:  wpa_supplicant -i vr1 –D wired -c /etc/wpa_supplicant.conf –B 
2:  sleep 1 
3:  dhclient vr1 


此外还需要用wpa_cli命名,使用方法如下:

1:  wpa_cli -i vr1 status  #Show status
2:  wpa_cli -i vr1 logoff  #Set ``logoff'' state.
3:  wpa_cli -i vr1 logon   #Set ``logon'' state.
4:  wpa_cli -i vr1 terminate  #Force wpa_supplicant to terminate.

关于调试:
      在初次使用时,可以在wpa_supplicant中使用-d命令(不使用-B)来查看拨号的状态,之前我就是没有写账号前的区号导致拨号始终通不过(CTRL_EVENT_EAP_FAILURE EAP authentication failed),通过调试信息看出是账号错误的!

有关对网卡进行自启动的dhcp配置(ifconfig_vr0),可以参见FreeBSD的文档(Online:http://www.FreeBSD.org/doc/zh_CN.GB2312/books/handbook/network-dhcp.html
background_dhclient的详细信息可以使用man rc.conf查看

你可能感兴趣的:(服务器,Authentication,FreeBSD,NetWork,border,interface)