1、环境介绍

  1. [root@localhost ~]# cat /etc/redhat-release
  2. CentOS Linux release 7.5. (Core)
  3. [root@localhost ~]# uname -r
  4. 3.10.-.el7.x86_64
  5. [root@localhost ~]# rpm -aq|grep -E "wireless-tools|usbutils"
  6. wireless-tools--.el7.x86_64
  7. usbutils--.el7.x86_64

2、网卡信息(一个MT7601U的USB无线网卡)

  1. [root@test ~]# lsusb
  2. ...
  3. Bus Device : ID 148f: Ralink Technology, Corp. MT7601U Wireless Adapter

这里特别说明一下:如果你是使用的usb无线网卡,那么你很可能遇到服务器识别不了的情况,因为服务器没有它的驱动程序(后面使用iwconfig或者iwlist都不会有无线网卡的输出),所以我们要先安装它对应的驱动程序,比如我这个MT7601U,百度搜索下载它的驱动程序,上传到服务器上,编译、安装,重启服务器,如果能成功识别是最好的,如果仍然不能识别的话,我们要考虑是不是服务器的内核版本或者其他的情况导致的,这时我们要利用好日志信息,比如:

  1. [root@test ~]# dmesg |grep -i mt7601|less
  2. MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
  3. MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
  4. MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
  5. MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)
  6. MT7601_ChipSwitchChannel: SwitchChannel#(RF=, 1T)

如果有什么异常信息的报错的话也会在这里显示出来,我们可以根据它的报错信息进一步排查,错误总是多种多样的,不可能全部列举出来,所以遇到错误不要慌,仔细分析查看,错误是会被解决的。加油。

3、验证无线网卡的工作模式

  1. [root@test ~]# iwconfig
  2. lo no wireless extensions.
  3.  
  4. eth0 no wireless extensions.
  5.  
  6. ra0 Ralink STA ESSID:"" Nickname:"MT7601STA"
  7. Mode:Ad-Hoc Frequency=2.412 GHz Cell: :DF::::D2
  8. Bit Rate= Mb/s
  9. RTS thr:off Fragment thr:off
  10. Encryption key:off
  11. Link Quality=/ Signal level: dBm Noise level: dBm
  12. Rx invalid nwid: Rx invalid crypt: Rx invalid frag:
  13. Tx excessive retries: Invalid misc: Missed beacon:

4、更改无线网卡的工作模式为master(即ap)模式(已经是ap模式的跳过)

  1. [root@test ~]# iwconfig ra0 mode master
  2.  
  3. Error for wireless request "Set Mode" (8B06) :
  4.  
  5. SET failed on device ra0 ; Invalid argument.

到这里如果是这样,就停手吧,不要往下面走了。你的网卡不支持ap模式。(但是如果你的网卡本身默认就是ap模式除外,我也遇到了网卡本身就是ap模式的,但是用这个命令还是报同样的错误,但是不影响使用。)

5、安装hostapd和dhcp服务搭建热点

hostapd 是一个用户态用于AP和认证服务器的守护进程。

它实现了IEEE 802.11相关的接入管理,IEEE 802.1X/WPA/WPA2/EAP 认证, RADIUS客户端,EAP服务器和RADIUS 认证服务器。Linux下支持的驱动有:Host AP,madwifi,基于mac80211的驱动。

dhcp服务为连接到该热点的主机分配IP地址

  1. [root@localhost ~]# yum install epel-release -y
  2. [root@localhost ~]# yum install hostapd dhcp

初始化hostapd环境(执行脚本即可)

  1. [root@test ~]# cat hostap-init.sh
  2. #!/bin/bash
  3. # author : chai
  4. # date : //
  5. # desc : Initialize the hostap runtime environment
  6.  
  7. # source environment variable
  8. export path=$PATH
  9.  
  10. # check tools
  11. num=`rpm -aq|grep -E "net-tools|rfkill|NetworkManager|iptables"|wc -l`
  12. [ $num -lt ]
  13.  
  14. # Configure kernel forwarding
  15. echo > /proc/sys/net/ipv4/ip_forward
  16.  
  17. # Add firewall rules (ra0 change Your own network card)
  18. iptables -t nat -A POSTROUTING -o ra0 -j MASQUERADE
  19.  
  20. # Start the wireless card
  21. ifconfig ra0 192.168.0.1 netmask 255.255.255.0
  22.  
  23. # Unlock wireless device, rfkill list check result
  24. rfkill unblock wlan
  25. sleep 6s

