安装openssl:
sudo apt-get install openssl sudo apt-get install libssl-dev build-essential zlibc zlib-bin libidn11-dev libidn11
下载wpa_supplicant
wget http://hostap.epitest.fi/releases/wpa_supplicant-2.0.tar.gz tar -xzvf wpa_supplicant-2.0.tar.gz cd wpa_supplicant-2.0 cd wpa_supplicant vi .config
粘贴以下内容保存
#.config # # Uncomment following two lines and fix the paths if you have installed openssl # in non-default location #CFLAGS += -I/usr/local/openssl/include #LIBS += -L/usr/local/openssl/lib # Driver interface for Host AP driver #CONFIG_DRIVER_HOSTAP=y # Driver interface for Agere driver #CONFIG_DRIVER_HERMES=y # Change include directories to match with the local setup #CFLAGS += -I../../hcf -I../../include -I../../include/hcf #CFLAGS += -I../../include/wireless # Driver interface for Prism54 driver # (Note: Prism54 is not yet supported, i.e., this will not work as-is and is # for developers only) #CONFIG_DRIVER_PRISM54=y # Driver interface for ndiswrapper #CONFIG_DRIVER_NDISWRAPPER=y # Driver interface for Atmel driver #CONFIG_DRIVER_ATMEL=y # Driver interface for Broadcom driver #CONFIG_DRIVER_BROADCOM=y # Example path for wlioctl.h; change to match your configuration #CFLAGS += -I/opt/WRT54GS/release/src/include # Driver interface for Intel ipw2100/2200 driver #CONFIG_DRIVER_IPW=y CONFIG_DRIVER_MADWIFI=y # Change include directories to match with the local setup CFLAGS += -I../madwif CONFIG_DRIVER_WEXT=y # Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) #CONFIG_DRIVER_BSD=y #CFLAGS += -I/usr/local/include #LIBS += -L/usr/local/lib # Driver interface for Windows NDIS #CONFIG_DRIVER_NDIS=y #CFLAGS += -I/usr/include/w32api/ddk #LIBS += -L/usr/local/lib # For native build using mingw #CONFIG_NATIVE_WINDOWS=y # Additional directories for cross-compilation on Linux host for mingw target #CFLAGS += -I/opt/mingw/mingw32/include/ddk #LIBS += -L/opt/mingw/mingw32/lib #CC=mingw32-gcc # Driver interface for development testing #CONFIG_DRIVER_TEST=y # Driver interface for wired Ethernet drivers #CONFIG_DRIVER_WIRED=y CONFIG_IEEE8021X_EAPOL=y # EAP-MD5 (automatically included if EAP-TTLS is enabled) CONFIG_EAP_MD5=y # EAP-MSCHAPv2 (automatically included if EAP-PEAP is enabled) CONFIG_EAP_MSCHAPV2=y # EAP-TLS CONFIG_EAP_TLS=y # EAL-PEAP CONFIG_EAP_PEAP=y # EAP-TTLS CONFIG_EAP_TTLS=y # EAP-GTC CONFIG_EAP_GTC=y # EAP-OTP CONFIG_EAP_OTP=y # LEAP CONFIG_EAP_LEAP=y # PKCS#12 (PFX) support (used to read private key and certificate file from # a file that usually has extension .p12 or .pfx) CONFIG_PKCS12=y # Include control interface for external programs, e.g, wpa_cli CONFIG_CTRL_IFACE=y
编译与安装:
make make install
配置并连接路由器:
#! /bin/sh - insmod /etc/Wireless/RT2870STA/mt7601Usta.ko wlan_no="ra0" echo Please choose WiFi connect mode echo "(1,no_pass),(2,wpa_psk),(3,wpa2_psk)" read conn_mod if [ "$conn_mod" = "1" ] then #1.1 get essid echo Welcom to no_pass mode! iwlist $wlan_no scan | grep ESSID echo Please choose a essid: read inputssid if [ `iwlist $wlan_no scan | grep $inputssid`x != "x" ] then echo "input ok!" #1.2 connect! iwconfig $wlan_no essid $inputssid dhclient $wlan_no fi echo done fi if [ "$conn_mod" = "2" ] then #2.1 copy wlan wpa psk config file to /etc/wpa_supplicant/ cp wpa_supplicant.wpa /etc/wpa_supplicant/wpa_supplicant.conf #2.2 get essid and password phrase echo Welcom to wpa_psk mode! iwlist $wlan_no scan | grep ESSID echo Please choose a essid: read inputssid if [ `iwlist $wlan_no scan | grep $inputssid`x != "x" ] then echo "input ok!" echo "please input your password:\c" read inputpass ph_pass=`wpa_passphrase $inputssid $inputpass | grep psk= | sed -n 2p | awk -F ‘=‘ ‘{print $2}‘` echo $ph_pass #2.3 modify /etc/wpa_supplicant/wpa_supplicant.conf sed -i "s/my_network/$inputssid/g" /etc/wpa_supplicant/wpa_supplicant.conf sed -i "s/\"secret_password\"/$ph_pass/g" /etc/wpa_supplicant/wpa_supplicant.conf #2.4 connect! wpa_supplicant -B -i $wlan_no -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf dhclient $wlan_no fi echo done fi if [ "$conn_mod" = "3" ] then #3.1 copy wlan wpa2 psk config file to /etc/wpa_supplicant/ cp wpa_supplicant.wpa2 /etc/wpa_supplicant/wpa_supplicant.conf #3.2 get essid and password phrase echo Welcom to wpa2_psk mode! iwlist $wlan_no scan | grep ESSID echo Please choose a essid: read inputssid if [ `iwlist $wlan_no scan | grep $inputssid`x != "x" ] then echo "input ok!" echo "please input your password:\c" read inputpass ph_pass=`wpa_passphrase $inputssid $inputpass | grep psk= | sed -n 2p | awk -F ‘=‘ ‘{print $2}‘` echo $ph_pass #3.3 modify /etc/wpa_supplicant/wpa_supplicant.conf sed -i "s/my_network/$inputssid/g" /etc/wpa_supplicant/wpa_supplicant.conf sed -i "s/\"secret_password\"/$ph_pass/g" /etc/wpa_supplicant/wpa_supplicant.conf #3.4 connect! wpa_supplicant -B -i $wlan_no -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf dhclient $wlan_no fi echo done fi
配置文件1(wpa_supplicant.wpa).
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 eapol_version=1 # ap_scan=2 was the one for me you may try 0 or 1 indstead of 2 ap_scan=2 fast_reauth=1 network={ ssid="my_network" proto=WPA key_mgmt=WPA-PSK pairwise=TKIP group=TKIP psk="secret_password" }
配置文件2(wpa_supplicant.wpa2)
ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 ap_scan=1 network={ ssid="my_network" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk="secret_password" }
ap脚本:
#! /bin/sh - # use ra0 as a gateway # use wlan0(rtl8192cu) as an AP wlan_gw_no="ra0" wlan_no="wlan0" ifconfig $wlan_no 172.16.0.1/16 sudo iptables -F iptables -t filter -F iptables -t nat -F iptables -t mangle -F gw=`ifconfig | awk ‘BEGIN{FS="\n";RS=""} NR==3 {print $2}‘ | awk ‘{print $2}‘ | awk -F ‘:‘ ‘{print $2}‘` #sudo iptables -t nat -A POSTROUTING -o $wlan_gw_no -j MASQUERADE sudo iptables -t nat -A POSTROUTING -o $wlan_gw_no -s 172.16.1.0/24 -j SNAT --to-source $gw iptables -nL -vv -t nat killall dnsmasq killall hostapd ifconfig $wlan_no 172.16.0.1/16 hostapd -B /etc/hostapd/hostapd.conf /etc/init.d/dnsmasq restart echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf echo 1 > /proc/sys/net/ipv4/ip_forward sleep 5 echo dhcp: ps -e | grep dns echo hosapd: ps -e | grep ap
结束
原文:http://www.cnblogs.com/shenerguang/p/4290922.html