一、前言
自IEEE於2019年年中正式釋出新的無線接入標準802.11ax——Wi-Fi6以來,適用於膝上型電腦的M.2無線網絡卡和桌上型電腦的PCI-e無線網絡卡便大行其道,協同Wi-Fi6無線路由器、Wi-Fi6手機智慧終端蓬勃發展,助力Wi-Fi6生態煥新。
翼聯EDUP AX1800無線網絡卡選用瑞昱晶片,致力提供高速而便捷的雙頻無線網路方案。AX1800無線網絡卡協商速率為1800Mbps,分別為2.4GHz頻段下的574Mbps和5.8GHz頻段下的1201Mbps。AX1800無線網絡卡率先採用USB結構設計,可為主流系統下的新老臺式機及膝上型電腦提供即插即用的Wi-Fi6網路體驗,該產品具體型號為:EP-AX1696S。筆者作為一名Gnu/Linux的愛好者,有幸拿到了該產品的測試裝置。經過在Debian Gnu/Linux下的測試,總結如下:該產品可以很好的相容Linux作業系統,當普通USB無線網絡卡使用,同時也可以結合Linux下的hostapd軟體元件將該產品作為WI-FI6無線熱點來使用,並且可以支援WI-FI6的80M基帶頻寬在雙MCS下的1201mbps速率模式,將該網絡卡變成臨時無線接入點,方便使用者組建臨時WIFI網路併為其他裝置提供80211AX模式的高頻寬接入需求。
二、產品簡介
該產品拿到手以後,包裝樸實而精美,如圖:
開啟取出後,大小類似傳統隨身碟,背面有明顯的WI-FI6產品標記:
同時可以看到,該裝置USB介面採用了USB3的顏色標記,USB詳細圖片如下:
裝置正面天線可以摺疊和展開,非常人性化設計,如圖為天線收起及展開狀態:
同時隨產品附帶有驅動程式光碟一張。
三、測試系統環境
OS: Debian Gnu/Linux 11.1
Kernel: Linux localhost.localdomain 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux
gcc: gcc (Debian 10.2.1-6) 10.2.1 20210110
make: GNU Make 4.3
四、網絡卡驅動安裝過程
4.1、系統元件安裝
因為該網絡卡型號比較新,插入測試主機的USB介面後並不能直接使用,系統WIFI設定中並看不到該網絡卡,但透過執行命令lsusb系統有如下返回資訊:
Bus 003 Device 002: ID 0bda:885c Realtek Semiconductor Corp. 802.11ax WLAN Adapter
說明核心已經正確地識別出該裝置。不過缺少驅動程式來使裝置正常工作。經過檢視該裝置附帶的驅動程式光碟驚奇的發現該裝置竟然包含了Linux系統驅動檔案。為了能正確的編譯安裝該驅動程式,使用者需要在Debian Gnu/Linux下安裝一下軟體元件,透過執行以下命令即可完成系統需要的編譯環境元件安裝:
[root@localhost ~]# apt-get install linux-headers-5.10.0-9-amd64 linux-support-5.10.0-9 linux-perf-5.10 linux-config-5.10 linux-compiler-gcc-10-x86 gcc-10 make libssl-dev libnl-3-200 libnl-3-dev libnl-genl-3-200 libnl-genl-3-dev nftables haveged
以上元件包含了手工編譯hostapd軟體AP元件需要的依賴系統環境元件。筆者在這裡一併進行描述,避免讀者朋友在下一階段安裝hostapd編譯過程中出現錯誤提示,耽誤不必要的時間。之所以需要安裝以上元件,是因為Linux系統在透過原始碼編譯驅動程式模組的過程中需要用到Linux核心標頭檔案中的原始碼以及其它支援庫檔案原始碼來生成最後的核心驅動“.ko”驅動模組檔案使無線網絡卡正常進行工作。
4.2、EP-AX1696S驅動程式安裝
如果系統元件安裝完成,筆者認為這一步相對較為簡單,首先是將光碟上的Linux驅動目錄複製到Linux主機目錄中,為了演示方便,筆者將該資料夾複製在筆者自己測試系統的使用者目錄中,筆者建議需要避免將驅動程式資料夾複製到絕對路徑中存在中文或者特殊檔名的目錄中,否則可能會遇到意想不到的編譯錯誤或者問題,排查起來也異常複雜麻煩,耽誤時間。將驅動程式複製到系統後可以直接找到RTL8832AU_WiFi_linux_v1.15.0.1-0-g/WIFI/目錄,該目錄下RTL8852AU_WiFi_linux_v1.15.0.1-0-g487ee886.20210714.tar.gz檔案既是驅動程式壓縮包,使用者需要使用命令
tar -zxvf RTL8852AU_WiFi_linux_v1.15.0.1-0-g487ee886.20210714.tar.gz
即可在當前目錄下生成驅動程式安裝目錄RTL8852AU_WiFi_linux_v1.15.0.1-0-g487ee886.20210714,進入該目錄可以看到install.sh檔案,該檔案既為驅動程式自動編譯安裝指令碼檔案,使用者可以執行命令
chmod +x install.sh && ./install.sh
直接進行裝置驅動程式的自動化安裝,最後系統回顯如下資訊:
make[1]: 離開目錄“/usr/src/linux-headers-5.10.0-9-amd64”
#cp Module.symvers .symvers.8852au
##################################################
Compile make driver ok!!
##################################################
Authentication requested [root] for install driver:
install -p -m 644 8852au.ko /lib/modules/5.10.0-9-amd64/kernel/drivers/net/wireless/
/sbin/depmod -a 5.10.0-9-amd64
Authentication requested [root] for remove driver:
Authentication requested [root] for insert driver:
##################################################
The Setup Script is completed !
##################################################
恭喜你!!!系統已經成功編譯生成了該無線網絡卡的驅動程式,並將它複製到了系統檔案/lib/modules/5.10.0-9-amd64/kernel/drivers/net/wireless/中。使用者也可以執行命令lsmod | grep 8852進一步確認驅動模組是否已經正常載入,如果系統出現如下回顯資訊:
8852au 14417920 0
cfg80211 970752 4 iwldvm,8852au,iwlwifi,mac80211
usbcore 323584 9 xhci_hcd,ehci_pci,8852au,usbhid,usb_storage,uvcvideo,ehci_hcd,btusb,xhci_pci
則說明Linux核心已經載入了EP-AX1696S無線網絡卡驅動模組,此時使用者插入該網絡卡系統將為該網絡卡建立網路裝置名並準備連網,如以下圖示,系統WIFI設定中已經可以看到網絡卡名為Realtek802.11ax的無線裝置。
至此,使用者就可以透過該無線網絡卡裝置正常接入網路,接入AP可以從WI-FI6無線熱點一直向下相容,具有很好的相容和適配性。當然了,最重要的還是在接入點為WI-FI6無線AP時,高頻寬帶來的極速體驗,如下圖就是筆者使用該網絡卡連線華為-airPRO2時的頻寬顯示:
五、hostapd無線AP建立過程
為了能讓Linux系統使用hostapd元件提供軟體AP模式的接入訪問,同時支援802.11AX無線協議模式,我們需要先進行基礎hostapd元件的安裝,這樣系統會自動建立該軟體元件的基礎配置檔案和systemd守護程序配置檔案,然後我們透過手工編譯方式編譯最新的hostapd2.9原始碼並開啟802.11AX無線支援模式。透過一下配置即可完成相關hostapd軟體元件的安裝和配置
5.1、安裝hostapd軟體元件
使用者在Linux系統中只需要執行命令
apt-get install hostapd
系統會自動進行hostapd軟體元件及相關依賴關係軟體元件的安裝,同時會在系統中建立預設配置檔案以及systemd守護程序指令碼,該指令碼位於/lib/systemd/system/目錄中。等待手工編譯安裝完成hostapd2.9後用戶需要對該檔案進行修改,才能開啟802.11AX無線協議支援模式。
5.2、手工編譯安裝hostapd軟體元件
使用者可以前往hostapd網站,找到對應的下載檔案直接進行下載之後進行解壓,系統會在當前目錄生成hostapd-2.9目錄,編譯前使用者需要進入hostapd目錄中並執行如下命令cp defconfig .config建立編譯檔案,並使用命令vi .config進行配置檔案編譯,依次將“CONFIG_LIBNL32=y” “CONFIG_IEEE80211N=y” “CONFIG_IEEE80211AC=y” "CONFIG_IEEE80211AX=y"選項前的“#”註釋刪除,以使hostapd軟體元件支援802.11N到802.11AX無線協議。之後使用者在當前目錄下執行命令make && make install系統將開始編譯並在隨後將編譯成功的軟體元件“hostad” "hostapd_cli"自動複製到/usr/local/bin目錄中,使用者可以透過執行/usr/local/bin/hostapd -v命令,如果系統回顯如下資訊
hostapd v2.9
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2019, Jouni Malinen <[email protected]> and contributors
說明hostapd2.9手工編譯安裝正常,後續可以配置hostapd配置檔案啟用hostapd來完成無線熱點建立。
5.3、配置hostapd
要啟用hostapd服務,使用者可以直接編輯“/etc/hostapd/hostapd.conf”檔案,並確保配置檔案中包含如下行:
interface=wlan1
ssid=MyHotApada
driver=nl80211
country_code=US
ieee80211d=1
ieee80211h=1
ieee80211n=1
ieee80211ac=1
hw_mode=a
channel=36
wmm_enabled=1
ht_capab=[HT40+]
vht_capab=[SHORT-GI-80][HTC-VHT][TX-STBC-2BY1][RXLDPC][MAX-MPDU-7991][MAX-A-MPDU-LEN-EXP2]
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
ieee80211ax=1
he_su_beamformer=1
he_su_beamformee=1
he_mu_beamformer=1
he_bss_color=1
he_default_pe_duration=8
he_twt_required=1
he_rts_threshold=2
he_oper_chwidth=1
he_oper_centr_freq_seg0_idx=42
wpa=2
wpa_passphrase=test123456789
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=1
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
上面列出的配置基本上是必須的,其中:
ssid:別人所看到的我們這個無線接入點的名稱;
hw_mode:指定802.11協議,包括 a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g,因為802.11AC實際是使用的5G頻率,所以需要將此項選擇為 ‘a’;
channel、ieee80211d=1、ieee80211h=1、 country_code=US:設定無線頻道, 由於5G頻率在各國分配使用上的預先定義,因此我們在自建802.11AX無線AP時,基本只能按照如上方法設定,唯一可以調整的是channel,該引數在實際測試中可以使用36、42、44、149、151、155等值。其實也就是無線通道號。
interface:接入點裝置名稱,如果該裝置稱為wlan1,填寫wlan1即可。
driver:設定無線驅動,我這裡是nl80211。
macaddr_acl:可選,指定MAC地址過濾規則,0表示除非在禁止列表否則允許,1表示除非在允許列表否則禁止,2表示使用外部RADIUS伺服器。
wmm_enabled=1:啟用VMM
ht_capab=[HT40+]:通道能力設定,在HT40+模式下可以使用36、44、42、52等通道,使用者可以檢視具體的配置文件進行更細緻的設定
vht_oper_chwidth=1:設定網絡卡頻率使用模式為VHT,也就是802.11AC模式
vht_oper_centr_freq_seg0_idx=42:設定vht中心頻率
he_oper_chwidth=1:設定設定網絡卡頻率使用模式為VHT,也就是802.11AX模式
he開頭的其它引數:均為802.11AX功能相關引數設定
wpa:指定WPA型別,這是一個位域值(bit fields),bit 0表示啟用WPA,bit 1表示啟用WPA2。在我的配置中,置成2 可以正常連線;
wpa_passphrase:WPA/WPA2加密需要指定金鑰,這個選項就是配置WPA/WPA2的金鑰。注意wpa_passphrase要求8~63個字元。另外還可以透過配置wpa_psk來制定金鑰,不過要設定一個256位的16進位制金鑰,不適合我們的需求;
wpa_pairwise/rsn_pairwise:如果啟用了WPA,需要指定wpa_pairwise;如果啟用了WPA2,需要指定rsn_pairwise,或者採用wpa_pairwise的設定。都可以設定成TKIP、CCMP或者兩者都有,具體含義我也沒仔細弄清楚。以上配置hostapd主引數檔案結束後,使用者可以使用命令“vi /etc/default/crda”編輯該檔案,並將“REGDOMAIN”的值設定為“US”,這樣使用者在建立無線AP時就可以方便的將“channel”的值設定為36、40、44、48、149、151、155、161等不同的無線通道,避免建立多個AP時的通道衝突。該配置檔案如果使用“#”號註釋掉所有 “he”開頭的引數行,啟用hostapd無線AP後,EP-AX1696S無線網絡卡將工作在802.11AC的867mbps速率模式下,可以很好的向下相容;開啟這些引數後,網絡卡將工作在802.11AX的1201mbps速率模式下,1201mbps工作狀態截圖如下:
5.4、systemd啟動指令碼修改
為了能實現透過systemd指令碼自動建立無線AP功能,我們可以修改“/lib/systemd/system/hostapd.service”來實現該功能,修改後的hostapd.service檔案內容如下:
[Unit]
Description=Advanced IEEE 802.11 AP and IEEE 802.1X/WPA/WPA2/EAP Authenticator
After=network.target
[Service]
Type=forking
PIDFile=/run/hostapd.pid
Restart=on-failure
RestartSec=2
ExecStartPre=/usr/bin/nmcli device set wlan1 managed no
ExecStartPre=/usr/bin/nmcli device set wlan1 autoconnect no
ExecStartPre=/usr/sbin/rfkill unblock all
ExecStartPre=/sbin/ip addr add 192.168.10.1/24 dev wlan1
Environment=DAEMON_CONF=/etc/hostapd/hostapd.conf
EnvironmentFile=-/etc/default/hostapd
ExecStart=/usr/local/bin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS ${DAEMON_CONF}
ExecStopPost=/sbin/ip addr del 192.168.10.1/24 dev wlan1
ExecStopPost=/usr/bin/nmcli device set wlan1 managed true
[Install]
WantedBy=multi-user.target
透過以上指令碼,我們可以在hostapd服務元件啟動前將網絡卡設定為非NetworkManager服務託管裝置,並在該裝置上自動繫結需要的IP地址。在hostapd服務元件停止後,清除掉IP地址並將網絡卡重新託管給NetworkManager服務,從而恢復成普通網絡卡進行聯網設定。該配置檔案修改後,使用者需要執行命令“systemctl daemon-reload” 重新載入 systemd 守護程序的配置。之後就可以透過命令“systemctl start hostapd.service”啟動無線AP服務,並透過客戶端連線進行測試。如果能夠正常連上AP,那說明配置成功。使用者就可以通過後面的nftatbles防火牆配置設定進行AP代理上網了。
5.5、nftables配置
使用命令“vi /etc/nftables.conf”編輯防火牆配置檔案,內容如下:
#!/usr/sbin/nft -f
flush ruleset
table ip filter {
chain INPUT {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related counter accept
#### icmp type echo-request ct state new accept
udp dport { 53,67,68 } ct state new limit rate 1/second burst 1 packets accept
ip saddr 192.168.10.0/24 tcp dport 53 ct state new limit rate 1/second burst 1 packets accept
counter drop
}
chain FORWARD {
type filter hook forward priority 0; policy accept;
}
chain OUTPUT {
type filter hook output priority 0; policy accept;
}
}
table ip6 filter {
chain INPUT {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related counter accept
}
chain FORWARD {
type filter hook forward priority 0; policy accept;
}
chain OUTPUT {
type filter hook output priority 0; policy accept;
}
}
table bridge filter {
chain INPUT {
type filter hook input priority -200; policy accept;
}
chain FORWARD {
type filter hook forward priority -200; policy accept;
}
chain OUTPUT {
type filter hook output priority -200; policy accept;
}
}
table ip nat {
chain PREROUTING {
type nat hook prerouting priority -100; policy accept;
}
chain INPUT {
type nat hook input priority 100; policy accept;
}
chain POSTROUTING {
type nat hook postrouting priority 100; policy accept;
oifname "eth0" ip saddr 192.168.10.0/24 counter masquerade
}
chain OUTPUT {
type nat hook output priority -100; policy accept;
}
}
其中“oifname ‘eth0’ ip saddr 192.168.10.0/24 counter masquerade”和“ip saddr 192.168.10.0/24 tcp dport 53 ct state new limit rate 1/second burst 1 packets accept”為AP流量NAT規則,使用者需要針對自己的出口網路介面和客戶端IP地址進行自定義修改,本例中網路上行出口為“eth0”,客戶端IP地址範圍為“192.168.10.0/24”。之後使用者需要使用命令“vi /etc/sysctl.conf”,新增“net.ipv4.ip_forward=1”開啟核心包轉發功能,同時使用命令“systemctl enable nftables.service”啟用防火牆。當讓有些使用者可能會使用iptables作為資料轉發NAT軟體元件,相關配置使用者可自行查閱相關資料完成資料NAT轉發配置。
到這裡使用者設定無線AP的主要步驟就設定完成了,當然為了給接入無線AP的客戶端自動分配IP地址和DNS伺服器,使用者可以使用Linux下常用的dnsmasq軟體元件或者dhcpd等其它軟體元件設定相應的DHCP服務來為接入裝置提供動態地址分配服務,網上相關文章非常普及,筆者在這裡就不再贅述了,廣大讀者可以自行進行相關資料的查詢。完成後筆者使用手機連線自己啟用的無線AP進行了測試,從圖中可以看到連線熱點頻寬已經提高到1201mbps,同時筆者進行了網速測試,因為運營商提供的是光貓接入,下載速率已經可以到371mbps/s,下載速率可以到44.5mbps/s,基本達到了運營商宣稱的最高速率了。如圖:
六、總結
EP-AX1696S作為全球首批Wi-Fi6終端無線網絡卡裝置,在Debian Gnu/Linux中既能很好的作為無線網絡卡透過WI-FI6無線AP接入上網,同時又能很好的結合hostapd軟體元件快速的將該網絡卡轉換為無線AP,供其它終端裝置接入網路使用,更方便了使用者出差或者移動辦公時的使用者側各種終端裝置接入,便於使用者快速解決網路接入問題。因此該無線網絡卡基本上算是可以工作在windows及Linux下,具有很好的通用性和相容性裝置。
(本文由翼聯EDUP合作達人狂奔的蝸牛評測供稿,翼聯EDUP享有本文釋出之獨家授權,著作權歸屬狂奔的蝸牛。)