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.confctrl_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 -BSuccessfully 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/hostapd4. 然后是编译:
make5. 修改配置文件:
vim rtl_hostapd.confinterface=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的热点,恭喜成功。
如果这篇攻略对你有点帮助,请点个赞?支持一下呗!
