整体拓扑 硬件背景:公司的无线网络采用 WPA2 Enterprise域认证,非Windows电脑没有认证客户端,但是调试设备设备需要用到Linux,但是Linux中用的网络的地方很多,为解决Linux笔记本上网问题,迫不得已才使用这种解决方案
OpenWrt硬件:友善之臂NanoPi_R2C,属于R2S更换网卡方案,性价比更高。
wiki连接:https://wiki.friendlyarm.com/wiki/index.php/NanoPi_R2C/zh
下面列举了几款比较常见的OpenWrt固件,根据个人喜好去下载刷机,刷机教程全网很多,此处不再赘述。
推荐刷机工具 https://www.balena.io/etcher/
QiuSimons 基于原生 OpenWrt 21.02 编译
GitHub:https://github.com/QiuSimons/YAOF.git
DHDAXCW(骷髅头固件) 基于lean和immortalwrt编译第三方固件
GitHub:https://github.com/DHDAXCW/NanoPi-R2C.git
klever1988 大而全老牌固件
GitHub:https://github.com/klever1988/nanopi-openwrt.git
本次采用的是DHDAXCW大佬的固件
laptop配置(服务端)rust作为一门后起之秀的编程语言,恰好最近也在学习rust,所有服务端采用了rust开发的ss-rust,然后根据自己的平台选择版本,Windows平台为:xxx.x86_64-pc-windows-gnu.zip
GitHub:https://github.com/shadowsocks/shadowsocks-rust/releases
先写一个简单配置文件,保存为config.json:
{
"server": "0.0.0.0",
"server_port": 8388,
"password": "mypassword",
"method": "aes-256-gcm",
}
执行脚本
.ssserver.exe -c .config.json -v 2021-10-19T11:02:50.005573900+08:00 INFO [26508:36568] [ssserver] shadowsocks server 1.12.0-alpha.9 build 2021-10-08T08:40:16.435366100+00:00 2021-10-19T11:02:50.012867700+08:00 INFO [26508:36568] [shadowsocks_service::server::tcprelay] shadowsocks tcp server listening on 0.0.0.0:8388, inbound address 0.0.0.0:8388OpenWrt设置
(1)首先下载两个ipk包:
https://mirrors.cloud.tencent.com/openwrt/releases/21.02.0-rc4/packages/aarch64_generic/luci/luci-app-https-dns-proxy_2021-07-29-1_all.ipk
https://mirrors.cloud.tencent.com/openwrt/releases/21.02.0-rc4/packages/aarch64_generic/packages/https-dns-proxy_2021-09-27-1_aarch64_generic.ipk
默认登录网址 192.168.2.1,用户名:root,密码:password
上传并安装
(2)配置软件
去左侧栏打开 “服务”----“DNS HTTPS Proxy” 按下图配置一下doh的服务商,国内选用阿里和腾讯的就可以,一定注意“PROXY SERVER”的配置,下图画红框的配置。
DNS overHTTPS(缩写:DoH)是一个进行安全化的域名解析方案。其意义在于以加密的HTTPS协议进行DNS解析请求,避免原始DNS协议中用户的DNS解析请求被窃听或者修改的问题(例如中间人攻击)来达到保护用户隐私的目的。Google及Mozilla基金会正在测试此协议,提高网络安全性。
(3)配置passwall
服务----passwall----节点列表----添加,如下图所示和服务端配置一致便可以
DNS配置为:不过滤
模式配置为:全局代理
(4)同步系统时间
因为DOH依赖于系统时间,所有比较将系统时间同步为一致
(5)已知缺陷
- 只能转发TCP/UDP数据,无法转发ICMP报文,例如ping功能不可用
- 每次openwrt开机后必须先同步一次浏览器时间,否则DNS功能失效



