参见:https://blog.csdn.net/qq_20448859/article/details/54131187

用Hostapd创建可用的软AP

1. 介绍

  hostapd是一款运行在用户态软件,能够为认证服务器提供管理接入点。下面是无线网卡常见的工作模式及其作用。

工作模式 作用
Master(AP) 成为无线接入点提供无线接入服务
Managed(STA) 作为客户端连接其他无线接入点
Monitor 监听附近所有无线流量
Ad-hoc 多台计算机直接相连

  显然,平时我们的计算机的无线网卡一般工作在Managed模式,而我们平常使用的路由器的无线网卡则是一般工作在Master模式。在本篇文章中,我们借助hostapd让我们计算机的无线网卡更换模式,使其工作在Master模式,这样我们的计算机就能够成为一个无线接入点从而为其他设备提供服务。

2. 安装配置

  • Ubuntu 14.04
  • hostapd v2.6
  • isc-dhcp-server

hostapd可通过一下命令安装,获取到的是最新版本2.6。

$ sudo apt-get install hostapd

想要获取以前的版本或是想要详细了解hostapd,请浏览以下地址,下载后编译(2.6版本没有创建mon.wlan0接口,如果有需要用到这个接口的需要下载以前的版本)。

http://w1.fi/releases/
http://w1.fi/cgit/hostap/plain/hostapd/README

isc-dhcp-server我的系统自带了,没有的可以按以下命令下载。

$ sudo apt-get install isc-dhcp-server

3. 流程

  1. 开启hostapd让电脑的无线网卡工作在Master模式,开启后,其他设备能够搜索到该热点,但由于无法获取到IP地址仍然无法连接。
  2. 根据实际情况,选择采用网桥方式或是DHCP服务器加上NAT来使该AP可用。
  3. 如果选择的是网桥方式,那么IP地址将会由电脑实际连接的外网分配,并且连接的终端可以直接发送数据到外网。热点连上了就可以直接用了,且和计算机的有线端同处于一个子网。
  4. 如果选择的是DHCP服务器加NAT的方式,那么开启DHCP服务器,就能够连上热点,但是无法连到网络。通过配置NAT,让终端发出的数据包的IP修改为公网IP,即可连上网络。

4.创建软AP

  启动hostapd即可创建软AP,配置好hostapd的配置文件hostapd.conf,然后在终端输入以下命令即可启动,其中xx/xxx是你存放对应配置文件的位置。

$ sudo hostapd xx/xxx/hostapd.conf
  • 1

  关于配置文件示例及更多说明请浏览以下地址,也可以在/usr/share/doc/hostapd/example目录下查看。

http://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
  • 1

  下面是我自己简单配置的一个文件,仅供参考。

#无线设备名称,基本都是wlan0,可用iwconfig命令查看
interface=wlan0#使用的网桥名称,如果是用DHCP+NAT方式可忽略此行
#bridge=br0  #hostapd 0.6.8或者更高版本唯一选择
driver=nl80211#终端看到的wifi名称,请自行修改
ssid=mywifi#指明要选用的无线传输协议,这里表示使用802.11g
hw_mode=g#802.11b/g都至多只有三条互不干扰的信道,即1,6,11,一般填这三个其中一个
channel=1 #验证身份的算法,1表示只支持wpa,2表示只支持wep,3表示两者都支持,wep已经被淘汰了,请不要使用。
auth_algs=1#wpa加密方式,1代表支持wpa,2代表支持wap2,3代表两者都支持。
wpa=1#wifi密码,请自行修改
wpa_passphrase=123456789#对所有用户进行同样的认证,不进行单独的认证,如果需要,请设置为WPA-EAP。
wpa_key_mgmt=WPA-PSK#控制支持加密数据的秘钥,CCMP比TKIP更强
wpa_pairwise=CCMP

  如果开启的时候,提示interface wlan0 wasn’t start,是因为你的wlan设备没有打开的原因。无线设备一般有三种状态,使用中,软锁定和硬锁定。其中软锁定就是关闭但可被软件激活,硬锁定则不可以。 
  输入下面两句命令,先关闭wifi,再软锁定wlan,最后重新打开hostapd即可。

