之前玩 Raspberry PI/Cubieboard 时写过类似的合辑,这次入 X32-N2808 X86服务器后准备写一个类似的合辑,相比会更新不少内容。 对普通玩家来说,商用无线路由器的性能显然更好,但基于某些原因如想使用原生 IPv6 和透明科学上网等需求,就不得不自建热点了。

入 X32-N2808 时,卖家免费送了一个 Atheros QCWB335 无线蓝牙二合一卡,Linux 下驱动支持良好,可直接使用 hostapd 自建热点。如果是买的树莓派/cubieboard 之类的 ARM 板,则建议买一块 ralink 芯片的无线网卡,实测 RT5730 和 CF-WU770N 不错,RT5730 我买过两家,信诺真品店的做工感觉更好一点,加上运费十来块钱。

硬件都有了,这时只差软件了,善于自己动手的 Archer 早已经给我们准备好了 create_ap 这个软件包 :) 使用 packer -S create_ap haveged 安装。如果提示无 arm 架构,在编译包的 ARCH 中加入 armv6h(树莓派)或者 armv7h(Cubieboard2) create_ap 已经入 community, 无需使用 AUR 安装。装好之后会在 /usr/lib/systemd/system 下生成一个create_ap.service的文件,修改你想要的SSID名称和密码。以我的为例:

ExecStart=/usr/bin/create_ap --ieee80211n -g 192.168.18.1 -c 3 --no-dns --dhcp-dns 192.168.18.1 wlp2s0 enp1s0 geek ilovegeek
  • 其中 –ieee80211n 为启用 IEEE 802.11 n,尽可能提高网络带宽
  • -g 192.168.18.1 为无线网关地址,一般不需要改
  • -c 3 2.4G 频段下使用第三频道,WiFi 密集情况下有一定优化效果
  • –no-dns –dhcp-dns 192.168.18.1 不使用 dnsmasq 提供的 DNS 解析服务,因为我想基于 unbound 提供 DNS 解析服务,尽可能减少对热点服务的干扰,一般不需要加入
  • wlan0/wlp2s0 为服务器的无线网卡名
  • eth0/enp1s0 为共享网络的网卡名,典型的为有线接入方式,所以就是 eth0/enp1s0 喽
  • geek 就是 SSID 啦,也就是你在搜索无线信号时所看到的 AP 名称(俗称WiFi)
  • 最后的 ilovegeek 猜猜就知道是密码啦

嗯,Arch 下设置无线路由器就是这么简单!一段bash脚本把 hostapd, dhcp, 内核转发等全部搞定了!接下来说下如何对AP做进一步优化。

2.4G 频段优化的一点点补充

一般情况下其它的 AP(2.4G频段)会设置在 1/6/11 三个信道,2.4G 的 WiFi 也就这三个频道能做到完全不重叠——也就是说使用1和6两个频道的AP相互间几乎没有干扰咯,create_ap默认使用1频道,事实情况往往是无论你设置在1, 6 还是11频道,干扰都不小,那这时你为何不剑走偏锋把频道设置在3, 9等其他频道哩?虽然这些频道和1/6都有部分重叠带宽——也就是说会存在干扰,但总的干扰可能会比用1/6/11三个频道来的少。唔… 实践是检验真理的唯一标准,建议实际测试一下。

测试稳定后启用开机自启动 WiFi 服务-sudo systemctl enable create_ap 自建 AP 后下一步就可以尝试透明科学上网了,无痛使用 Google 及畅游 YouTube~