Environment
- 路由器型号:YouHua WR1200JS
- 固件版本:OpenWrt 19.07.4 r11208-ce6496d796 / LuCI openwrt-19.07 branch git-21.054.03371-3b137b5
拓扑图+工作原理
- dnsmasq是openwrt自带的一个软件,提供dns缓存,dhcp等功能。dnsmasq会将dns查询数据包转发给chinadns。
- chinadns的上游DNS服务器有两个,一个是
国内DNS
,一个是可信DNS
(国外DNS)。- chinadns会同时向上游的DNS发送请求
- 如果
可信DNS
先返回, 则直接采用可信DNS
的结果 - 如果
国内DNS
先返回, 分两种情况: 如果返回的结果是国内IP,则采用;否则丢弃并等待采用可信DNS
的结果
3.dns-forwarder 支持DNS TCP查询, 如果ISP的UDP不稳定, 丢包严重,可以使用dns-forwarder来代替ss-tunnel
来进行DNS查询.
4.shadowsocks 用于转发数据包, 科学上网. 关于shadowsocks的科普文章可查看这里: https://www.css3er.com/p/107.html
相关的ipk软件包下载地址
ipk软件包集合, 不同的CPU架构需要使用不同的软件包, CPU架构是mipsel_24kc
的话, 可以集中从这里下载.
链接: https://pan.baidu.com/s/14QDoTLqw-SEBZvQVQeVgvA 提取码: ugsc
其它的CPU架构, 可以去GitHub主页 -> Releases下载别人已经编译好的软件包, 如果没有, 只能自己下载openWRT的SDK, 自己进行编译.
- shadowsocks-libev_3.3.5-1_mipsel_24kc.ipk
- shadowsocks-libev-server_3.3.5-1_mipsel_24kc.ipk
- ChinaDNS_1.3.3-1_mipsel_24kc.ipk
- dns-forwarder_1.2.1-2_mipsel_24kc.ipk
- luci-compat
- luci-app-shadowsocks-without-ipset_1.9.1-1_all.ipk
- luci-app-chinadns_1.6.2-1_all.ipk
- luci-app-dns-forwarder_1.6.2-1_all.ipk
链接: https://pan.baidu.com/s/14QDoTLqw-SEBZvQVQeVgvA 提取码: ugsc
openwrt-shadowsocks
GitHub: https://github.com/shadowsocks/openwrt-shadowsocks
luci-app-shadowsocks: https://github.com/shadowsocks/luci-app-shadowsocks
- shadowsocks-libev
客户端/ └── usr/ └── bin/ ├── ss-local // 提供 SOCKS 正向代理, 在透明代理工作模式下用不到这个. ├── ss-redir // 提供透明代理, 从 v2.2.0 开始支持 UDP └── ss-tunnel // 提供端口转发, 可用于 DNS 查询
- shadowsocks-libev-server
服务端/ └── usr/ └── bin/ └── ss-server // 服务端可执行文件
ChinaDNS
GitHub: https://github.com/aa65535/openwrt-chinadns
原版ChinaDNS地址, 被请喝茶后已不再维护:https://github.com/shadowsocks/ChinaDNS
luci-app-chinadns: https://github.com/aa65535/openwrt-dist-luci
更新 /etc/chinadns_chnroute.txt
1
|
|
dns-forwarder
GitHub: https://github.com/aa65535/openwrt-dns-forwarder
luci-app-dns-forwarder: https://github.com/aa65535/openwrt-dist-luci
dnsmasq
openWRT自带, 无需自行下载安装.
GitHub: https://github.com/aa65535/openwrt-dnsmasq
Install
去软件项目的GitHub主页 -> Releases下面下载编译好的ipk, 如果没有符合的自己CPU架构的包, 则需要自己下载openWRT的SDK进行编译, 具体的教程各个主页上有.
查看CPU架构的命令 opkg print-architecture
:
1 2 3 4 5 |
|
下载完成有两种方式安装
方式一(建议): 通过web使用luci安装: 路径: 系统 -> Software -> Upload Package… -> Install
方式二: 直接在线通过opkg命令来安装(注意使用方式需要提前更新好软件源, opkg update
):
1
|
|
Config
方式一, 使用luci来配置
登录luci.
- 配置ss-server
服务
->影梭
->服务器管理
, 添加自己的shadowsocks server - 配置dnsmasq
网络
->DHCP/DNS
->常规设置
->本地服务器
, 设置为127.0.0.1#5353
网络
->DHCP/DNS
->HOSTS和解析文件
, 勾选:忽略解析文件
- 配置ChinaDNS
服务
->ChinaDNS
监听端口:5353
上游服务器修改为:114.114.114.114,127.0.0.1#5300
这样国内DNS
:114.114.114.114
,可信DNS
:127.0.0.1#5353
, 勾选启用
, 保存设置 - 配置dns-forwarder
服务
->DNS转发
监听端口:5300
监听地址:0.0.0.0
上游 DNS:8.8.8.8
勾选,启用
保存 - 配置shadowsocks 透明代理 + 访问控制
服务
->影梭
->常规设置
->透明代理
主服务器
, 选择setp1中配置的ss-server, 保存.
服务
->影梭
->常规设置
->访问控制
->外网区域
被忽略IP列表
, 选择ChinaDNS路由表
, 保存设置. 注意这里的优先级: (走代理IP列表 = 强制走代理IP) > (额外被忽略IP = 被忽略IP列表) 保存并应用
所有配置, reboot openWRT
方式二, 直接编辑/etc/config目录下的文件
课外阅读: UCI System UCI system
The abbreviation UCI stands for Unified Configuration Interface and is intended to centralize the configuration of OpenWrt.
/etc/config/shadowsocks
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
/etc/config/dhcp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
/etc/config/chinadns
1 2 3 4 5 6 7 8 9 |
|
/etc/config/dns-forwarder
1 2 3 4 5 6 7 |
|
验证配置是否生效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Issues
- luci-app-shadowsocks 不支持domain的方式配置ss-server, 需要使用IP地址
Link
https://www.youtube.com/watch?v=2SPQYsMmltE&t=317s – 十年老程 openwrt shadowsocks安装配置对应的视频教程 http://snlcw.com/305.html – 上述教程对应的blog地址. https://www.youtube.com/channel/UCgo7XWK6MQBgKt0gBI6x3CA/videos – 十年老程的Youtube专栏,里面有各种科学上网的视频教程. https://openwrt.org/docs/guide-user/base-system/dhcp_configuration