sudo nmcli nm wifi off
sudo rfkill unblock wlan

5. 网桥

  我们可以在我们的计算机创建一个网桥,两端分别是以太网接口(我的是eth0)和无线网接口(我的是wlan0)。这样,连接到wlan0的设备能够被eth0端接口的网络服务。这种结构比较简单,通过wlan0连接的设备相当于直接连接到外部网络,与提供AP服务的计算机eth0在同一个子网。 
  但是,这同时也要求外部网络能够服务你的无线设备,如果你是通过拨号或是需要认证上网或是其他通过DHCP只能拿到一个IP地址的方式都不行。 
  

6.DHCP+NAT

1) DHCP

  开启DHCP服务器是为了让终端能够获取到IP地址,分配的地址是私有的,因此只要不与公有的地址相冲突就可以,RFC 1918 为私有网络预留出了三个IP 地址块,上述三个范围内的地址不会在因特网上被分配,我们可以放心使用。

A 类:10.0.0.0~10.255.255.255
B 类:172.16.0.0~172.31.255.255
C 类:192.168.0.0~192.168.255.255

  我们需要配置/etc/dhcp/dhcp.conf文件,添加要分配的网段,指明分配的地址范围,默认网关和DNS服务器地址。在文件最后我们添加以下内容。注意要分配的网段不能和主机eth0所处的网段相同。(我的主机处在192.168.0.1/24,所以我下面挑的是10.0.0.0/8这段地址。

subnet 10.0.0.0 netmask 255.0.0.0 {range 10.0.0.2 10.0.0.10;option routers 10.0.0.1;option domain-name-servers 8.8.8.8;
}

   然后我们配置无线接口wlan0所处的网段,注意要跟上面的配置一致。

$ sudo ifconfig wlan0 10.0.0.1 netmask 255.0.0.0

  最后开启dhcp服务器即可,连上热点会从10.0.0.2到10.0.0.10之间分配一个ip地址给客户端。

$ sudo service isc-dhcp-server start

2) NAT

  NAT一般分为三类,分别是SNAT,DNAT以及PNAT。

  • SNAT,Source Network Address Translation 
    源地址转换,能够为内部客户端代理访问外部网络。目标地址和端口不变,源地址修改成对外可见的公网地址,端口随机生成,并将映射记录在NAT表中。当数据返回时,根据端口将目的地址修改成对应表项的IP地址和端口,这样可以解决多个设备共享一个公有IP上网的问题。
  • DNAT,Destination Network Address Translation 
    目标地址转换,用来隐藏真实服务器的地址。接收到数据时,源地址和端口不变,对目的地址和端口进行修改。当接收到真实服务器发送给请求的客户端回应时,对源目的地址和端口进行修改。
  • PNAT , Port Network Address Translation 
    端口地址转换,用来将不同服务统一成一个公网地址,对应不同的端口。接收到数据时,根据目的地址和目的端口将其修改成对应真实服务的地址和端口,并记录在表项中。当接收到真实服务器发送给请求的客户端回应时,根据表项记录对源目的地址和端口进行修改。

在这里,我们要用到的是SNAT,这可以借助iptables工具来实现。iptables能够帮助我们配置管理linux内部防火墙。我们首先打开转发功能,然后将192.168.0.1/24网段的地址都修改为eth0的出口地址。

$ sudo sysctl net.ipv4.ip_forward=1
$ sudo iptables -t nat -A POSTROUTING -s 10.0.0.1/8 -o eth0 -j MASQUERADE

参见:https://blog.csdn.net/nuaa_llf/article/details/54747806

本实验的目的是在Linux Mint18的环境下安装hostapd来实现802.1x,其中mint作为路由的功能,即将hostapd设置为radius客户端。而要入网的是一部android手机,认证的radius服务器是运行在centos6.8上的freeradius。