配置hostapd

  1. [root@localhost ~]# mv /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.bak
  2. [root@localhost ~]# vim /etc/hostapd/hostapd.conf
  3. interface=wlp2s0 #换成你的无线网卡名字,可以用iwconfig查看
  4. driver=nl80211 #驱动程序
  5. ssid=test-network #WiFi名称
  6. hw_mode=g #
  7. channel= #使用的无线信道
  8. macaddr_acl=
  9. auth_algs=
  10. wpa=
  11. wpa_passphrase= #认证密码
  12. wpa_key_mgmt=WPA-PSK #加密方式
  13. wpa_pairwise=TKIP CCMP
  14. rsn_pairwise=TKIP CCMP
  15. 启动
  16. [root@localhost ~]# systemctl enable hostapd
  17. [root@localhost ~]# systemctl start hostapd
  18. 添加一条iptables规则(目的是使连接到该热点的主机能上网)
  19. [root@localhost ~]# iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
  20. enp3s0 改为你的用来连接互联网的网卡名(通常是eth0或者ens33

配置dhcp

  1. [root@localhost ~]# vim /etc/dhcp/dhcpd.conf
  2. subnet 192.168.0.0 netmask 255.255.255.0 #网段/掩码
  3. {
  4. range 192.168.0.2 192.168.0.20; #可分配的地址范围
  5. option routers 192.168.0.1; #路由/网关
  6. option domain-name-servers 192.168.0.1,223.5.5.5,8.8.8.8; #DNS
  7. }
  8. #网段可以自定义
  9. 启动dhcp
  10. [root@localhost ~]# systemctl enable dhcp
  11. [root@localhost ~]# systemctl start dhcp

没有错误的话到此无线热点就创建完成了,现在你可以使用你的手机连接这个热点了。

如果遇到解决不了的错误,可以下面留言,我们一起看看。

6、结尾

虽然成功的达到了目的,但是还是存在很多疑问,比如网卡的工作模式原理,为什么使用ap模式而不是使用其他模式呢?iptables规则,usb网卡驱动的编译等问题,我在查找整理,后面会详细的上传上来。

任何问题,我们可以一起看看

centos7环境开启WIFI热点的更多相关文章

  1. 怎样在Win7系统建立并开启Wifi热点

    怎样在Win7系统建立并开启Wifi热点 步骤/方法: 1.首先,确定你的笔记本已经开启了无线. 点击电脑左下角的开始,在搜索程序和文件栏输入cmd. 2.在上图中找到Windows命令处理程序cmd ...

  2. Linux/Ubuntu 16.04 使用校园网客户端Dr.com DrClient 有线连网,同时开启WiFi热点

    前面写过Ubuntu 16.04 使用校园网客户端 DrClient 无线上网,在这篇文章中将要介绍下,在Ubuntu 16.04上如何使用校园网客户端实现有线登录,这个问题也让博主困惑了很久,但是问 ...

  3. linux 开启wifi热点

    1,在网络连接管理中创建一个wifi连接,点击 Add,然后选Wi-Fi 2,设置wifi热点名字.wifi接连名字 3,设置 Mode 选 Ad-hoc,其它默认. 4,在 Wi-Fi Securi ...

  4. 超简单让ubuntu开启wifi热点(亲测16.04与14.04可用)

    今天教大家一个简单方法让ubuntu发散wifi热点给手机或者其他设备使用. 首先,创建一个普通的热点,点击右上角的网络,然后选择下拉菜单中的编辑连接,然后出现以下界面. 然后点击增加,连接类型选接W ...

  5. 【原】命令行方式开启WIFI热点

    由于Wifi比较慢,可以使用笔记本(带无线网卡的电脑也可以) 开启无线网络,供手机使用.方法如下:   netsh wlan set hostednetwork mode=allow ssid=qa ...

  6. WIN7开启wifi热点

    1.首先,先确定自己的笔记本网卡支持“启动承载网络”的功能,使用管理员运行cmd命令.启用管理员运行CMD的方法Windows-所有程序-附件-运行(右键,以管理员身份运行)在弹出的CMD窗口里面敲击 ...

  7. [linux]linux下开启wifi热点

    网上说用 ap-hotspot可以,但是我测试的时候总是在start的时候卡主,试了以前的版本也是,最后找到了下面的方法. 第一步:安装 plasma-nm 可以使用下面的命令 sudo apt-ge ...

  8. win7系统中开启wifi热点

    1.进入cmd下 2.输入命令创建一个热点,名称为testwifi,密码为12345678 netsh wlan 3.进入网络和共享中心->更改适配器设置,看到多出一个“无线网络连接2”,选中本 ...

  9. 办公开发环境(外接显示屏,wifi热点)

    笔记本电脑怎样外接显示器 https://jingyan.baidu.com/article/3c48dd34495247e10ae35879.html?qq-pf-to=pcqq.c2c 怎样在Wi ...

随机推荐

  1. 记一次Django报错Reverse for 'indextwo' with no arguments not found. 1 pattern(s) tried: ['$index/$']

    启动python manage.py runserver 打开127.0.0.1:8000,报错信息如下: Reverse for 'indextwo' with no arguments not f ...

  2. js判断手机系统(Android或IOS),跳转相应下载地址

    <script type="text/javascript"> $(document).ready(function(e) { var u = navigator.us ...

  3. Django 载入静态文件地址

    1,Django框架中有专门存放静态文件的目录. 项目中的CSS.图片.js都是静态文件 配置静态文件 在settings 文件中定义静态内容 2,这些静态文件,他们统一存放在项目目录,templat ...

  4. 页面仔初窥"前端工程化"

    今天看了几篇前端界的一位大牛--张云龙的文章,其中一篇在自己的理解范围内看得懂一些,有所收获,说的是前端工程化的事,看完算是对前端工程形成了一个模糊的概念. 现在我所接触到的前端开发,还是张云龙大神所 ...

  5. 【轻松前端之旅】HTML的块元素、行内元素和空元素

    块(block)元素 显示成一块,前后有换行.块元素常用于web页面的主要构造模块.例如:<div>,<p>,<h1>~<h6>,<blockqu ...

  6. javascript 取整,取余数 math方法

    1.丢弃小数部分,保留整数部分 parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. rad ...

  7. 22.LinkedList

    LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现.基于链表实现的方式使得Linked ...

  8. Android-Java-子类实例化过程(内存图)

    案例一: package android.java.oop15; // 描述Person对象 class Person { // 构造方法就算不写 默认有一个隐式的无参构造方法:public Pers ...

  9. bash编程-条件测试

    Shell脚本中经常需要判断某情况或者数据是否满足,需要由测试机制来实现. 测试方式 echo $?查看命令执行状态返回值 bash脚本中可以自定义返回值exit n(n为自己指定的状态码),shel ...

  10. 【转】vim 命令

    Vim命令合集 建议直接看原文:(排版有些乱) 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接 ...