Linux中Wi-Fi⽆线⽹络和AP⽆线热点配置教程0.Linux下的Wi-Fi配置
⽆线⽹络飞速发展的今天,许多设备都提供了连接⽆线⽹络的功能。
那么Linux下的wifi到底该怎么配置、连接呢??
开始配置之前,我们要说说iw家族。iw是linux下常⽤的wifi配置⼯具,⽹上有相应的库和源码。全名为wirelessTools。配置wifi模块,并连接相应的⽆线⽹络过程:主要使⽤iwpriv命令
(1)扫描可⽤的⽆线⽹络:
复制代码
代码如下:
iwlist wifi-name scanning
其中wifi-name为⽆线⽹卡的名字,⽐如⽹卡eth0就是系统默认的⽹卡名字, wifi-name可以⽤ifconfig查看,⼀般为ra0。(2)看扫描到的⽹络信息,按要连接的⽹络类型进⾏配置。以下为扫描到的⽹络:
复制代码
代码如下:
iwlist ra0 scanning
===>rt_ioctl_giwscan. 11(11) BSS returned, data->length = 1427
ra0 Scan completed :
Cell 01 - Address: C4:CA:D9:1D:9E:A0
Protocol:802.11b/g/n
ESSID:""
Mode:Managed
新还珠格格结局Frequency:2.412 GHz (Channel 1)
Quality=7/100 Signal level=-87 dBm Noise level=-82 dBm
Encryption key:off
Bit Rates:54 Mb/s
Cell 02 - Address: FC:75:16:A1:A9:16
Protocol:802.11b/g/n
ESSID:"jxj_rd"
中秋遇上国庆双节祝福语Mode:Managed
Frequency:2.452 GHz (Channel 9)
Quality=94/100 Signal level=-53 dBm Noise level=-92 dBm
Encryption key:on
Bit Rates:54 Mb/s
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
霍建华父女出游Group Cipher : TKIP
Pairwise Ciphers (2) : TKIP CCMP
Authentication Suites (1) : PSK
Cell 03 - Address: C4:CA:D9:02:2A:70
Protocol:802.11b/g/n
ESSID:""
Mode:Managed
Frequency:2.462 GHz (Channel 11)
Quality=83/100 Signal level=-57 dBm Noise level=-92 dBm
Encryption key:off
Bit Rates:54 Mb/s
Cell 04 - Address: 14:D6:4D:75:CA:9C
Protocol:802.11b/g/n
ESSID:"liangym"
Mode:Managed
Frequency:2.472 GHz (Channel 13)
Quality=100/100 Signal level=-27 dBm Noise level=-92 dBm
Encryption key:on
Bit Rates:54 Mb/s
IE: WPA Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
如上:ESSID项的值即为⽆线⽹络的名字,如上的“jxj_rd”等。如果值为空,说明在⽆线路由勾选了隐藏ESSID的选项。ESSID是很关键的,如果被隐藏了,也不是不能连接,⽽是需要破解,⽤到其他的⼯具,⾮常⿇烦。⾄于如何破解,不是本⽂叙述的内容,有兴趣的朋友可以⽹上搜索。
得到了⽹络的信息,接下来就是配置连接选项了。以连接"jxj_rd"为例,我们看看具体的过程:
(1)设置要连接的⽹络类型:
复制代码
代码如下:
iwpriv ra0 set NetworkType=Infra
(2)设置要连接的⽆线⽹络的安全模式:
复制代码
代码如下:
iwpriv ra0 set AuthMode=WPA2PSK
(3)设置⽹络加密⽅式:(CCMP即为AES)
宋丹丹母亲
复制代码
代码如下:
iwpriv ra0 set EncrypType=TKIP
(4)设置连接时的密码: ********为加密⽹络的密码
复制代码
代码如下:
iwpriv ra0 set WPAPSK=*******王源的家庭背景
(5)连接该⽹络:有两种⽅式:
A、⽤iwpriv命令
复制代码
代码如下:
iwpriv ra0 set SSID=jxj_rd
B、⽤iwconfig命令
复制代码
代码如下:
iwconfig ra0 essid jxj_rd
⾄此,如果密码正确,就可以连接上⽹络jxj_rd了。如果你不放⼼,可以⽤命令查看状态:
复制代码
iwpriv ra0 connStatus
当然,你也可以⽤iwconfig命令查看状态,这⾥不再赘述。
执⾏ iwlist 如果 Supported interface modes 的下有 AP 的话表⽰该⽹卡⽀持AP模式,可以创建⽆线热点。
⽐如我的⽆线⽹卡是Qualcomm Atheros AR9485 Wireless Network Adapter,Linux内核⾃带了驱动ath9k,⽀持创建AP⽆线热点。
下⾯我们就着重来讲⽆线热点的创建步骤:
1. 安装hostapd和dhcpd
复制代码
代码如下:
sudo apt-get install hostapd isc-dhcp-server
开机不需要启动这两个服务,建议把它们关掉:
复制代码
代码如下:
sudo update-rc.d -f hostapd remove
注释掉下⾯两个⽂件start on那⼀⾏:
复制代码
代码如下:
sudo nano /etc/f
sudo nano /etc/f
2. 配置hostapd和dhcpd
复制代码
代码如下:
sudo nano /etc/f
注意⾃⼰设置其中的⽆线热点名称ssid和认证密码wpa_passphrase.
复制代码
代码如下:
interface=wlan0
driver=nl80211
ssid=YOUR_AP_NAME
hw_mode=g
channel=10
macaddr_acl=0
auth_algs=3
wpa=2
wpa_passphrase=YOUR_AP_PASSWORD
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=TKIP CCMP
sudo nano /etc/f
在末尾加⼊以下内容:
复制代码
subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.2 192.168.0.10;
option routers 192.168.0.1;
option domain-name-servers 192.168.0.1,180.76.76.76,8.8.8.8;
}
其中180.76.76.76是百度公共DNS服务器,8.8.8.8则是Google的DNS服务器.
在⾃⼰的家⽬录下创建⼀个hostapd⽬录,⾥⾯新建启动和关闭脚本,⽐如我这样写(注意把⾥⾯eechen换成你的⽤户名):
复制代码
代码如下:
nano /home/eechen/hostapd/ap-start.sh
复制代码
代码如下:
#!/bin/bash
# 开启内核IP转发
bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
# 开启防⽕墙NAT转发(如果本机使⽤eth0上⽹,则把ppp0改为eth0)
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# 关闭NetworkManager对⽆线⽹卡的控制
nmcli nm wifi off
# 设置并启动⽆线⽹卡
ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
# 解锁⽆线设备,可以⽤rfkill list查看解锁结果.
rfkill unblock wlan
# 睡眠6秒,待rfkill解锁⽣效
sleep 6s
# 启动dhcpd和hostapd,如果hostapd⽆法启动请查看⽇志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd" nohup hostapd /etc/f >/home/eechen/hostapd/hostapd.log 2>&1 &
dhcpd wlan0 -pf /var/run/dhcpd.pid
ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"
nano /home/eechen/hostapd/ap-stop.sh
复制代码
代码如下:
#!/bin/bash
killall hostapd dhcpd
bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
ifconfig wlan0 down
3. 启动hostapd和dhcpd
在桌⾯新建两个启动器(快捷⽅式),⾥⾯分别填⼊:
复制代码
代码如下:
gksu /home/eechen/hostapd/ap-start.sh
gksu /home/eechen/hostapd/ap-stop.sh
因为脚本需要root⽤户⾝份执⾏,所以需要⽤gksu运⾏。
注意:如果你开启了ufw防⽕墙,ufw默认是禁⽌转发的,这会导致防⽕墙NAT转发失效,这时应该设置允许转发:
复制代码
sudo nano /etc/default/ufw 将 DEFAULT_FORWARD_POLICY 设为 ACCEPT
然后重启ufw即可:
复制代码山寨exo
代码如下:
sudo service ufw restart
之后运⾏启动器即可启动和关闭AP⽆线热点。
4. ⽤wireshark监控经过wlan0的通信
安装wireshark(其中 eechen改为你的⽤户名):
复制代码
代码如下:
sudo apt-get install wireshark
sudo chgrp eechen /usr/bin/dumpcap
sudo chmod 750 /usr/bin/dumpcap
sudo setcap cap_net_raw,cap_net_admin+eip /usr/bin/dumpcap
Alt+F2运⾏wireshark,选择⽹络接⼝wlan0,Filter⾥输⼊kie contains mail.qq
然后⼿机端登录⽹页QQ邮箱,在WireShark即可查看和获取QQ邮箱登录的Cookie,如图所⽰:
附:
查看连接wlan0⽹络的客户端:
复制代码
代码如下:
sudo arp
返回IP地址和MAC硬件地址和⽆线接⼝名.
复制代码
代码如下:
iw dev wlan0 station dump
能显⽰收发包和字节数等.
查看⽹络接⼝速度:
复制代码
代码如下:
sar -n DEV 1