基于linux的Hostap实现wifi热点分享

 

一、无线网卡信息查看

工具:ifconfig,WirelessTools
lspci          判断网卡型号
Ifconfig     可以看到是否有无线网卡硬件识别,一般为wlan0
ethtool     查看网卡驱动类型
iw list        命令查看是否支持AP模式

 

二、开源hostapd

如何开启AP模式,利用hostapd软件

1,  切换yum源()

1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件

[root@bogon~]# cd /etc/yum.repos.d/
[root@bogonyum.repos.d]# mkdir repo_bak
[root@bogonyum.repos.d]# mv *.repo repo_bak/
2.在CentOS中配置使用网易和阿里的开源镜像
到网易和阿里开源镜像站点下载系统对应版本的repo文件
[root@bo]#wget http://mirrors.aliyun.com/repo/Centos-6.repo
[root@bo]#wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
[root@bo]#ls

Centos-6.repo  CentOS-Base-163.repo  repo.bak

或者手动下载repo文件并上传到/etc/yum.repos.d/目录

3.清除系统yum缓存并生成新的yum缓存

[root@bogon yum.repos.d]# ls       # 列出/etc/yum.repos.d/目录下的文件
Centos-6.repo CentOS-Base-163.repo  repo.bak
[root@bogon yum.repos.d]# yum clean all     # 清除系统所有的yum缓存
[root@bogon yum.repos.d]# yum makecache     # 生成yum缓存
4.安装epel源
[root@bogon yum.repos.d]# yum list | grep epel-release
[root@bogon yum.repos.d]# yum install -y epel-release
5.使用阿里开源镜像提供的epel源
[root@bogon yum.repos.d]# 
wget -O /etc/yum.repos.d/epel-6.repohttp://mirrors.aliyun.com/repo/epel-7.repo

 

# 下载阿里开源镜像的epel源文件

6.再次清除系统yum缓存,并重新生成新的yum缓存

[root@bogon yum.repos.d]# yum clean all
[root@bogon yum.repos.d]# yum makecache

2,安装hostapd

 

1.Yum直接下载安装,有部分依赖

Downloading Packages:
(1/4): hostapd-2.6-7.el6.x86_64.rpm                                                                                                  
(2/4): libnl3-3.2.21-8.el6.x86_64.rpm                                                                                                
(3/4): openssl-1.0.1e-57.el6.x86_64.rpm                                                                                               
(4/4): openssl-devel-1.0.1e-57.el6.x86_64.rpm

                                                                                

                   2.下载源码

wget http://hostap.epitest.fi/releases/hostapd-2.6.tar.gz

http://w1.fi/releases/hostapd-2.6.tar.gz

                   编译安装

yuminstall libnl-devel      openssl-devel          #依赖库
tar -zxvf hostapd-2.0.tar.gz -C /usr/local/src
cd /usr/local/src/hostapd-2.0/hostapd
cp defconfig .config
make
make install

 

3,配置hostapd

修改文件/etc/hostapd/hostapd.conf
 
macaddr_acl=0                      # 可选,指定MAC地址过滤规则,0表示除非在禁止列表否则允许,#1表示除非在允许列表否则禁止,2表示使用外部RADIUS服务器;  
# accept_mac_file:指定允许MAC列表文件所在;  
# deny_mac_file:指定禁止MAC列表文件所在;  
auth_algs=1                        # 采用 OSA 认证算法  
ignore_broadcast_ssid=0  
wpa=3                              # 指定 WPA 类型  
wpa_key_mgmt=WPA-PSK             
wpa_pairwise=TKIP  
rsn_pairwise=CCMP  
wpa_passphrase=ap_password         # 连接 ap 的密码  
driver=nl80211                     # 设定无线驱动  
interface=wlan0                    # 接入点设备名称  
hw_mode=g               # 指定802.11协议,包括 a =IEEE 802.11a, 
                                                                          # b = IEEE 802.11b, g = IEEE802.11g  
channel=9                          # 指定无线频道  
ssid=ap_name                       # 连接 ap 的名字
运行hostapd /etc/hostapd/hostapd.conf 
4,hostapd报错
1.  可能是由于hostapd对网卡驱动不支持
2.  hostapd已经占用
3.  netmanager接管导致无法配置

 

三,dhcp服务

 

Dhcp-server安装
(1/5):        dhclient-4.1.1-53.P1.el6.centos.3.x86_64.rpm
(2/5):        dhcp-4.1.1-53.P1.el6.centos.3.x86_64.rpm               
(3/5):        dhcp-common-4.1.1-53.P1.el6.centos.3.x86_64.rpm               
(4/5):        dhcp-devel-4.1.1-53.P1.el6.centos.3.x86_64.rpm                   
(5/5):        portreserve-0.0.4-11.el6.x86_64.rpm

               

 

修改配置 (/etc/dhcp/dhcpd.conf)

option domain-name-servers211.161.45.222,10.141.146.10;        #dns 服务器  
default-lease-time 3600;                          # 最小租约 3600 秒  
max-lease-time 7200;                          # 最大租约 7200 秒  
log-facility local7;                                              
subnet 192.168.0.0 netmask 255.255.255.0{                        
   range  192.168.0.1 192.168.0.10;                          # ip 起始地址  
   option broadcast-address 192.168.0.255;                     # 广播地址  
   option routers 192.168.0.1;                # 网关 要写成这台机器的 wlan0 的ip  
}

启动dhcpd

 

 

四,配置ip转发

配置ip

ifconfig wlan0 192.168.0.1

 

#打开内核转发
echo "1" >/proc/sys/net/ipv4/ip_forward               
或者添加或修改:
vim /etc/sysctl.conf    
net.ipv4.conf.default.rp_filter = 1  
sysctl -p

使用 iptables 设置转发

iptables -t nat -I POSTROUTING -o eth0 -jMASQUERADE      
iptables -A FORWARD -s 192.168.1.0/24 -jACCEPT  
iptables -A FORWARD -d 192.168.1.0/24 -jACCEPT

 

第一条表示将通过本机的转发数据包从eth0(外网)这个网卡发出去,

另外两条表示只转发192.168.1.0/24这个网段过来的数据包,这个网段正好是wlan0其它设备连上本机以后分配的网段。

 

注意

Iptables默认添加到末尾,需要删除前面的reject

vim /etc/sysconfig/iptables
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited