zoukankan      html  css  js  c++  java
  • centos7环境开启WIFI热点

    1、环境介绍

    [root@localhost ~]# cat /etc/redhat-release 
    CentOS Linux release 7.5.1804 (Core) 
    [root@localhost ~]# uname -r
    3.10.0-862.el7.x86_64 
    [root@localhost ~]# rpm -aq|grep -E "wireless-tools|usbutils"
    wireless-tools-29-13.el7.x86_64
    usbutils-007-5.el7.x86_64

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

    [root@test ~]# lsusb
    ...
    Bus 001 Device 002: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter

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

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

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

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

    [root@test ~]# iwconfig 
    lo        no wireless extensions.
    
    eth0      no wireless extensions.
    
    ra0       Ralink STA  ESSID:""  Nickname:"MT7601STA"
              Mode:Ad-Hoc  Frequency=2.412 GHz  Cell: 36:DF:71:76:58:D2   
              Bit Rate=15 Mb/s   
              RTS thr:off   Fragment thr:off
              Encryption key:off
              Link Quality=70/100  Signal level:0 dBm  Noise level:0 dBm
              Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
              Tx excessive retries:0  Invalid misc:0   Missed beacon:0

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

    [root@test ~]# iwconfig ra0 mode master
    
    Error for wireless request "Set Mode" (8B06) :
    
        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地址

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

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

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

    配置hostapd

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

    配置dhcp

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

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

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

    6、结尾

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

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

  • 相关阅读:
    threadlocal 变量 跟synchronized 关键字的关系
    Android媒体扫描详细解析之一(MediaScanner & MediaProvider)
    创建视图全文搜索[完整版]
    海量小文件问题综述
    内存拷贝探究
    case功能菜单选项
    linux case ${variable} in
    attack source code
    ftps加密服务器
    vim编程设置
  • 原文地址:https://www.cnblogs.com/chai-/p/10757405.html
Copyright © 2011-2022 走看看