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: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: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: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/hostapd
ssid=CentOS_Air
channel=6
wpa=2
wpa_passphrase=87654321
#bridge=br0
eap_server=1
wps_state=2
uuid=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的热点,恭喜成功。
如果这篇攻略对你有点帮助,请点个赞?支持一下呗!