基于linux的Hostap实现wifi热点分享
一、无线网卡信息查看
工具:ifconfig,WirelessTools
lspci 判断网卡型号
Ifconfig 可以看到是否有无线网卡硬件识别,一般为wlan0
ethtool 查看网卡驱动类型
iw list 命令查看是否支持AP模式
二、开源hostapd
如何开启AP模式,利用hostapd软件
1, 切换yum源(https://www.cnblogs.com/renpingsheng/p/7845096.html)
1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件
[root@bogon~]# cd /etc/yum.repos.d/
[[email protected]]# mkdir repo_bak
[[email protected]]# 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