【驱动攻略】RTL8812AU在CentOS 7下的安装及hostap软路由的配置

    xiaoxiao2022-07-09  223


    RTL8812AU是一片挺常见的无线网卡芯片,尽管Realtek官方有为它提供Linux驱动,但可惜的是内核不能高于3.0,像CentOS 7.6这样的系统,默认内核是3.1的,没法编译。尽管无法使用,但是这个驱动包还是有用的,因为后面会谈到的wpa_supplicant和hostap都会用到它,无论如何,先下载下来备用吧,地址:https://support.dlink.com/ProductInfo.aspx?m=DWA-171

    有一个叫做gnab的国外大佬做了一个可以用于3.1内核的改版驱动, 向他表示感谢!github地址: https://github.com/gnab/rtl8812au


    一. 安装驱动: 如果你有安装git的话可以用git命令克隆下载,如果没装的话用wget下载也一样,两种获取方式没有本质区别。 克隆下载:

    git clone git://github.com/gnab/rtl8812au.git

    直接下载:

    wget https://github.com/gnab/rtl8812au/archive/master.zip

    如果直接下载的,还要用unzip解压缩:

    unzip -x master.zip

    然后输入命令:

    cd rtl* make (编译) insmod 8812au.ko (向内核加载模块) cp 8812au.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless depmod

    安装完后最好reboot一下,如果在编译过程中出现问题,一般来说都是依赖没装好,尝试用以下命令解决:

    yum update (更新yum软件仓库) yum install gcc (安装gcc)

    至此驱动安装完毕。


    二. 配置WIFI上网 安装完成后,你会发现这个驱动还是有点不对劲的,主要问题有以下3个:

    1. 不支持iw命令,例如输入iw dev会显示“nl80211 not found.” 2. 设备名看起来像是一块有线网卡,一般无线网卡都是wl(Wireless)开头的,它是en(Ethernet) 3. rfkill list显示为空

    好在这些都不打紧,并不影响使用。

    然后,就可以用ip addr获取网卡设备名了:

    [root@localhost rtl8812au-master]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1/128 scope host        valid_lft forever preferred_lft forever 2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000     link/ether bc:ee:7b:88:eb:c3 brd ff:ff:ff:ff:ff:ff 3: enp0s18f2u2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000     link/ether 08:10:7a:22:21:4a brd ff:ff:ff:ff:ff:ff     inet 192.168.3.1/24 scope global enp0s18f2u2        valid_lft forever preferred_lft forever

    设备enp0s18f2u2就是它,正如我说的那样,这名字看上去长得有点像有线网卡。

    4. 设置WIFI热点: 首先如果还没安装wpa_supplicant的话,请先运行:

    yum install wpa_supplicant

    然后修改配置文件:

    vim /etc/wpa_supplicant.conf

    ctrl_interface=/var/run/wpa_supplicant/ update_config=1 device_name=RTL8192CU manufacturer=Realtek model_name=RTW_STA model_number=WLAN_CU serial_number=12345 device_type=1-0050F204-1 os_version=01020300 config_methods=virtual_display virtual_push_button keypad

    这个配置文件是从官网下载的驱动程序压缩包里找到的,尽管官方驱动不能用,但是wpa_supplicant的配置文件还用得上(且必须),以上内容请务必按照原样复制地粘贴到你的设置文件里去,不需要做任何修改。我只截取了最重要的部分,注释都去掉了,如果感兴趣可以去看看官方文档原文,非常详尽,这两个文档分别位于官方驱动包里:配置文件:\Linux\wpa_supplicant_hostapd\wpa_0_8.conf PDF说明:\Linux\document\wpa_cli_with_wpa_supplicant.pdf

    现在,我们用wpa_supplicant启动这个配置文件:

    wpa_supplicant -D wext -i enp0s29u1u3 -c /etc/wpa_supplicant.conf -B 

    Successfully initialized wpa_supplicant rfkill: Cannot get wiphy information ioctl[SIOCSIWAP]: Operation not permitted

    似乎有一点报错,但实际上对使用并没什么影响。

    接在开始扫描热点:

    wpa_cli scan

    回传扫描结果:

    wpa_cli scan_results

    连接到一个热点:

    wpa_cli remove_network 0  wpa_cli ap_scan 1  wpa_cli add_network  wpa_cli set_network 0 ssid '"SSID"'  wpa_cli set_network 0 key_mgmt WPA-PSK  wpa_cli set_network 0 psk '"password"'  wpa_cli select_network 0 

    为热点绑定一个IP:

    dhclient enp0s29u1u3

    如果成功从路由器分配到一个IP,说明设置成功,可以用 ip addr 查看一下。

    三、配置hostap软路由 1. 正版的hostap是没办法在RTL8812AU这块网卡下工作的,所以需要这个特别版Hostap,这个程序可以在官方驱动包里找到,位置是:\Linux\wpa_supplicant_hostapd\wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz 2.  找到后把它复制到当前目录,如果之前安装过hostapd,可以使用yum remove hostapd命令,把原版的先卸载掉。 3.  首先是解压缩:

    tar -xzvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd

    4. 然后是编译:

    make

    5.  修改配置文件:

    vim rtl_hostapd.conf

    interface=enp0s29u1u3 ctrl_interface=/var/run/hostapdssid=CentOS_Air channel=6 wpa=2wpa_passphrase=87654321#bridge=br0 eap_server=1 wps_state=2uuid=12345678-9abc-def0-1234-56789abcdef0 device_name=RTL8192CU manufacturer=Realtek model_name=RTW_SOFTAP model_number=WLAN_CU serial_number=12345 device_type=6-0050F204-1 os_version=01020300 config_methods=label display push_button keypad driver=rtl871xdrv beacon_int=100 hw_mode=g ieee80211n=1 wme_enabled=1 ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+] wpa_key_mgmt=WPA-PSK wpa_pairwise=CCMP max_num_sta=8 wpa_group_rekey=86400

    上面这个配置文件中,红色部分是需要修改的:

    1. interface=无线网卡设备名 2. ssid=自定义热点名 3. wpa_passphrase=密码 4. bridge=网桥名 (如果以网桥方式连接的话,要填上网桥名,否则必须注释掉) 5. uuid=通用识别码(可以用uuidgen命令算一个出来填上去,其实这个不改也无所谓)

    这个文件也是我从官方包里精简出来的,去掉了注释,详细版本在官方驱动程序包的如下位置:配置文件:\Linux\wpa_supplicant_hostapd\rtl_hostapd_2G.conf PDF说明:\Linux\document\Quick_Start_Guide_for_SoftAP.pdf

    存盘后就可以启动这个配置文件了:

    chmod +x rtl_hostapd.conf ./hostapd rtl_hostapd.conf -B (以后台方式启动hostap)

    最后,摸出你的手机,如果发现有一个名为CentOS_Air的热点,恭喜成功。


    如果这篇攻略对你有点帮助,请点个赞?支持一下呗!

    最新回复(0)