【hostapd简介】

hostapd 是用户控件的守护进程用于无线接入点(AP)和授权服务器(authentication servers)。它实现了IEEE802.11的AP管理,IEEE802.1X/WPA/WPA2/EAP授权,RADIUS 客户端,EAP服务器和RADIUS 授权服务器,目前最新版本支持Linux系统(HOST AP,madwifi,mac80211-based驱动)和FreeBSD(net80211)。

【hostapd安装】

首先需要安装dnsmasq和hostapd,这里可以选择从仓库安装或者从源码安装。

sudo apt-get install dnsmaq hostapd

或者下载hostapd-x.y.tar.gz,解压并修改deconfig为.config: cd hostapd-x.y/hostapd && cp defconfig .config。如果你的系统里是libnl3.2,就设置CONFIG_LIBNL32=y并make。

【hostapd配置】

在运行hostapd之前需填写配置文件hostapd.conf,这里我们将它设置为radius客户。细节如下:

#open 802.1x authenticate

interface=wlp3s0f0                                              //网卡接口名称,用ifconfig获得
          driver=nl80211
          ssid=My_WiFi
          channel=10
          hw_mode=g
          ignore_broadcast_ssid=0
          auth_algs=1
          wpa=1

ieee8021x=1
          auth_server_addr=192.168.1.10                        //radius server的ip地址
          auth_server_port=1812
          auth_server_shared_secret=testing123           //预共享的秘密字

wpa_key_mgmt=WPA-EAP
          wpa_pairwise=TKIP

【hostapd运行】

在启动hostapd之前需要对mint的NetworkManager进行设置,用两个命令——nmcli和rfkill:

新版本nmcli用法:sudo nmcli radio wifi off (关闭wifi使其托管),然后可先用rfkill list观察系统对网卡AP功能的限制情况,如本系统启动后如图:

这里可以看到0和2都将wlan功能进行了限制,因此rfkill unblock 0&&rfkill unblock 2解除限制,使状态如下图,否则无法hostapd正常打开。

接下来就可以用sudo ./hostapd  [path for hostapd.conf]开启hostapd,并用sudo ifconfig wlan0 [gateway ip] netmask 255.255.255.0设置mint网关ip地址。启动后如下图所示:

最后设置dnsmasq进行ip地址的分配,这里不作详细介绍。

【后续工作】

再到centos上安装freeradius,这里忍不住称赞freeradius这个软件,是我目前遇到的开源的radius里做的最好的,支持各种认证方法。默认安装的话,在/etc/raddb目录里,有它的配置文件,在users里设置用户名称和密码,在client.conf里设置radius客户的ip为mint ap的地址,并填写预共享秘密字,最后在eap.conf里选择需要使用的认证方法。这里也不作详细介绍。

最后展示一张在mint AP 上用wireshark截图的认证过程,从中可以看出认证完成并允许入网。

