通过 Hostapd 进行 WIFI 热点共享上网

操作系统:Debian Gnu/Linux Jessie

内核: linux-image-4.3.0-0.bpo.1-amd64

网卡:腾达(Tenda) W311M 150M Mini无线USB网卡

最近发现自己的Debian之前可以使用GNOME3下的networkmanager进行WIFI共享上网功能因为内核升级导致无法使用。无奈只好再次通过Hostapd来进行WIFI热点设置,同时为了更块的DNS解析,本次顺便也在本地安装了dnsmasq软件实现了本地化的DNS查询服务,成功恢复了我的小本本作为热点的能力。总结方法如下:

1、准备环境:

(adsbygoogle = window.adsbygoogle || []).push({});

1.1执行vi /etc/apt/sources.list,并添加如下源地址:

deb http://ftp.cn.debian.org/debian/ jessie-backports main contrib non-free

1.2安装最新内核,及相关软件组件包,避免编译Hostapd出错,依次执行如下命令:

apt-get update
apt-get install linux-image-4.3.0-0.bpo.1-amd64
apt-get install linux-headers-4.3.0-0.bpo.1-all-amd64
apt-get install pkg-config libssl-dev  gettext openssl hostapd
apt-get install libnl-genl-3-dev libnl-genl-3-200 libnl-3-dev libnl-3-200

2.编译、配置hostapd软件:

2.1 进入http://w1.fi/hostapd/网站下载hostapd-2.5.tar.gz文件

2.2 执行命令tar -zxvf hostapd-2.5.tar.gz对hostapd-2.5.tar.gz进行解压,当前目录下将生成hostapd-2.5文件夹,使用cd hostapd-2.5进入该文件夹,并执行cp defconfig .config命令,使用vi .config命令对该文件进行修改,修改内容如下:

# Use libnl v2.0 (or 3.0) libraries.
CONFIG_LIBNL20=y
# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored)
CONFIG_LIBNL32=y
# IEEE 802.11n (High Throughput) support
CONFIG_IEEE80211N=y

之后使用 make && make install 命令进行编译。系统将在 /usr/local/bin 目录下生成两个文件名为 hostapd、hostapd_cli 的可执行文件。

2.3 使用命令 cp hostapd.conf /etc/hostapd/ 将 hostapd 配置文件复制到 /etc/hostapd/ 文件夹下,并将相关字段修改为如下内容:

interface=wlan1
driver=nl80211
ssid=CMSS
hw_mode=g
channel=7
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
ieee80211n=1
ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40]
wpa=2
wpa_passphrase=debian.cn
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

2.4 使用vi /etc/default/hostapd对该文件进行编辑,修改内容如下:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

2.5 使用vi /etc/init.d/hostapd对hostapd服务脚本进行编辑,修改内容如下:

DAEMON_SBIN=/usr/local/bin/hostapd

并在start)下一行添加如下内容:

sed -i '/\[keyfile\]/a unmanaged-devices=mac:c8:3a:35:cb:18:e0' /etc/NetworkManager/NetworkManager.conf
ip addr add 192.168.11.1/24 dev wlan1
echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sleep 2

在stop)下一行添加如下内容:

sed -i '/^unmanaged-devices=mac:c8:3a:35:cb:18:e0/d' /etc/NetworkManager/NetworkManager.conf
echo "0" >/proc/sys/net/ipv4/ip_forward
ip addr del 192.168.11.1/24 dev wlan1
iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE
sleep 2

在reload)下一行添加如下内容:

sed -i '/^unmanaged-devices=mac:c8:3a:35:cb:18:e0/d' /etc/NetworkManager/NetworkManager.conf
echo "0" >/proc/sys/net/ipv4/ip_forward
ip addr del 192.168.11.1/24 dev wlan1
iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE
sed -i '/\[keyfile\]/a unmanaged-devices=mac:c8:3a:35:cb:18:e0' /etc/NetworkManager/NetworkManager.conf
ip addr add 192.168.11.1/24 dev wlan1
echo "1" >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sleep 2

