Linux中Wi-Fi无线网络和AP无线热点的配置教程
程序员文章站
2022-04-08 19:10:02
Linux上拥有WirelessTools无线网管理工具,在建立Wi-Fi热点之前我们需要先确认好无线网环境的支持情况,以下我们就来详细看一下Linux中Wi-Fi无线网络和AP无线热点的配置教程:... 16-07-04...
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/init/isc-dhcp-server.conf
sudo nano /etc/init/isc-dhcp-server6.conf
2. 配置hostapd和dhcpd
复制代码
代码如下:sudo nano /etc/hostapd/hostapd.conf
注意自己设置其中的无线热点名称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/dhcp/dhcpd.conf
在末尾加入以下内容:
复制代码
代码如下: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/hostapd/hostapd.conf >/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即可:
复制代码
代码如下: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里输入http.cookie contains mail.qq.com
然后手机端登录网页qq邮箱,在wireshark即可查看和获取qq邮箱登录的cookie,如图所示:
右键点击cookie项把value复制出来,然后用firefox访问站点https://w.mail.qq.com/,alt+c激活 original cookie injector( greasemonkey),弹出输入框wireshark cookie dump,把cookie项的value粘贴到里面,然后点ok确定并刷新页面即可登录qq邮箱。或者你使用tamper data这个firefox扩展在提交时修改cookie值也是可以的。
附:
查看连接wlan0网络的客户端:
复制代码
代码如下:sudo arp
返回ip地址和mac硬件地址和无线接口名. 复制代码
代码如下:iw dev wlan0 station dump
能显示收发包和字节数等. 查看网络接口速度:
复制代码
代码如下:sar -n dev 1
下一篇: 浅谈管理linux开机自启服务的一些技巧