hostapd 安装 802.1X认证相关推荐

  1. 802.1X认证技术与MAC认证技术

    一.介绍 802.1X技术作为局域网一种普遍端口(二层设备端口)接入控制机制在以太网中被广泛应用,主要用以解决以太网内认证和安全方面的问题 MAC认证是一种基于端口和MAC地址对于用户的网络访问控制权 ...

  2. 无线路由器上安装OpenWRT,在需要标准802.1x认证的网络中无线上网

    学校一直用H3C客户端上网,因此无法直接使用无线路由器.后来去一些论坛时常看见DD-WRT和OpenWrt这两个词,也初步了解到wpa_supplicant.njit-client.mentohust ...

  3. Windows Server 2008 R2Cisco2960 配置Radius服务 实现802.1x认证 实战

    实战配置Windows Server 2008 R2 Radius服务 与Cisco 2960 实现 802.1x认证 实验拓扑 1.Radius服务器 安装 dc  域名 wjl.com ,和ca  ...

  4. server2012 AD域 radius 802.1x认证

    server2012 AD域 radius 802.1x认证 原创泠泠七弦2020-11-25 17:40:06 保姆级教程:WINserver2012 AD域 radius 802.1x认证. 觉得 ...

  5. 无线802.1x认证服务器,TP-Link无线路由器+Radius认证服务器实现无线终端802.1X认证...

    本文档详细介绍了如何在windows 2008上安装CA.NPS并配置NPS为radius服务器,实现无线客户端基于802.1X认证的步骤,其中还介绍了家用无线路由器Radius相关一些配置方法. 实 ...

  6. 锐捷服务器无线认证配置,【WLAN从入门到精通之对接案例】配置802.1X认证示例_Web(锐捷SAM服务器)...

    原标题:[WLAN从入门到精通之对接案例]配置802.1X认证示例_Web(锐捷SAM服务器) 802.1X认证简介 802.1X认证是网络接入控制方案(NAC)中的一种,它是基于端口对用户的网络访问 ...

  7. H3C 5130及华为5700交换机的802.1X认证

    实验目的: 对H3C及华为交换机端口进行多VLAN设置,根据需求设置业务VLAN及隔离VLAN:vlan7为业务VLAN,为企业内部提供日常业务访问及Internet访问:vlan8为隔离VLAN,防 ...

  8. openwrt 认证收费_OpenWrt下进行标准802.1X认证

    学校网络使用的是标准802.1X认证(非H3C.锐捷等私有认证),虽然没有限制路由的使用,但是原生支持802.1X认证的路由器是少之又少,这给我们的使用带来了很大的不便. 很久就对OpenWrt.DD ...

  9. 华为交换机802.1x认证配置

    一.拓扑: 二.简介: 本篇主要介绍华为交换机设备配合Windows server 2019配置的802.1x+NPS协同做的有线网络认证(可跟做).现有的华为57xx交换机配置:认证模板.radiu ...

最新文章

  1. C# WebRequest 基础连接已关闭 连接意外关闭
  2. push_heap算法 (即满足max-heap条件,最大值在根节点)
  3. php调用mysql查询结果_php - 在php脚本中处理select查询结果集
  4. 使用EF Core操作层次结构数据
  5. 计算机类有电子商务类,电子商务类专业有哪些-电子商务类专业名单汇总
  6. MATLAB深度学习网络包 Alexnet / Googlenet / Vgg19
  7. JAVA怎么打开pkg_PKG文件在电脑上怎么打开!(普通PC)
  8. 代理模式和装饰者模式区别
  9. 准确生成电信、联通、移动IP地址段
  10. 用友u8服务器修改ipv4,如何修改用友服务器ip地址
  11. 外部中断控制LED灯开关
  12. 如何零基础制作一款自己的游戏!(一)
  13. TB6612使用说明,使用方法,引脚图,实物图。
  14. oracle bom递归查询,求多阶BOM查询代码
  15. 李航统计学习方法----感知机章节学习笔记以及python代码
  16. java(某人在玩游戏的时候输入密码112233后成功进入游戏(输错3次则被强行退出),要求用程序实现密码验证的过程。)
  17. FreeBSD开启SSH远程登录
  18. 计算机网络在铁路信号中的应用,网络科技在铁道信号的运用
  19. Unity中鼠标的交互事件
  20. 神话还是谎言! 真实的GT-3是这样的!道翰天琼认知智能API接口平台为您揭秘。

热门文章

  1. 基于XAML语言的“合住处理”页面
  2. 周志华教授关于深度学习的专访
  3. Daily English Dictation
  4. Matrix矩阵计算
  5. 【学习笔记62】判断数据类型的方法
  6. Linux基本命令——修改静态IP
  7. 用友汽车通过科创板注册:预计年营收超6亿 拟募资5.6亿
  8. 用Illustrator制作荷花的矢量图
  9. 多目标柔性车间调度丨NSGA-II:以算例MK01为例
  10. 树莓派Arduino小车打开Opencv摄像头