使用命令systemctl daemon-reload对脚本文件进行重新配置。

3.安装、配置dnsmasq软件:

3.1 使用命令apt-get install dnsmasq安装dnsmasq软件。

3.2 使用vi /etc/dnsmasq.conf命令对该文件进行修改,修改内容如下:

resolv-file=/etc/resolv.dnsmasq.conf
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
server=/google.com/8.8.8.8
listen-address=127.0.0.1,192.168.11.1
dhcp-range=192.168.11.50,192.168.11.150,12h
dhcp-option=3,192.168.11.1
dhcp-option=6,192.168.11.1
cache-size=1024
conf-dir=/etc/dnsmasq.d

3.3 使用命令vi /etc/resolv.dnsmasq.conf编辑该文件,并添加如下内容:

nameserver 114.114.114.114
nameserver 223.5.5.5
nameserver 223.6.6.6

3.4 使用命令vi /etc/resolv.conf编辑该文件,并添加如下内容:

nameserver 127.0.0.1

4、启动相关服务:

4.1.分别使用命令:

systemctl enable dnsmasq.service
systemctl disable hostapd.service

开启和关闭两项服务,之后在需要使用热点模式时使用命令:

systemctl start hostpad.serive

进行开启,用户即可使用热点名为 CMSS, 密码为 debian.cn, 网关地址和DNS均为 192.168.11.1 的 80211N 协议无限热点进行上网连接啦!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

OVN实战二之Overlay实现

前言 上一章介绍了GNS3的使用以及OVN系统的架构,搭建了实验环境,阐述了OVN各个进程的用途、彼此之间的关系,以及产生的日志(OVN实战一之GNS3操作指南...

406120
来自专栏张善友的专栏

保护ASP.NET 应用免受 CSRF 攻击

CSRF是什么?   CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/se...

28970
来自专栏北京马哥教育

原创投稿 | 防火墙及NAT服务

一、简介 1. 关于防火墙 防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件和软件防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网...

56490
来自专栏Bug生活2048

Python优雅的操作Exchange邮箱——exchangelib模块使用介绍

需求很简单,只需要登录自己的Exchange邮箱,然后遍历所有邮件,有附件的就下载下来。

75120
来自专栏Java开发者杂谈

关于安装多个版本jdk之后java -version不正确的问题

问题描述: 今天突然想写一个socket通信的小应用,分别采用BIO、NIO、AIO的方式来实现,来复习前面看的关于TCP/UDP通信的知识。于是乎在原来安装了...

33070
来自专栏Golang语言社区

高并发服务器的设计--连接池的设计

高并发服务器需要有一些池的设计,如内存池,连接池,数据库连接池。 池(pool)的设计主要考虑到一些资源的频繁申请和释放,尤其是在高并发的服务器中,几万甚至几十...

31540
来自专栏大内老A

谈谈分布式事务之二:基于DTC的分布式事务管理模型[上篇]

通过上一篇的介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事务管...

20670
来自专栏Java后端技术

解决Maven项目pom.xml文件报xxx\target\classes\META-INF\MANIFEST.MF (系统找不到指定的路径。)问题

最近自己在公司项目修改一些代码以后,出现如题的错误,后来各种Google等,最终找到了解决办法。

11310
来自专栏小文博客

《Python疑难杂症》——(一)PIP安装模块下载慢或者无法下载

正式入坑Python,遇到的几点疑难杂症和搜索到的解决方案在这里给大家分享下。希望能帮到一些初学者,你也可以在文章下面评论你遇到的Python问题以及解决方案,...

13710
来自专栏我就是马云飞

Android组件化搭建

组件化开发 组件化开发这个名词并不陌生,但真正什么才是组件化开发,大家在网上搜可以查看很多相应的文章,我概念中,模块化的开发,就是把很多模块独立出来,基础模块,...

26670

扫码关注云+社区

领取腾讯云代金券