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/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的热点,恭喜成功。


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

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